2016-07-25 3 views
-2

私は自分の選択に応じてsudoと通常のユーザーとして実行するようにしたいと思います。彼はsudoを使用することもできますが、通常はsudoを使用しません。エラーを取り除くためにいくつかの機能を無効にする必要があります。そのため、私はsudoの実行権限を与えられたユーザーをどのように知ることができますか?私はPythonで自分のアプリケーションを構築しています。differentiate sudo <command>と<command>

+2

私が正しく理解していれば、あなたはこのhttp://stackoverflow.com/questions/2806897/what-is-the-best-practices-for-checking-if-the-user-ofを探しています-a-python-script-has-root? –

+2

最も安全で最も堅牢な方法は、操作を試してみて、失敗した可能性がある理由とその理由をユーザーに知らせることです(sudo/gksudoを呼び出すことを提案する)。最も厄介なのは、UIDが0であることを確認することです。 –

+0

@thatotherguy:おそらくそうですが、スクリプトがrootyを何もしないように '--no-root'オプション(または同様のもの)を取ることは妥当だと思います。 – ruakh

答えて

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" 
関連する問題