私は何かをインストールする方法(TeX関連 - 尋ねなくても詳細を提供して一日を台無しにしません)とsudo
システム全体のインストールに関するいくつかのガイドラインを書いています。一部の人は、これがsudo
すべてのLinux(またはUnix)ディストリビューションでは機能しないと言いました。
これらの機能を持たないUnixディストリビューションはありますかsudo
?それでは何ですか?普遍的に認識される「スーパーユーザー権限を取得する」コマンドはありますか?はいすべてのシステムで?
答え1
sudo
普遍的と見なすことはできません:
Red Hat Enterprise Linux:
sudo
Red Hat Enterprise Linux およびその派生製品にはデフォルトでインストールされますが、RHEL 7 以降でのみデフォルトでインストールされます。Red Hat Enterprise Linux 7 には新しいオプションが追加されました。root以外の最初のユーザーを作成するインストール画面、「このユーザーを管理者にする」というチェックボックスをオンにします。その目的はインストールガイドのこのページには記載されていませんが、その機能の1つは、このユーザーがストックパッケージ構成ですべてのコマンドを実行できるグループ
sudo
に追加することです。wheel
sudo
Red Hat Enterprise Linux 3~6もデフォルト
sudo
でインストールされます(2)。root
ただし、RHEL 7以前は、コマンドを介してのみ実行できるようにデフォルトで構成されていました。この問題を解決する最も簡単な方法は、wheel
グループに1人以上のユーザーを追加してからrootとしてvisudo
実行し、その%wheel ALL=(ALL)...
行のコメントを削除することです。ダーバン:Debian 9以降、最小インストールには
sudo
。Debian 7と8では、「」を選択する必要があります。標準システムユーティリティ"インストール中にインポートするパッケージを設定します
sudo
。sudo
この方法でインストールすると、オペレーティングシステムのインストーラは、以前にインストール中に作成した管理者以外のユーザーをこのsudo
グループに自動的に追加します。このユーザーには、すべてのコマンドを実行する権限があります。 。Debian 6以前では、root以外のユーザーに使用できる権限を付与するには、インストール後に手動でインストールして設定する
sudo
必要がありました。apt-get
FreeBSD:
sudo
FreeBSDにはデフォルトでインストールされていません。ポートでビルドする必要があります。ネットワークBSD:FreeBSDと同じです。
オープンBSD:
sudo
OpenBSDではデフォルトでインストールされていますが、スイッチ到着doas
〜のように5.8、2015年10月発売。doas
デフォルトでは無効になっています。最新バージョンを入手するには、
sudo
パッケージストアからインストールする必要があります。 OpenBSDのsudo
パッケージはRHEL 3〜6のパッケージと非常によく似ているため、root
コマンドはそれを介してのみ実行できますsudo
。これは、インストール中に非ユーザーを追加するとroot
グループに追加されるため、最も簡単です。 OpenBSDシステムでこれを行う方法は、wheel
この行のコメントを外すことです。sudo
%wheel ALL=(ALL)...
visudo
ソラリス:
sudo
Solaris 11 ではデフォルトでインストールされますが、Solaris 10 以前では同様ですが、同じではありません。pfexec
。古いシステムを使用できますが、
sudo
デフォルトは重要です。 Solaris 10以前のバージョンは長年にわたって連携しているため、お客様の環境にSolarisが存在し、そのシステムの存在を確実にするためにそのシステムを個人的に制御できない限り、sudo
これは信じられません。
システムが古くなるほど、システムがない可能性が高くなりますsudo
。しかし、sudo
非常に古い2000年代半ばまで人気がありませんでした。これより古いシステムは使用できませんsudo
。 Unixシステムは寿命が長い傾向があるため、今日でもこのようなシステムに触れることは驚くべきことではありません。
sudo
個人的に管理するシステム、Ubuntu、macOS、openSuSEなどのシステムにのみ依存します。ただデフォルトではroot権限を取得する方法です。
su
これはユニバーサル「スーパーユーザー権限の取得」コマンドに近いですが、ルートアカウントがデフォルトsudo
でロックされているため、sudo
代わりにそれを使用する必要があるUbuntuやmacOSなどのシステムがあるため、ユニバーサルと呼ぶことsu
はできませんsu
。
脚注:
CentOS、Oracle Linux、サイエンティフィックLinux...
はい、最小限の設置でも可能です。
答え2
sudo
ほとんどすべてのLinuxシステムで利用可能なユーティリティです。
ただし、すべてのディストリビューションがデフォルトでバンドルされているわけではありません。すべての主要なディストリビューションはデフォルトでバンドルされています。
ユーザーが完全なカスタマイズを可能にするArch Linux、Gentoo、LFSなどのLinuxディストリビューションには、デフォルトでsudoはありません。
Arch Linuxでは、デフォルトシステムはsudo
インストールされません。ユーザーはsudo
sudoersファイルを手動でダウンロードして編集する必要があります。
GentooとLFSも同じです。私はsudoのない主要なディストリビューションを知りません。
いいえ、スーパーユーザー権限を付与するよりも一般的なものはないと思いますsudo
。つまり、実際にrootとしてログインするのとは別のものです。
答え3
最も広く使用されているディストリビューションであるUbuntuは、sudo
ルートになるための推奨方法として使用されます(コマンドラインを使用するときにGUIを使用することに固執するユーザーは、後で何が起こっているのかわからず、気にせずにパスワードを入力するように求められます) 。他のディストリビューションでは、sudoの設定を推奨または推奨していない可能性があります。一方、su
これはどこでも使用でき、sudo
ユーザーにはルートパスワードがないため、利用可能なシステムを除いてほとんどのシステムで機能します。
su
との間には、sudo
ほぼすべてのユーザーに到達します。何をすべきか、calife
またはop
既に知っている少数のpfexec
外国人。そうでなくても、おなじみの場所にファイルを使用せずにsu
保持sudo
する可能性がなく、指示について考えていない十分な内容のシステムはおそらく機能しません。
答え4
あなたの質問に最も正確に答えると、「いいえ」sudo
は普遍的なものとは見なされません。実際、「普遍性」という全体的な概念はしばしば赤いニシンです。これは、ディストリビューション間の互換性に関して特に当てはまります。いくつかの異なるソフトウェアバージョンを使用すると、普遍性は半分非現実的になります。スクリプトは本質的に実用的であり、賢明な場合、移植可能なスクリプトを書くことは事実上不可能です。
一般的に私は私が望む実行環境、すなわち準現代式Linuxディストリビューションを測定し、一般的なGNU Utilsを含むPOSIXシェルを期待しています。 Linux外で実行できるスクリプトの場合は、POSIX標準全体のみを期待してください。明らかに、多くのスクリプトがLinux固有またはディストリビューション固有であるため、移植性が低下することがよくあります。
特定のスクリプトケースを解決するには
#!/bin/sh
## Exit Point
die() {
[ -n "$2" ] && echo "$2"
exit $1
}
## Require SuperUser Execution, Otherwise Re-Execute
[ `id -u` -ne 0 ] && {
command -v lsb_release > /dev/null && {
DISTRO="`lsb_release -is`"
[ "$DISTRO" = "Ubuntu" ] && SUPERUSER='sudo'
}
SUPERUSER="${SUPERUSER:-su}"
case "$SUPERUSER" in
su)
su -c "$0"
;;
sudo)
sudo "$0"
;;
esac
}
## Require SuperUser Execution
[ `id -u` -ne 0 ] && die 78
echo 'Script Executed by UID'
id -u
## Clean Up
die 0
貼り付けたスクリプトはPOSIXシェルに追加され、私は常にDash互換スクリプトを作成します。