sudo

2012-02-13, sudo

管理者コマンドの実行

特定のユーザに権限を与える

/etc/sudoersに以下の一行を追加します(usernameは任意のユーザ名)。このファイルは直接編集せず、visudoコマンドを使用して下さい。

username ALL = NOPASSWD: ALL

パスワードの入力を求められることなく、(root権限で)任意のコマンドを実行できるようになります。rootだけでなく、任意のユーザ権限で実行したい場合は、以下のように記述します。

username ALL =(root,tomcat) NOPASSWD: ALL

crontabなどでsudoを実行したい場合は、以下の行をコメントアウトします。

#Defaults requiretty

以下のような否定形の記述も可能です。

Defaults:username !requiretty

一般ユーザで管理コマンドを実行する

sudoerの設定が済んでいれば、以下の例のようにsudoコマンドを使用して任意のコマンドを実行することが可能になります。

$ sudo shutdown -h now

任意のユーザを指定する場合は、「-u」オプションを利用します。

:$ sudo -u tomcat ls webapps

リダイレクトの代替

sudoを使用しているとリダイレクトがうまく動きません。リダイレクト先のファイルには現在のユーザ権限で書き込みに行ってしまうようです。

$ sudo echo 'foo' >> /path/to/file # 動作しない

そこで、リダイレクトの代わりにパイプとteeコマンドを利用して以下のようにしてやると上手く動くようです。

$ echo 'foo' | sudo tee -a /path/to/file

参考URL

この記事は役に立ちましたか?