■ はじめに
sudo に関するあれこれをメモ。
目次
【1】sudoコマンド 【2】visudoコマンド 1)sudoersファイル 2)書式 3)/etc/sudoers.dディレクトリ 【3】sudoのインストール 【4】sudoに関するあれこれ 1)sudoを行う上での設定ファイル編集 2)sudoでノーパスワードで行うには 3)特定のコマンドのみをroot権限で実行する 4)ユーザにsudo実行可能にする 5)シェルを実行
【1】sudoコマンド
* 他のユーザーとしてコマンドを実行するコマンド * sudo = Switch User DO の略
https://atmarkit.itmedia.co.jp/ait/articles/1611/28/news036.html#opt
オプション | 意味 | 備考 |
---|---|---|
-l | そのユーザーに対して許可されたコマンドを表示する | |
u ユーザー | root以外のユーザーで実行するときに指定 | |
-i | rootユーザーのデフォルトのシェルをログインシェルとして実行する | |
-s | root権限で対話式シェルを起動する | root権限が必要なコマンドを多く使う場合に、いちいちsudoする必要がなくなり便利 |
-s の詳細は、以下のサイトを参照のこと
http://d.hatena.ne.jp/horus531/20110123/1295758503
補足
tail /var/log/secure
* 実行したコマンドについて、履歴がsyslogログに残る(セキュリティ管理上のメリットがある)
【2】visudoコマンド
* sudoersファイルを編集するコマンド
コマンド例
sudo visudo # vimを指定したい場合 sudo EDITOR=vim visudo
1)sudoersファイル
* sudoできるユーザを管理している設定ファイル * /etc/sudoersファイルに存在する
2)書式
# who where = (as_whom) what # => 『ユーザ(who)が、ホスト(where)で、 # 権限(as_whom)により、コマンド(what)を実行する』こと指定 user0 ALL=(ALL) ALL user1 ALL = (root) /sbin/service httpd start user2 ALL=(ALL:ALL) NOPASSWD: ALL
3)/etc/sudoers.dディレクトリ
* このディレクトリ配下にファイルを置くと同じように管理できる
コマンド例
# 方法1:vimで修正 $ sudo EDITOR=vim visudo /etc/sudoers.d/user1 # 方法2:echo で追記 $ echo "%user1 ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/user1
【3】sudoのインストール
1)debian8
su aptitude update aptitude install sudo
【4】sudoに関するあれこれ
1)sudoを行う上での設定ファイル編集
[1] ターミナルを起動し、以下のコマンドを入力する
sudo visudo # vim で開きたい場合 sudo EDITOR=vim visudo
[2] 以下のように「[ユーザ名] ALL=(ALL) ALL」(例ユーザ名「user1」)編集する
~~~ # User privilege specification root ALL=(ALL) ALL user1 ALL=(ALL) ALL ~~~
[3] 編集した後、Ctrlキーを押しながらxキー押下
* 変更を保存するかどうか聞いてくるのでyキー押下 * 「File Name to Write: /etc/sudoers.tmp」というような表記が出るので、 Enterキーを押下し、書き込み完了
[4] sudoコマンドを付加したコマンドを入力し、エラーが出ないこと確認する
sudo ls -l
2)sudoでノーパスワードで行うには
[1] ターミナルを起動し、以下のコマンドを入力する
sudo visudo # vim で開きたい場合 sudo EDITOR=vim visudo
[2] 以下のように「[ユーザ名] ALL=(ALL) ALL NOPASSWD: ALL」(例ユーザ名「user1」)編集する
~~~ # User privilege specification user1 ALL=(ALL) ALL NOPASSWD: ALL ~~~
[3] 編集した後、Ctrlキーを押しながらxキー押下
* 変更を保存するかどうか聞いてくるのでyキー押下 * 「File Name to Write: /etc/sudoers.tmp」というような表記が出るので、 Enterキーを押下し、書き込み完了
[4] sudoコマンドを付加したコマンドを入力し、エラーが出ないこと確認する
sudo ls -l
補足 : wheelグループに属しているユーザの場合
%wheel ALL=(ALL) NOPASSWD: ALL
http://qiita.com/pugiemonn/items/baaf7243ded2e6ab94f9
3)特定のコマンドのみをroot権限で実行する
sudo -u 【ユーザー名】 【実行するコマンド】
4)ユーザにsudo実行可能にする
[1] ターミナルを起動し、以下のコマンドを入力する
su adduser [自分のユーザー] sudo
5)シェルを実行
# shコマンドを実行する
sudo sh ./sample.sh
参考文献
http://wordpress.honobono-life.info/lin-base/sudo%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%81%BF%E3%82%92root%E6%A8%A9%E9%99%90%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
http://www.atmarkit.co.jp/ait/articles/0311/05/news001.html
http://qiita.com/kmikmy/items/6a6a086f6415d9b55b96
関連記事
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
Linux ~ パーミッション / アクセス権限 ~
https://dk521123.hatenablog.com/entry/2022/07/01/000000
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000