何かをインストールする方法(TeX関連-質問しない場合は、詳細を提供して1日を台無しにすることはありません)の手順をいくつか書いていて、Sudo
を使用してシステム全体にインストールしました。誰かが、Sudo
がすべてのLinux(またはUnix)ディストリビューションで利用可能であるとは思わなかったとコメントしました。
Sudo
がないUnixディストリビューションはありますか?ある場合、それらは何ですか?すべてのシステムでisと呼ばれる、一般に認められている「Get me superuser privileges」コマンドはありますか?
Sudo
は普遍的とは見なせません:
Red Hat Enterprise Linux:Sudo
はRed Hat Enterprise Linuxとその派生物にデフォルトでインストールされます。1 ただし、RHEL 7以降ですぐに使用できるもののみをインストールします。
Red Hat Enterprise Linux 7は、新しいオプションを 最初の非rootユーザーを作成するインストール画面 に追加しました。これは、「このユーザー管理者にする」というチェックボックスです。その目的は、インストールガイドのそのページには記載されていませんが、その効果の1つは、そのユーザーがSudo
を介して任意のコマンドを実行できるようにすることです。そのユーザーをwheel
グループに追加することで、ストックSudo
パッケージ構成で任意のコマンドを実行できます。
Red Hat Enterprise Linux 3から6もデフォルトでSudo
がインストールされています。2 RHEL 7までは、root
のみがコマンドを実行できるように構成されて出荷されていました。これを修正する最も簡単な方法は、1人以上のユーザーをwheel
グループに追加し、次にvisudo
をrootとして実行し、%wheel ALL=(ALL)...
行のコメントを外すことです。
Debian:Debian 9以降、最小インストールにはSudo
が含まれます。
Debian 7および8では、Sudo
を取得するために、インストール中に「 標準システムユーティリティ 」パッケージセットを選択する必要がありました。この方法でSudo
をインストールすると、OSインストーラーは、インストールプロセスの前半で作成した非管理ユーザーを、すべてのコマンドを実行する権限を持つSudo
グループに自動的に追加します。
Debian 6以前では、インストール後に_apt-get
_を介してSudo
をインストールし、それを手動で設定して、root以外のユーザーに使用を許可する必要がありました。
FreeBSD:Sudo
は、デフォルトではFreeBSDにインストールされていません。 Portsからビルドする必要があります。
NetBSD:FreeBSDと同じです。
OpenBSD:Sudo
はデフォルトでOpenBSDにインストールされていましたが、 switched to- doas
現在 5.8、2015年10月リリース 現在。 doas
はデフォルトで無効になっています。
現在のバージョンでSudo
を取得するには、パッケージリポジトリからインストールする必要があります。 OpenBSDのSudo
パッケージは、RHEL 3から6と同様に構成されているため、root
だけがコマンドを実行でき、Sudo
の目的に反しています。インストール中にroot
以外のユーザーを追加した場合、そのユーザーはwheel
グループに追加されたので、OpenBSDシステムでSudo
を有効にする最も簡単な方法は、 visudo
を介した%wheel ALL=(ALL)...
行。
Solaris:Sudo
は、Solaris 11にデフォルトでインストールされますが、Solaris 10以前は同様のものを使用しますが、完全ではありません-同じ pfexec
。
古いシステムではSudo
を取得できますが、デフォルトが重要です。 Solaris 10以前は何年も私たちと一緒にいるので、あなたの環境にSolarisがあり、それらのシステムを個人的に制御しておらず、Sudo
がそこにあることを確認できるなら、それを当てにすることはできません。 。
システムが古いほど、Sudo
がない可能性が高くなります。 Sudo
は非常に古い ですが、2000年代半ばまで人気が出始めていませんでした。それより古いシステムでは、Sudo
が存在する可能性はほとんどありません。 Unixボックスは長持ちする傾向があるので、今日でもそのようなシステムに出くわすとは考えられません。
私が個人的に管理しているシステム、またはUbuntu、macOS、openSuSEなどのシステムでは、デフォルトでroot権限を取得するonly方法であるSudo
のみを当てにしています。
su
はSudo
よりもユニバーサルな「get me superuser Privileges」コマンドに近いが、ルートアカウントがデフォルトでロックされているUbuntuやmacOSなどのシステムがある具体的には、Sudo
の代わりにsu
を使用するように強制します。したがって、su
universalを呼び出すこともできません。
脚注:
CentOS、Oracle Linux、Scientific Linux ...
はい、最小インストールでも可能です。
Sudo
は、ほとんどすべてのLinuxシステムで使用できるユーティリティです。
ただし、すべてのディストリビューションにデフォルトでバンドルされているわけではありません。ただし、すべての主要なディストリビューションでは、デフォルトでバンドルされています。
ユーザーが完全にカスタマイズできるArch Linux、Gentoo、LFSなどのLinuxディストリビューションには、デフォルトでSudoがありません。
Arch Linuxでは、ベースシステムにSudo
がインストールされていません。ユーザーは手動でSudo
をダウンロードし、sudoersファイルを編集する必要があります。
GentooおよびLFS用のDitto。 Sudoがなければ、他の主要なディストリビューションは知りません。
そして、いいえ、私はスーパーユーザー権限の付与においてSudo
よりも普遍的なものはないと思います。つまり、実際にrootとしてログインすることは別です。
最も広く使用されているディストリビューションであるUbuntuは、ルートになるための推奨される方法としてSudo
を使用します(コマンドラインを使用する場合— GUIに固執するユーザーは、下で何が起こるかを理解したり気にしないとパスワードプロンプトが表示されます。フード)。他のディストリビューションでは、Sudoのセットアップを推奨する場合としない場合があり、Sudoを出荷する場合としない場合もあります。一方、su
はどこでも使用でき、ユーザーがrootパスワードを取得できないため、Sudo
のみが使用可能なシステムを除くほとんどのシステムで使用できます。
su
とSudo
の間には、ほとんどすべてのユーザーが含まれます。 calife
またはop
またはpfexec
を必要とするエキゾチックな数人は、すでに何をすべきか知っています。そうでない場合でも、su
もSudo
も使用していないシステムでは、見慣れない場所にファイルがあり、命令が機能しない可能性があると思っていなかった十分なことが発生する可能性があります。とにかく。
あなたの質問に答えるために、最も正確には、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 Shellの賛辞であり、私は常にDash互換と書いています。