私は自分の選択に応じてsudoと通常のユーザーとして実行するようにしたいと思います。彼はsudoを使用することもできますが、通常はsudoを使用しません。エラーを取り除くためにいくつかの機能を無効にする必要があります。そのため、私はsudoの実行権限を与えられたユーザーをどのように知ることができますか?私はPythonで自分のアプリケーションを構築しています。differentiate sudo <command>と<command>
-2
A
答えて
1
あなたの質問を数回読んだ後、私はあなたが求めていることを知っていると思います。実行時にあなたのpythonスクリプトがroot権限であるかどうかを知る方法を知りたがっていると思いますか?
実際に前もってチェックしたい場合は、os.geteuid()
というユーザーIDのシステムにクエリを実行し、0
を返した場合、スクリプトはrootとして実行されています。
しかし、代わりの方法は、try
ブロックでルート特権を必要とするコードを実行することです。正確に何をしようとしているかによって、これはより良い解決策になるかもしれません。また、必要な特権を持っていない場合は、予想される例外の種類を知る必要があります。これにより、書き込むのが少し難しくなりますが、十分な特権を持っていてルートではないユーザーなど、状況が変化するとコードがより柔軟になる可能性があります。例外は1つのOSから別のOSに変わるかもしれませんが、より移植性の高いコードにすることもできます。
など。
try:
function_that_needs_root()
except MyNotRootException:
print "Skipping function_that_needs_root: you are not root"
関連する問題
- 1. 私はプログラムこの後owncloud再び</p> <pre><code>$ sudo apt-get remove owncloud $ sudo apt-get purge owncloud $ sudo apt-get autoremove $ sudo rm -rf /var/wwww/owncloud </code></pre> <p>の新鮮をインストール作成したいUbuntuの16
- 2. はPropel:</p> <p>$ sudoのPHPのsymfonyの:スキーマドライバが
- 3. << heredocでSSHの中でSudoを実行する
- 4. パスワードを「エコー 『』 | sudoを-S <command>」パスワード
- 5. 使用sudoは私が</p> <pre><code>$ gem install cocoapods </code></pre> <p>を実行すると
- 6. SSH経由でプロセスを開始する方法は、実行を継続しますか? Pythonスクリプトを起動しmonitor.sh、::</p> <pre><code>sudo python ./webCheck & sudo python ./apiCheck & </code></pre> <p>とotherones、webCheck & apiCheck:
- 7. 私は、このコマンド</p> <pre><code>sudo gem install cocoapods --pre </code></pre> <p>を実行してcocoapodsをインストール1.0.0.rc.2
- 8. r cumsum differentiate reset> 0
- 9. PHP <<< OUTとOUT;
- 10. std :: operator <<とstd :: ostream :: operator <<
- 11. <thead><th>と<tbody>
- 12. alljoynデーモンは '<strong></strong> alljoyn開始sudoのサービス' を実行した後<strong>alljoyn-gwagent</strong>
- 13. 私はそれが正常に動作します</p> <pre><code>sudo apt-get install nginx-extras </code></pre> <p>とUbuntuでのnginx-エキストラをインストールしようとしていますUbuntuの
- 14. Swift <<, ><, <=< and > = <
- 15. <img>と<object>
- 16. <include>と<merge>
- 17. <MailDefinition>と<%%>プレースホルダ
- 18. < refと</ref >
- 19. パート `<`と一部 `<`
- 20. 背景画像エリアクリッカブルと </p> <p>
- 21. sudo -sとsudoの違い
- 22. TensorFlowのインストールエラー:動作<code>sudo</code>を使用してもかかわらず.../_ markerlib
- 23. インストールパンダ私が最初に</p> <pre><code>$ pip install pandas </code></pre> <p>を実行したときに、Ubuntuの12.04
- 24. MySQLの:私は<strong>MySQLの</strong>テーブルに列<strong><code>my_order</code></strong>と<strong><code>alt_order</code></strong>で<strong><code>example</code></strong>と呼ばれている列
- 25. <<<
- 26. Heredoc <<<または<<?
- 27. "UseDNS no"は "Match User xxx"と競合していますか?私は<code>sudo service ssh restart</code>経由でのsshを再起動した後、私は私の<code>sshd_config</code>に<code>UseDNS no</code>を追加
- 28. cout << coutとcout <<とcoutの違いは何ですか?
- 29. gulp- "cli"とは何ですか?</p> <pre><code>$ npm install --global gulp-cli </code></pre> <p>と</p> <pre><code>$ sudo npm install -g gulp </code></pre> <p>それは両方が第一の方法ことを除いて同じことを行うように私には見えます:
- 30. 春のアプリケーションコンテキスト - <code>main/src</code>、<code>main/resources</code>、<code>test/src</code>と<code>test/resources</code> - メインとテストフォルダ
私が正しく理解していれば、あなたはこのhttp://stackoverflow.com/questions/2806897/what-is-the-best-practices-for-checking-if-the-user-ofを探しています-a-python-script-has-root? –
最も安全で最も堅牢な方法は、操作を試してみて、失敗した可能性がある理由とその理由をユーザーに知らせることです(sudo/gksudoを呼び出すことを提案する)。最も厄介なのは、UIDが0であることを確認することです。 –
@thatotherguy:おそらくそうですが、スクリプトがrootyを何もしないように '--no-root'オプション(または同様のもの)を取ることは妥当だと思います。 – ruakh