rootユーザーが実行する必要があるスクリプトがあります。su
スクリプト内でこれを使用してスクリプトを実行する方法を知りたいです。 - CentOS7を実行しています。
私が試したコマンド(下)が失敗しました。
su root credentials=/home/root/root.cred
その後、残りのスクリプトを続行します。残念ながら動作しません。 rootに変更すると、rootがrootパスワードを要求するため、.credファイルが含まれていました。su root
スクリプト内で実行してrootに変更する方法はありますか?
どんなアイデアがありますか?
混乱しているかもしれませんが、もっと詳しく説明したいと思います。
一般(Sudoerではない)ユーザーが実行できるスクリプトがありますが、コマンドはsudoコマンドであるため、sudoerでのみ実行できます。ルートはsudoerなので、通常のユーザーがスクリプトを実行すると、スクリプト内でルートとして実行されます。スクリプトを起動すると、su root
パスワードが必要なため進行しません。コマンドを渡しsu
、スクリプト自体を使用して残りのスクリプトを実行するためのルートパスワードを入力する方法はありますか?たぶんそれともecho
何ですか? - わかりません。だからこんな質問をすることになりました。
ご不明な点は下記までお問い合わせください:)
答え1
/etc/sudoers
パスワードを使用せずにrootとしてスクリプトを実行するには、ファイルにエントリを追加する必要があります。
username ALL = (root) NOPASSWD: /your/script's/absolute/address
username
自分のユーザー名に変更する必要があります。
ただし、権限のない(つまり、Sudoerではない)ユーザーがスクリプトを改ざんすると、パスワードなしでroot権限で必要なすべてのプログラムを実行できるため、セキュリティ対策は危険です。ファイルを読みます。 - root以外のユーザーのみ:
sudo chmod 755 your_script
これにより、sudoer以外のユーザーにスクリプトを読み取り、実行(書き込みではない)する権限を付与します。
また、将来の反転を防ぐには、次の手順を実行してください。
sudo chown root your_script
これにより、ファイルの所有権のみがルートに付与されます。
答え2
安全に「このスクリプトの残りの部分を実行するためにユーザーをrootに変換する」メカニズムはありません。ユーザーレベルでroot権限を取得するすべての方法では、プログラムの権限を向上させるために、新しい資格情報を使用してシェルまたは別のプログラムインスタンスを起動する必要があります。ユーザーがシェルにコマンドを入力する問題を解決するには、systemを使用する必要がありますsudo
。
問題に対する解決策は、別のスクリプトに昇格させたいスクリプト部分を切り離し、最初の「一般ユーザー」部分の最後でsudoで始めることです。図からわかるように パサムサビ答えは、visudo
sudoersファイルの編集と設定に使用し、必要に応じてパスワードを入力せずにrootスクリプトを実行するための一般ユーザー権限を付与することです。
重要:sudoers定義でスクリプトとパラメータ(存在する場合)へのフルパスを指定し、呼び出しスクリプトにまったく同じパスとパラメータを作成する必要があります。たとえば、/bin/mount /cdrom
sudoersファイルで権限を付与した場合、呼び出しスクリプトはsudo /bin/mount /cdrom
これを指定する必要があります。スクリプトのsudoersファイルにパラメータがない場合(たとえば/root/my_script.sh
、sudo /root/my_script.sh
パラメータなしでスクリプトを呼び出します)、また、chmod go-w
誰もがスクリプトを変更したり、誤って承認されていないコマンドを実行したりできないように、スクリプトをルートが所有してそれに適用する必要があります。