sudoとsuコマンドの使い方
root権限での実行に用いられることが多い両者を改めて調べた
sudo
- substitute user doの略称
- 他の人誰かに代わって、コマンドを実行できる
- 特定コマンドのみroot権限で実行するときに、利用されることが多い
- sudoを実行するためには、sudoを実行できるuserとして登録されておく必要あり
- sudoを実行するためには
etc/sudoers
ファイルに、sudoを実行できるuserとして登録しておく必要あり- このファイルを編集するには
visudo
コマンドを用いる - 記載方法によって、実行できるコマンドの限定、など細かい設定が可能
- 実務では、コマンド単位で限定されるようなシーンは少ない?
- https://eng-entrance.com/linux-command-visudo
su
- substitute user
- 書式
su [option][username]
- ユーザーを切り替えるコマンド
- 引数でuserを指定しない場合、root userに切り替わる
- root権限が必要なコマンドを実行する際に使用
exit
コマンドを実行して、元のユーザーに戻るexit
コマンドを実行するまでは、元のユーザーに戻らない。root権限のままのため、注意が必要
- 指定した場合、特定のuserに切り替わる(切り替え先のuserのpasswordを知っておく必要がある)
su USERNAME
-c
- 指定したコマンドだけをroot権限で実行できる
sudo
と同じだが、suの場合にはrootユーザーのパスワードが必要(となると、ほぼ使う機会はなさそう)
-
オプションの指定の有無(-l
は-
と同様)-
なし- ユーザー変更しても環境変数やホームディレクトリを引き継ぐ場合
-
あり- 環境変数やホームディレクトリを引き継がない場合
- 変更後のユーザーの設定が適用される
- シェルを「ログインシェル」にする(ログイン時のスタートアップファイルを読み、環境変数を再設定する)
https://atmarkit.itmedia.co.jp/ait/articles/1611/24/news028.html https://codezine.jp/unixdic/w/su
-
オプションの使い所
以下の通り、一般的には -
をつけた方が良い模様
suでrootユーザーになった場合、変更前のユーザーの環境変数などがrootユーザーでの操作に悪影響を与えることがある。このため、rootとして作業する場合は、su -のように-を指定してsuを使うように説明されることがある。 https://news.mynavi.jp/techplus/article/20180207-linux_su/
参考)suとsudoの違い
sudo
は
root
のパスワードでなくてユーザーのパスワードを必要とするsudo
を許す許さないは管理者root
が決めるsudo
でやったこと/やろうとして失敗したことは、すべてログに残る
su
は substitute user ユーザーの置換ですので上記と状況が違い
root
のパスワードを知っている必要があるroot
のパスワードを知っている人がsu
することを禁じることができないsu
後はやりたいほうだい(ログが残らない)UNIX において「システムデバイスは単にファイル」なので、任意のコマンドでシステムを破壊することができます。それこそ
rm
なら当然ですしdd
でも、いやcat
でもシステムを破壊することは可能です。知識がある人が権限を得てしまえば内側からはやりたい放題、破壊工作をしたくなったらsu
でもsudo
でも止められません。そういう意味で
- 攻撃者であれ、善意のユーザであれ
root
のパスワードを教えるってのは論外- 攻撃者になりそうな人には
sudo
権限を与えない- 悪意の攻撃者でなく無能な味方が不注意でシステムを壊すことは防げない
- が、そもそもそういう無能な味方には
sudo
権限を渡さなきゃいいsudo
ならば、ログが残る
あたりの差は大きくてsudo
のほうが安全なのは確かです。
https://ja.stackoverflow.com/questions/49070/sudoにはrootのパスワードが必要ないので意味がないのでは