sudoはどのくらい汎用性がありますか?

sudoはどのくらい汎用性がありますか?

私は何かをインストールする方法(TeX関連 - 尋ねなくても詳細を提供して一日を台無しにしません)とsudoシステム全体のインストールに関するいくつかのガイドラインを書いています。一部の人は、これがsudoすべてのLinux(またはUnix)ディストリビューションでは機能しないと言いました。

これらの機能を持たないUnixディストリビューションはありますかsudo?それでは何ですか?普遍的に認識される「スーパーユーザー権限を取得する」コマンドはありますか?はいすべてのシステムで?

答え1

sudo普遍的と見なすことはできません:

  • Red Hat Enterprise Linux: sudoRed Hat Enterprise Linux およびその派生製品にはデフォルトでインストールされますが、RHEL 7 以降でのみデフォルトでインストールされます。

    Red Hat Enterprise Linux 7 には新しいオプションが追加されました。root以外の最初のユーザーを作成するインストール画面、「このユーザーを管理者にする」というチェックボックスをオンにします。その目的はインストールガイドのこのページには記載されていませんが、その機能の1つは、このユーザーがストックパッケージ構成ですべてのコマンドを実行できるグループsudoに追加することです。wheelsudo

    Red Hat Enterprise Linux 3~6もデフォルトsudoでインストールされます(2)。rootただし、RHEL 7以前は、コマンドを介してのみ実行できるようにデフォルトで構成されていました。この問題を解決する最も簡単な方法は、wheelグループに1人以上のユーザーを追加してからrootとしてvisudo実行し、その%wheel ALL=(ALL)...行のコメントを削除することです。

  • ダーバン:Debian 9以降、最小インストールにはsudo

    Debian 7と8では、「」を選択する必要があります。標準システムユーティリティ"インストール中にインポートするパッケージを設定しますsudosudoこの方法でインストールすると、オペレーティングシステムのインストーラは、以前にインストール中に作成した管理者以外のユーザーをこのsudoグループに自動的に追加します。このユーザーには、すべてのコマンドを実行する権限があります。 。

    Debian 6以前では、root以外のユーザーに使用できる権限を付与するには、インストール後に手動でインストールして設定するsudo必要がありました。apt-get

  • FreeBSDsudoFreeBSDにはデフォルトでインストールされていません。ポートでビルドする必要があります。

  • ネットワークBSD:FreeBSDと同じです。

  • オープンBSDsudoOpenBSDではデフォルトでインストールされていますが、スイッチ到着doas〜のように5.8、2015年10月発売doasデフォルトでは無効になっています。

    最新バージョンを入手するには、sudoパッケージストアからインストールする必要があります。 OpenBSDのsudoパッケージはRHEL 3〜6のパッケージと非常によく似ているため、rootコマンドはそれを介してのみ実行できますsudo。これは、インストール中に非ユーザーを追加するとrootグループに追加されるため、最も簡単です。 OpenBSDシステムでこれを行う方法は、wheelこの行のコメントを外すことです。sudo%wheel ALL=(ALL)...visudo

  • ソラリス: sudoSolaris 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


脚注:

  1. CentOS、Oracle Linux、サイエンティフィックLinux...

  2. はい、最小限の設置でも可能です。

答え2

sudoほとんどすべてのLinuxシステムで利用可能なユーティリティです。
ただし、すべてのディストリビューションがデフォルトでバンドルされているわけではありません。すべての主要なディストリビューションはデフォルトでバンドルされています。

ユーザーが完全なカスタマイズを可能にするArch Linux、Gentoo、LFSなどのLinuxディストリビューションには、デフォルトでsudoはありません。

Arch Linuxでは、デフォルトシステムはsudoインストールされません。ユーザーはsudosudoersファイルを手動でダウンロードして編集する必要があります。
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互換スクリプトを作成します。

関連情報