suとsudo
ここではシステムの変更など、システム全体に関わる処理を行う際に利用するコマンドsuとsudoについてお伝えします。
su(Substitute User)
suはユーザーを切り替えるコマンドです。
su - [任意のユーザー名]
として、該当のユーザのパスワードを入力することで、一時的に該当のユーザーとして処理を行うことができます。
特に、ユーザーを指定せずにsuコマンドを利用するとスーパーユーザー(root, 管理者)の権限を利用できるようになります。
su -
とすると、スーパーユーザーのパスワードを聞かれますのでここで入力することでスーパーユーザーの権限を取得します。スーパーユーザーの権限を取得するとプロンプト(コマンド入力箇所のすぐ左の表示)が$から#に切り替わります。
なお、suコマンドの後のハイフンはつけなくてもユーザーの切り替えはできますが、切り替えた後のユーザーのコマンドが利用できないなどの問題があります。詳細は割愛しますが、suコマンドを利用する際には -(ハイフン)をつけるよう心がけましょう。
(注)vagrantの場合
vagrantを利用する場合には、sudoを利用することでrootユーザーのパスワード不要でsuを利用することができます。
sudo su -
として管理者権限でsuを実行してください。
suの終了
suで他のユーザーに成り代わった後、元のユーザーに戻りたい時には
exit
を実行することで、元のユーザーに戻ることができます。
sudo
sudoは Super User(rootのユーザ、管理者)としてコマンドを実行するコマンドです。通常のユーザーが実行できないコマンドでもスーパーユーザーとして実行できる場合があります。設定ファイルの上書きなどを行うためにはこのコマンドを利用する必要があります。
sudo 実行したいコマンド
とすると、ログインユーザーにパスワードが設定されている場合はパスワードを入力する画面になります。パスワードが設定されていない場合は、そのまま実行されます。
su と sudo
suとsudoの違いは
- suでスーパーユーザーに成り替わるにはスーパーユーザーのパスワードが必要
- sudoではログインユーザーのパスワードが必要
ということです。
また、sudoはスーパーユーザーがあらかじめ利用を許可したコマンドのみスーパーユーザーとして実行可能です。 visudoコマンドなどを利用することでsudoで実行可能なコマンドを編集可能です。興味のある方は調べてみると良いでしょう。
スーパーユーザーの権限は強大で、システムの変更が自由にできてしまうため、スーパーユーザーのパスワードが外部に漏れることはなんとしても避けたい事態であり、そのためには内部であってもスーパーユーザーのパスワードを知っている人をできる限り制限する必要があります。 そのため、スーパーユーザーのパスワードが必要なsuではなく、スーパーユーザーの権限が必要なコマンドではsudoを利用して運用することが推奨されています。