ログインによってユーザーIDを見つける方法(* NIXの下のPython)
-
08-07-2019 - |
質問
「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動的ライブラリを確認します。)
所属していません StackOverflow