suとsudo
ここではシステムの変更など、システム全体に関わる処理を行う際に利用するコマンドsuとsudoについてお伝えします。
su
suはユーザーを切り替えるコマンドです。特に、ユーザーを指定せずにsuコマンドを利用するとスーパーユーザー(root, 管理者)の権限を利用できるようになります。
$ su
とすると、スーパーユーザーのパスワードを聞かれますのでここで入力することでスーパーユーザーの権限を取得します。スーパーユーザーの権限を取得するとプロンプトが$から#に切り替わります。
なお、cloud9では
sudo su
というコマンドでsuを実行できます。
sudo
sudoはSuper User(rootのユーザ、管理者)としてコマンドを実行するコマンドです。通常のユーザーが実行できないコマンドでもスーパーユーザーとして実行できる場合があります。設定ファイルの上書きなどを行うためにはこのコマンドを利用する必要があります。
sudo 実行したいコマンド
とすると、ログインユーザーにパスワードが設定されている場合はパスワードを入力する画面になります。パスワードが設定されていない場合は、そのまま実行されます。
su と sudo
suとsudoの違いは
- suではスーパーユーザーのパスワードが必要
- sudoではログインユーザーのパスワードが必要
ということです。
また、sudoはスーパーユーザーがあらかじめ利用を許可したコマンドのみスーパーユーザーとして実行可能です。
visudo
とすることでsudoで実行可能なコマンドを編集可能です。
スーパーユーザーの権限は強大で、システムの変更が自由にできてしまうため、スーパーユーザーのパスワードが外部に漏れることはなんとしても避けたい事態であり、そのためには内部であってもスーパーユーザーのパスワードを知っている人をできる限り制限する必要があります。 そのため、スーパーユーザーのパスワードが必要なsuではなく、スーパーユーザーの権限が必要なコマンドではsudoを利用して運用することが推奨されています。