回答:
sudo
ユニバーサルと見なすことはできません:
Red Hat Enterprise Linuxは:sudo
のRed Hat Enterprise Linuxおよびその誘導体、上のデフォルトでインストールされた1それだけでRHEL 7以降ですぐに使用できるインストールされます。
Red Hat Enterprise Linux 7では、インストール画面に新しいオプションが追加されました。このオプションでは、最初の非rootユーザーを作成し、「Make this user administrator」というラベルのチェックボックスを作成します。その目的はインストールガイドのそのページに記載されていませんが、その効果の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以前では、インストール後にsudo
via apt-get
でインストールし、手で設定して、root以外のユーザーが使用できるようにする必要がありました。
FreeBSD:FreeBSDsudo
ではデフォルトではインストールされません。Portsからビルドする必要があります。
NetBSD:FreeBSDと同じです。
OpenBSDの:sudo
OpenBSDのではデフォルトでインストールされるように使用されるが、彼らはきたスイッチにdoas
のよう5.8、2015年10月にリリース。doas
デフォルトでは無効になっています。
sudo
現在のバージョンを取得するには、パッケージリポジトリからインストールする必要があります。OpenBSDのsudo
パッケージはRHEL 3から6のように構成されているため、root
コマンドを実行することしかできず、むしろの目的に反しsudo
ます。root
インストール中に非ユーザーを追加した場合、それはwheel
グループに追加されたので、sudo
OpenBSDシステムで有用にする最も簡単な方法は、で%wheel ALL=(ALL)...
行のコメントを外すことvisudo
です
Solaris:sudo
Solaris 11にはデフォルトでインストールされますが、Solaris 10以前では、similar-but-not-quite-the-sameが使用されますpfexec
。
sudo
古いシステムでも入手できますが、デフォルトが重要です。Solaris 10以前は何年も使用されるため、環境内にSolaris sudo
があり、それらのシステムを個人的に管理しておらず、確実にそこにいる場合は、頼りにできません。
システムが古ければ古いほど、システムにない可能性が高くなりますsudo
。sudo
非常に古いです、それは2000年代半ばまで普及してきて起動しませんでした。それより古いシステムにはありそうもないsudo
。Unixのボックスは長持ちする傾向があるため、今日でもこのようなシステムを実行することは考えられません。
sudo
個人的に管理しているシステム、またはUbuntu、macOS、openSuSEなど、デフォルトでルート権限を取得する唯一の方法に依存します。
su
は、普遍的な「スーパーユーザー権限を取得」コマンドに近いsudo
ですが、UbuntuやmacOSなどのシステムがあり、デフォルトでrootアカウントがロックされ、特にのsudo
代わりに使用するように強制されますsu
。だから、あなたもsu
普遍的と呼ぶことはできません。
脚注:
CentOS、Oracle Linux、Scientific Linux ...
はい、最小インストールでも。
sudo
ほとんどすべてのLinuxシステムで利用可能なユーティリティです。
ただし、すべてのディストリビューションにデフォルトでバンドルされているわけではありません。ただし、すべての主要なディストリビューションにはデフォルトでバンドルされています。
ユーザーが完全にカスタマイズできるようにするArch Linux、Gentoo、LFSなどのLinuxディストリビューションには、デフォルトではsudoがありません。
Arch Linuxでは、ベースシステムにはsudo
インストールされていません。ユーザーはsudo
、sudoersファイルを手動でダウンロードして編集する必要があります。
GentooとLFSの同上。sudoを使用しない他の主要なディストリビューションは知りません。
いいえ、sudo
スーパーユーザーの権限を付与することよりも普遍的なものは存在しないと思います。つまり、実際にルートとしてログインすることは別として。
最も広く使用されているディストリビューションであるUbuntuは、sudo
ルートになるための推奨方法として使用します(コマンドラインを使用する場合-GUIに固執するユーザーは、内部で何が起こるかを理解または気にせずにパスワードプロンプトを取得します)。他のディストリビューションでは、sudoのセットアップを推奨する場合としない場合があり、出荷する場合もしない場合もあります。一方、su
はどこでも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シェルの賛辞であり、私は常にDash互換と書きます。
sudo
インストールする必要はありません。スーパーユーザーの実行が必要であり、利用sudo
可能であれば使用できます。をsudo
使用できない場合、スクリプトはrootユーザーとして実行する必要があります。そうでない場合は実行されますdie
。
sudo -l
。残念ながら、パスワードの入力が必要になる可能性があるため、この状況では使用できません。これについてもっと慎重に考えてみると、実際には、ディストリビューションごとのテストを行うことで、コンセプト全体が最適に達成されると思います。デフォルトの無効化されたディストリビューションをsu -c
実行しているsu
場合を除き、その場合はを使用しsudo su -c
ます。他の人が言及したように、スーパーユーザーの昇格はユーザーに任せるのが最善です。
sudo
。これは、デフォルトsu
/ sudo
構成を想定して、ほとんどのディストリビューションで適切に実行されるはずです。時代遅れのUbuntuの前lsb_release
に対処する必要があることは知っています...しかし、これは実際には単なる例であり、明らかに拡張される可能性があります。
sudo
ほとんどのディストリビューションにバンドルされている場合がありますが、すべてのユーザーがすべてのユーザーを実行できるように構成しているわけではありません。