
sudoコマンドを使用すると、プログラムを別のユーザー(デフォルトではrootユーザー)として実行できます。コマンドラインに多くの時間を費やす場合、sudoは非常に頻繁に使用するコマンドの1つです。
rootとしてログインする代わりにsudoを使用すると、rootパスワードを知らなくても個々のユーザーに制限付きの管理者権限を付与できるため、より安全です。
このチュートリアルでは、sudo
の使用方法を説明します。 コマンド。
Sudoのインストール(sudoコマンドが見つかりません)#
sudoパッケージは、ほとんどのLinuxディストリビューションにプリインストールされています。
sudoパッケージがシステムにインストールされているかどうかを確認するには、コンソールを開いて、sudo
と入力します。 、Enter
を押します 。 sudoをシステムにインストールしている場合は、短いヘルプメッセージが表示されます。それ以外の場合は、 sudo command not found
のようなものが表示されます。 。
sudoがインストールされていない場合は、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。
UbuntuとDebianにSudoをインストールする#
apt install sudo
CentOSおよびFedoraにSudoをインストールする#
yum install sudo
Sudoersへのユーザーの追加#
デフォルトでは、ほとんどのLinuxディストリビューションでは、sudoアクセスの許可は、sudoers
で定義されたsudoグループにユーザーを追加するのと同じくらい簡単です。 ファイル。このグループのメンバーは、rootとして任意のコマンドを実行できます。グループの名前は、配布ごとに異なる場合があります。
CentOSやFedoraなどのRedHatベースのディストリビューションでは、sudoグループの名前はwheel
です。 。ユーザーをグループに追加するには、次のコマンドを実行します:
usermod -aG wheel username
Debian、Ubuntu、およびそれらの派生物では、グループsudo
のメンバー sudoアクセスが許可されます:
usermod -aG sudo username
Ubuntuのrootユーザーアカウントはセキュリティ上の理由からデフォルトで無効になっており、ユーザーはsudoを使用してシステム管理タスクを実行することをお勧めします。 Ubuntuインストーラーによって作成された最初のユーザーはすでにsudoグループのメンバーであるため、Ubuntuを実行している場合は、ログインしているユーザーにsudo特権が既に付与されている可能性があります。
特定のユーザーが特定のプログラムのみをsudoとして実行できるようにするには、ユーザーをsudoグループに追加するのではなく、ユーザーをsudoers
に追加します。 ファイル。
たとえば、ユーザーにlinuxize
を許可するには mkdir
のみを実行する sudoとしてのコマンド、次のように入力します:
sudo visudo
次の行を追加します:
linuxize ALL=/bin/mkdir
ほとんどのシステムでは、visudo
コマンドは/etc/sudoers
を開きます vimテキストエディタでファイルします。 vimの経験がない場合は、ファイルを保存してvimエディターを終了する方法についての記事を確認してください。
ユーザーがパスワードを入力せずにsudoコマンドを実行できるようにすることもできます:
linuxize ALL=(ALL) NOPASSWD: ALL
Sudoの使用方法#
sudo
の構文 コマンドは次のとおりです:
sudo OPTION.. COMMAND
sudo
コマンドには、その動作を制御する多くのオプションがありますが、通常、オプションなしで最も基本的な形式で使用されます。
sudoを使用するには、コマンドの前にsudo
を付けるだけです。 :
sudo command
command
の場所 sudoを使用するコマンドです。
Sudoは/etc/sudoers
を読み取ります ファイルを作成し、呼び出し元のユーザーにsudoassessが付与されているかどうかを確認します。セッションで初めてsudoを使用するときは、ユーザーパスワードの入力を求められ、コマンドはrootとして実行されます。
たとえば、/root
内のすべてのファイルを一覧表示するには 使用するディレクトリ:
sudo ls /root
[sudo] password for linuxize:
. .. .bashrc .cache .config .local .profile
パスワードタイムアウト#
デフォルトでは、sudoは、sudoが5分間非アクティブになった後、パスワードの再入力を求めます。 sudoers
を編集して、デフォルトのタイムアウトを変更できます ファイル。 visudo
でファイルを開きます :
sudo visudo
以下の行を追加して、デフォルトのタイムアウトを設定します。ここで、10
分単位で指定されたタイムアウトです:
Defaults timestamp_timeout=10
特定のユーザーのタイムスタンプのみを変更する場合は、次の行を追加します。ここで、user_nameは問題のユーザーです。
Defaults:user_name timestamp_timeout=10
ルート以外のユーザーとしてコマンドを実行する#
sudo
という誤った認識があります 通常のユーザーにroot権限を提供するためにのみ使用されます。実際には、sudo
を使用できます 任意のユーザーとしてコマンドを実行します。
-u
オプションを使用すると、指定したユーザーとしてコマンドを実行できます。
次の例では、sudo
を使用しています。 whoami
を実行するには ユーザー「リチャード」としてのコマンド:
sudo -u richard whoami
whoami
コマンドは、コマンドを実行しているユーザーの名前を出力します:
richard
Sudoでリダイレクトする方法#
コマンドの出力を、ユーザーに書き込み権限がないファイルにリダイレクトしようとすると、「権限が拒否されました」というエラーが発生します。
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
これは、リダイレクト「>
」の出力は、sudoで指定されたユーザーではなく、ログインしているユーザーの下で実行されます。リダイレクトはsudo
の前に行われます コマンドが呼び出されます。
1つの解決策は、sudo sh -c
を使用して、ルートとして新しいシェルを呼び出すことです。 :
sudo sh -c 'echo "test" > /root/file.txt'
もう1つのオプションは、通常のユーザーとして出力をtee
にパイプすることです。 以下に示すように、コマンド:
echo "test" | sudo tee /root/file.txt
結論#
sudo
の使用方法を学習しました コマンドと、sudo権限を持つ新しいユーザーを作成する方法。
ご不明な点がございましたら、お気軽にコメントをお寄せください。