sudo †
環境変数を引き継ぐ †
- -i: rootユーザのデフォルトshellでログインして実行する。
- -iE を同時に指定した場合にsudoのバージョンによって、エラーになる。
sudo時の補完を有効にする †
echo "complete -cf sudo" >> ~/.bashrc
sudoした時に環境変数が変わらない場合 †
sudo -u した場合、OSのバージョンによってユーザの環境変数が変わらない部分がある
sudo: sorry, you must have a tty to run sudo †
CentOS5.5で、crontab内や/etc/cron.daily/内でsudoを使おうとするとこのエラーが出る。
sudoでリダイレクトを含むコマンド †
以下の例では「sh -c "..."」を付けないと、「>」の部分が現在のユーザで実行されてしまい、ファイルが作成できない
sudo sh -c "cat > /etc/php.d/json.ini << 'EOS'
extension=json.so
EOS"
sudoを使えるように †
- /etc/sudoers や /etc/sudoers.d/ 以下のファイルが壊れるとsudoができなくなる。そのため、vimよりvisudoの方が安全。visudoは保存時に書式等を検証してくれる。
- /etc/sudoers.d/ 以下にファイルを作る方がデプロイが楽
- CentOS6.x
# userの場合
sudo visudo -f /etc/sudoers.d/user01
--
user01 ALL=(ALL) NOPASSWD: ALL
--
# groupの場合、%を付ける
sudo visudo -f /etc/sudoers.d/group01
--
%group01 ALL=(ALL) NOPASSWD: ALL
--
# ワンライナーで済ませたい場合
sudo bash -c "echo 'user01 ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/user01"; sudo chmod 440 /etc/sudoers.d/user01
- もし ディレクトリが無かったり、設定が必要ならば設定する。(CentOS6.xでは不要だった)。「#includedir」の行頭#はコメントではない
mkdir /etc/sudoers.d
chmod 750 /etc/sudoers.d
visudo /etc/sudoers
--
#includedir /etc/sudoers.d
--
- sudoユーザがrootになりたい時
sudo su -