優れたXKCDウェブコミックからの上記のコミックを考えてみましょう。椅子に座っている怠惰な仲間は、友達にサンドイッチを作ってもらいたいと思っていますが、彼らにそれをさせる権限がありません。つまり、彼が強力なsudoコマンドを呼び出すまでです。その後、サンドイッチが何らかの形で作られます。
実生活でsudoを試してみるのはおそらく効果的ではありませんが、Linuxの世界のあらゆる障害を乗り越える魔法のコマンドです。sudoとは何ですか?なぜそれが存在するのですか?その答えは、Linuxがパーミッションを処理する方法にあります。
Linuxユーザー権限について(Linux User Permissions)
Linuxは、パーミッションの処理方法により、安全なオペレーティングシステムと見なされています。macOS( Linux(Linux)と祖先を共有している)やWindowsなどのオペレーティングシステムは、この点でLinuxに似ていますが、オープンソース(Open Source)オペレーティングシステムはまだややユニークです。
Linuxがパーミッションを処理する方法を理解すると、sudoコマンドに頭を悩ませるのがはるかに簡単になります。最新のオペレーティングシステムにはすべて、「管理者」または「root」のユーザー権限レベルがあります。管理者アカウントまたはrootアカウントをお持ちの場合は、設定を変更したり、データを削除したり、通常はコンピューターで好きなことをしたりできます。
これには、データの損失や完全なワイプと再インストールの必要性につながる可能性のある、おそらく実行すべきではないことも含まれます。
Linuxは、rootユーザーレベルの権限をデフォルトにしません。代わりに、あなたのアカウントはあなたの許可レベルを上げずにシステムの本当に敏感な部分に到達することはできません。つまり、グラフィカルインターフェイスを使用して通常とは異なることを行う場合、システムは管理者パスワードの入力を求めます。
ただし、ターミナル(Terminal)コマンドラインを使用して処理を実行する場合は、sudoが最も安全で効率的な方法です。
須藤とターミナル
Linuxで昇格された権限を自分に与えるには2つの方法があります。1つは、rootユーザーとして永続的にログインすることです。これに伴う問題は、コンピュータにアクセスする可能性のある他の誰もが大混乱を引き起こす可能性があり、あなたでさえ偶然にそれを行う可能性があるということです。Sudoは、それに続く特定のコマンドを実行するために、短時間だけアクセス許可を昇格させます。
sudo構文
Sudoの構文(コマンドの形式)は単純です。「sudo」に続けて実行するコマンドを入力するだけです。(Simply)
たとえば、「sudo apt-get update」は、関連ファイルにリストされているすべてのアプリリポジトリを更新します。sudoを使用せずに実行しようとすると、権限がないことを示すエラーメッセージが表示されます。ちなみに、これは通常、お気に入りのLinux(Linux)ディストリビューションを新規インストールした後に実行する最初のsudoコマンドです。
須藤の「蘇」
sudoの「su」は「superuser」の略で、スタンドアロンコマンドです。「su」コマンドを使用すると、sudoが昇格するユーザーの権限を変更できます。
sudoは一時的にrootに昇格しますが、suは適切な権限を持つ別のユーザーにあなたを変更します。これは重要ではないように思われるかもしれませんが、sudoがユーザーを昇格させるアカウントを変更するのには十分な理由があります。
まず(First)、アカウントを変更すると、通常のユーザーはrootパスワードを知らなくなります。次に、すべてのsudoコマンドのログがあります。これは、システム管理者(root)がsuコマンドを発行したユーザーを検索できることを意味します。
suの構文は、基本的にsudoと同じです。
SuUSERNAME-cコマンド(Su USERNAME -c COMMAND)
USERNAME(Replace USERNAME)を目的のユーザーに置き換えてコマンドを実行し、COMMANDを実行するLinuxコマンドに置き換えます。
別のユーザーとして複数のコマンドを実行する場合は、次を使用します。
Suユーザー(Su USER)
USER(Replace USER)を目的のユーザーアカウントIDに置き換えます。
suを単独で使用する場合、「exit」コマンドを使用するまで、Linuxは他のユーザーアカウントに切り替えます。このセッションまたはそのセッションで端末にアクセスする次のユーザーには、引き続き昇格された権限があることを覚えておくことが重要です。これが、一般的にsuよりもsudoを使用する方が良い理由です。
須藤時間制限
sudoコマンドを初めて使用するときは、パスワードを入力する必要があります。その後、そのパスワードは15分間有効です。このデフォルトを変更するには、コマンドsudo visudoを実行し、「timestamp_timeout=」をより長い値またはより短い値に変更します。ただし、sudoパスワードが有効である期間を延長または短縮する正当な理由がない限り、これを行うことはお勧めしません。
sudoオプションスイッチ
sudoの構文は単純ですが、いくつかのスイッチについて知っておく価値があります。これらのコマンドは、追加情報を開くか、sudoセッションを制御するのに役立ちます。
- -hは、sudoの構文とコマンド情報を示します。
- -Vは、マシン上のsudoの現在のバージョンを表示します。
- -vは、sudoの制限時間を更新し、クロックを再開します。
- -lはユーザー権限をリストします。
- -kは、現在のsudoセッションをすぐに強制終了し、昇格された特権を削除します。
sudoにはさらに多くのオプションが組み込まれており、上記の最初の-hスイッチを使用してすべてを確認できます。
上のスクリーンショットは、ヘルプオプションを使用した場合の結果です。
便利なSudoコマンド
では、すべてのLinux(Linux)ユーザーが知っておくべきsudoによって強化されたコマンドはどれですか?sudo apt-get updateについてはすでに説明しましたが、次の点にも注意してください。
- Sudo apt-get upgradeは、インストールされているすべてのパッケージをアップグレードします。
- Sudo apt-get install <package-name>は、選択したソフトウェアをインストールします。パッケージ名をインストールしたいものに変更するだけです。
- パッケージ名がわからない場合は、dpkg –listを使用してください。
- インストールされているパッケージをターミナルから削除する場合は、sudo apt-get remove <package-name 使用します(ここでも、問題の特定のパッケージ名に置き換えます)。
これらはおそらく最初に使用する必要のあるsudoコマンドですが、上記で学習したように、どのコマンドもsudoに続くことができますが、より高い特権が必要なコマンドのみを使用する必要があります。
What Is Sudo in Linux and How To Use It
Conѕider the above comic from the excellent XKCD webсomіc. The lazy fellow in the chair wants their friend to make them a sandwich, but they lack the authority to make them do it. That is, until he invokes the mighty sudo command. After which, a sandwich will be made one way or anоther.
While trying sudo on a person in real life probably won’t be as effective, it’s the magic command that gets past every roadblock in the world of Linux. What is sudo? Why does it even exist? The answer lies in how Linux handles permissions.
Understanding Linux User Permissions
Linux is considered a secure operating system due to how it handles permissions. While operating systems such as macOS (which shared an ancestor with Linux) and Windows are now more like Linux in this regard, the Open Source operating system is still somewhat unique.
Understanding how Linux handles permissions makes it a lot easier to get your head around the sudo command. All modern operating systems have an “administrator” or “root” user permissions level. If you have an admin or root account, you can change any setting, delete any data and generally do whatever you like with the computer.
That includes things that you probably shouldn’t do that can lead to data loss or the need for a complete wipe and reinstallation.
Linux doesn’t make root user level permissions the default. Instead, your account can’t get at the really sensitive parts of the system without elevating your permission level. That means the system will ask you to enter the administrator password when you want to do something out of the ordinary using a graphical interface.
However, when you want to use the Terminal command line to get things done, sudo is the safest and most efficient way to go about it.
Sudo and the Terminal
There are two ways to give yourself elevated permissions in Linux. One is to log in as the root user permanently. The problem with this is that anyone else who may access the computer can wreak havoc, and even you can do it by accident. Sudo elevates your permissions only for a short time to execute the specific commands that follow it.
Sudo Syntax
Sudo’s syntax (the command’s format) is simple. Simply type “sudo” followed by the command you want to execute.
For example, “sudo apt-get update” will update all of the app repositories listed in the relevant file. If you tried to run it without sudo, you’d get an error message telling you that you don’t have permission. Incidentally, this is generally the first sudo command you’ll want to run after a fresh installation of your favorite Linux distro.
The “Su” in Sudo
The “su” in sudo is short for “superuser” and it is a standalone command. The “su” command lets you change which user’s privileges sudo elevates you to.
Although sudo elevates you to root temporarily, su changes you to another user with suitable privileges. That may seem like an unimportant distinction, but there are good reasons to change the account that sudo elevates a user to.
First of all, changing the account means that regular users don’t know the root password. Second, there’s a log of all sudo commands, which means that the system administrator (root) can look up who issued su commands.
The syntax for su is essentially the same as sudo:
Su USERNAME -c COMMAND
Replace USERNAME with the desired user to run the command and COMMAND with the Linux command you want to execute.
If you want to run multiple commands as another user, simply use:
Su USER
Replace USER with the desired user account identity.
If you use su by itself, Linux will switch to the other user account until you use the command “exit.” It’s important to remember this or the next user to access the terminal in that session will still have elevated permissions. This is why it’s generally better to use sudo rather than su.
The Sudo Time Limit
The first time that you use a sudo command, you’ll have to enter a password. Then, that password will remain valid for 15 minutes. You can change this default by running the command sudo visudo and changing “timestamp_timeout=” to a longer or shorter value. However, we don’t recommend you do this unless you have a good reason to extend or shorten how long a sudo password remains valid.
Sudo Option Switches
Although the sudo syntax is simple, several switches are worth knowing about. These commands open up additional information or help you control the sudo session:
- -h shows you syntax and command information for sudo.
- -V displays the current version for sudo on your machine.
- -v refreshes the sudo time limit, restarting the clock.
- -l lists user privileges.
- -k kills the current sudo session immediately, removing elevated privileges.
There are many more options built into sudo, and you can see them all using the first -h switch listed above.
The above screenshot is what results when you use the help option.
Useful Sudo Commands
So which commands empowered by sudo should every Linux user know? We’ve already covered sudo apt-get update, but take a note of these as well:
- Sudo apt-get upgrade will upgrade all installed packages.
- Sudo apt-get install <package-name> installs software of your choice; just change the package name to the one you want to install.
- If you don’t know the package name, use dpkg –list.
- If you want to remove an installed package from the terminal, use sudo apt-get remove <package-name (again substituting the specific package name in question).
These are likely the first sudo commands you’ll have to use, but as you’ve learned above any command can follow sudo, but you should only use ones that need higher privileges with it.