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