ディレクトリを追加して権限を変更するスクリプトをルートとして実行しようとしていますが、ユーザーにパスワードを要求せずにルートとして実行する方法がわかりません。ユーザーは必ずしも sudoer であるとは限らないため、あらゆる種類の sudo -S コマンドを実行したり、パスワードを要求しないように sudoer 設定を変更したりしても、ここでは機能しません。何か案は?
2 に答える
須藤はあなたの友達です。誰でも特定の場所でスクリプトを実行できるように /etc/sudoers を構成します。
ALL ALL = NOPASSWD: /path/to/my/root/script
#!/bin/bash
#グラフィック ユーザー インターフェイス (Ubuntu GUI デスクトップ) からスーパー ユーザーとして命令を実行する Linux スクリプトの例
#これらの 2 つの命令は、特定のファイルのルート所有権を変更するこの例のためだけのものです
#まだ実行していない場合は、このスクリプトを実行可能に変更します
echo $0 | chmod ugo+x
#この特定の例のファイルを作成します
echo "some text" > ./my_file
#
#root 命令の実行。たとえば、ubuntu ログイン時に起動されるカスタム スタートアップ スクリプトに役立ちます。
#パスワードを尋ねるポップアップボックス
PASSWD=
zenity --entry --text "root パスワードを入力してください" --hide-text
#スーパーユーザーとしてアクションを実行
sudo -S su root -c "chown root ./my_file" <<< "$PASSWD"
#
#この特定の例のためだけの以下のアクション
# ファイルの所有権を表示して、ファイルがルートに属していることを確認します
printf $'\n'; ls -al ./my_file; printf $'\n'
#必要に応じて現在のユーザーの所有権を復元する
sudo -S su root -c "chown `whoami` ./my_file" <<< "$PASSWD"
#ファイルの所有権を再度表示して、現在のユーザーに属しているかどうかを確認します
printf $'\n'; ls -al ./my_file; printf $'\n'
#この端末セッションが閉じられていない場合に再度パスワードを要求するためにキャッシュをクリアする
sudo -k