LoginSignup
1
0

More than 1 year has passed since last update.

sudo -i をパスワードなしで実行する方法

Last updated at Posted at 2022-02-06

TL;DR

sudo -i -u <実行するユーザ> <実行するコマンド>(例:sudo -i -u hoge /path/to/tool.sh)でコマンド実行する場合、sudoersのコマンド部分は<実行するユーザのログインシェル> -c <実行するコマンド>(例:/bin/bash -c /path/to/tool.sh)の形式で指定する必要があるよ、という話。

sudo -i について

sudo -iは、指定したユーザのログインシェルを評価してから、コマンドを実行するオプションで、簡単に言うと指定したユーザでログインしてコマンドを実行するため、環境変数やカレントディレクトリ等もそのユーザのログインした時の状態でコマンドが実行される。

通常、sudoersにはユーザに実行を許可するコマンドを指定するが、sudo -iで実行する場合はログインシェルでコマンド実行する形で指定する必要がある。

例えば、userA が userB で /path/to/tool.sh をパスワードなしで実行できるようにする場合、以下のように設定する。

コマンド実行
[userA ]$ sudo -i -u userB /path/to/tool.sh 
/etc/sudoersの設定例
- userA   ALL=(userB) NOPASSWD: /path/to/tool.sh
+ userA   ALL=(userB) NOPASSWD: /bin/bash -c /path/to/tool.sh
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0