質問

「nobody」の下で実行するようにプロセスを設定する必要があり、os.setuid()が見つかりましたが、 login がある場合に uid を見つける方法

uidは/ etc / passwdにあることがわかりましたが、/ etc / passwdをスキャンするよりもPython的な方法があるかもしれません。誰ですか?

役に立ちましたか?

解決

python stdlibの pwd モジュールをご覧になることをお勧めします。例:

import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid

/ etc / passwdを使用します(技術的にはposix C APIを使用するため、/ etc / passwdを使用しなかったが必要な機能を公開した場合はOS上で動作する可能性があります)手動で

他のヒント

/ etc / passwd を直接スキャンしないでください。

たとえば、私が管理しているLinuxシステムでは、ユーザーアカウントは / etc / passwd ではなく、LDAPサーバーにあります。

正しい方法は、 getpwent / getgrent および関連するC関数(@TFKyleの答えのように)を使用することです。これにより、各システムの正しい方法に関する情報が取得されます。 (Linux glibcでは、 /etc/nsswitch.conf を読み取り、情報を取得するためにロードするNSS動的ライブラリを確認します。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top