uid
'nobody' の下でプロセスを実行するように設定する必要があります。os.setuid() が見つかりましたlogin
。
uid が /etc/passwd にあることがわかりましたが、/etc/passwd をスキャンするよりももっと Pythonic な方法があるかもしれません。誰か?
uid
'nobody' の下でプロセスを実行するように設定する必要があります。os.setuid() が見つかりましたlogin
。
uid が /etc/passwd にあることがわかりましたが、/etc/passwd をスキャンするよりももっと Pythonic な方法があるかもしれません。誰か?
たとえば、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 動的ライブラリを知るために読み取ります)。 )。