【Linux】sudoコマンド

■ はじめに

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