ユーザーからパスワードを取得せずにrootとして「chrome」を実行するスクリプトを作成したいと思います。ユーザーは、スクリプトを開くときにパスワードを知ったり表示したりすることはできません。 (ルートパスワードをスクリプトに書き込む必要がある場合は、暗号化する必要があります。)どのように可能ですか?私は支払ったこれ一つだが役に立たない
#!/usr/bin/expect -f
"right here i need to be root"
chrome -P http://www.google.com.tr & sleep 4
答え1
sudoを使用してください。ユーザーがrootとして特定のコマンドまたはスクリプトを実行できるように、sudoersファイルにルールを追加します。
sudo の使用をユーザーに抽象化するには、通常のスクリプトを使用してユーザーの代わりに sudo を呼び出します。
しかし、気になるのは、クロムをルートとして使用することです。理由を尋ねる必要はありませんが、これがセキュリティ上危険であることを覚えておいてください。何をしても、権限のない専用ユーザーの使用を検討する必要があります。ルートの一部の機能が必要な場合は、Linux機能(man 7 capabilities
)を参照して、Chromeユーザーに必要なスーパーユーザー権限のみを付与してください。
答え2
スクリプトがグラフィックアプリケーションを起動する場合は使用しないでくださいsudo
。例をご覧ください。
グラフィックアプリケーションを起動するためにsudoを使用しないのはなぜですか?
私はroot(!)でchromeを実行することをお勧めしませんが、原則としてrootとしてログインせずにrootとしてグラフィカルアプリケーションを起動するには、で説明されているように使用する必要がありますpkexec
。この回答コマンドで必要な環境変数を設定すれば十分です。
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY ./your-script
ユーザーにパスワードを入力するように求められます。ただし、厳密には(または失敗した場合)ポリシーファイルを作成する必要があります。バラよりman pkexec
そしてもっと詳しくここ特に台本についてここ
答え3
実際、これはスクリプトで構文を明確に設定する必要があるため、非常に悪い考えです。
これはセキュリティの面では良いことではありませんが、次のようにできます。
#!/bin/bash
set pass "YOUR_PASSWORD"
sudo your_command
expect "Password"
send "$pass\r"
ところでchmod u+sはなぜダメなのでしょうか?
答え4
あなたが本当に欲しいのは、特定のユーザーでプロセスを実行するのではなく、実行プロセスのUIDを設定するようです。
おそらくあなたが望むのは、プログラムのSUIDを次のように正しく設定することです。ここで説明。
簡単な例:
プログラムがrun
ルート(ユーザーとグループ)を所有しているとします。
$ chmod u+s run
$ ls -l run
-rwsrwxr-x. 1 root root 0 Aug 5 15:08 run*
ユーザーブロックの実行ビットの「s」を参照してください。他の人が実行すると、プロセスはファイルが属するユーザー(たとえばroot)として実行されます。
メモ:Doug O'Nealが正しく指摘したように、これはLinuxの解釈言語には当てはまりません!(詳細はここ)たとえば、Cで小さなラッパープログラムを作成してコンパイルする必要があります。