1

ディレクトリを追加して権限を変更するスクリプトをルートとして実行しようとしていますが、ユーザーにパスワードを要求せずにルートとして実行する方法がわかりません。ユーザーは必ずしも sudoer であるとは限らないため、あらゆる種類の sudo -S コマンドを実行したり、パスワードを要求しないように sudoer 設定を変更したりしても、ここでは機能しません。何か案は?

4

2 に答える 2

4

須藤はあなたの友達です。誰でも特定の場所でスクリプトを実行できるように /etc/sudoers を構成します。

ALL   ALL = NOPASSWD: /path/to/my/root/script
于 2012-04-22T21:26:09.213 に答える
1
#!/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
于 2014-01-03T12:27:33.783 に答える