su コマンドを使用すると、root パスワードを知っているすべてのユーザーが「root を取得」し、root ユーザーができることは何でも実行できます。 「su – root」を使用するアカウントは、本質的にサーバー管理者です。これは、多くの場合、ユーザーに委任する必要があるよりもはるかに強力です。システム全体のルート権限を付与するのではなく、特定の機能をユーザーに委任することをお勧めします。
sudo コマンドを使用すると、サーバー管理者は、特定のユーザーにサーバー上での完全な権限を付与することなく、特定のコマンドを特定のユーザーに委任できます。委任は、visudo エディターを使用して /etc/sudoers ファイルで行われます。ユーザーとグループには、完全な管理者権限がなくても責任を果たすために実行する特定のコマンドが与えられる場合があります。
構文
sudo コマンドの構文は次のとおりです。
$ sudo [options] {command}
sudo コマンドの実行中に以下のエラーが発生した場合:
sudo: command not found
選択したディストリビューションに従って、以下に示すように sudo パッケージをインストールしてみてください。
分布 | コマンド |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
アルパイン | apk add sudo |
Arch Linux | pacman -S sudo |
カリ Linux | apt-get install sudo |
CentOS | yum install sudo |
Fedora | dnf install sudo |
Raspbian | apt-get install sudo |
sudo コマンドの例
1. スーパーユーザーとしてコマンドを実行します:
$ sudo less /var/log/syslog
2. デフォルトのエディターでスーパーユーザーとしてファイルを編集します:
$ sudo --edit /etc/fstab
3. 別のユーザーおよび/またはグループとしてコマンドを実行します:
$ sudo --user=user --group=group id -a
4. `sudo` で始まる最後のコマンドを繰り返します (`bash`、`zsh` などでのみ):
$ sudo !!
5. スーパーユーザー権限でデフォルト シェルを起動し、ログイン固有のファイル (`.profile`、`.bash_profile` など) を実行します。
$ sudo --login
6. 環境を変更せずに、スーパーユーザー権限でデフォルト シェルを起動します。
$ sudo --shell
7. 指定されたユーザーとしてデフォルト シェルを起動し、ユーザーの環境を読み込み、ログイン固有のファイル (`.profile`、`.bash_profile` など) を読み取ります。
$ sudo --login --user=user
8. 呼び出し元のユーザーに許可されている (および禁止されている) コマンドをリストします:
$ sudo --list
結論
何でもできるsudoプログラムはどのように正確に機能しますか?思ったより簡単です!次のコードを参照してください:
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
バイナリ実行可能ファイル sudo は、実際には setuid-root プログラムであることに注意してください。考えてみてください。sudo を使用してプログラムを実行すると、sudo プロセスはすぐに root 権限で実行されます。パスワードも手間もかかりません。ただし、もちろん、セキュリティのために、ユーザーはパスワードを入力する必要があります。正しく入力すると、sudo は実行を継続し、必要なコマンドを root として実行します。ユーザーがパスワードを正しく入力できない場合 (通常は 3 回以内)、sudo は実行を中止します。