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のパスワードが必要ないので意味がないのでは