私の問題の簡単な紹介:このコマンドはps
システムプロセスに関する情報を印刷します。
ところで、ログインしてみます。根x
そして権限の変更ps
chmod -x /bin/ps
chmod u+x /bin/ps
ls -l /bin/ps
-rwxr--r-- 1 root root ...... ps
次に、新しいシェルスクリプトファイルを作成します。call_ps_via_root.sh
#!/bin/bash
ps
そしてx
権限の設定
chmod +x /bin/call_ps_via_root.sh
ls -l /bin/call_ps_via_root.sh
-rwxr-xr-x 1 root root ...... call_ps_via_root.sh
その後、一般ユーザーとしてログインしました。男の名前、その後、入力するとps
印刷されます。
Permission denied
私は入る/bin/call_ps_via_root.sh
まだ拒否されました。どのように機能させることができますかcall_ps_via_root.sh
?
ベストアンサー1
あなたはできません:/bin/ps
rootとしてのみ実行可能にすると、rootでのみ実行できます。権限検証をバイパスするためにスクリプトをラップすることはできません。
ユーザーIDの設定
一般ユーザーにrootとして呼び出すには、ps
set-uid権限を確認する必要があります。 ~からsetuid 記事ウィキペディアから:
setuidとsetgid(それぞれ「実行時のユーザーID設定」および「実行時のグループID設定」の略)1ユーザーが実行可能ファイルの所有者またはグループの権限で実行可能ファイルを実行できるようにするUnixアクセス権フラグ。これは、コンピュータシステムのユーザーが一時的に昇格した権限でプログラムを実行して特定のタスクを実行できるようにするためによく使用されます。指定された仮定されたユーザーIDまたはグループID権限が常に昇格されるわけではありませんが、少なくとも具体的です。
chmod のマニュアルページも参照してください。
Sudo
一般ユーザーに root でのみ実行可能ファイルを実行させるにはsudo
。これにより、どのユーザーがどのタスクを実行できるかを構成できます。