12

uid'nobody' の下でプロセスを実行するように設定する必要があります。os.setuid() が見つかりましたlogin

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

4

2 に答える 2

21

たとえば、python stdlibのpwdモジュールを確認したい場合があります。

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

/etc/passwd を使用します (技術的には posix C API を使用するため、/etc/passwd を使用せずに必要な機能を公開している場合、OS で動作する可能性があると思います) が、手動で解析するよりもクリーンです。

于 2008-11-16T22:19:52.550 に答える
5

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

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

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

于 2008-11-16T23:10:39.733 に答える