2つのスーパーユーザーコマンドsu -s
とSudo -s
の違いは何ですか?
どちらも、シェルにスーパーユーザーアカウントへのアクセス権を付与します。
実際には、どちらもあなたをスーパーユーザーにします。ただし、わずかに異なる方法で、わずかに異なる処理を実行します。
まず、su -
はログインシェルに切り替えますが、Sudo -s
はそうしません。実際には、これは多くの場合、環境変数がSudo -s
のroot
に切り替えられないことを意味します。 su
からnotを実行してログインシェルを取得するか、Sudo -i
を実行してログインシェルを取得できます[すべてのバージョンではありません]。
次に、su
およびsu -
は、新しいユーザーとして認証するように要求することで、新しいユーザーに切り替えます。 Sudo -s
およびSudo -i
(および通常のSudo foo
)を使用すると、事前承認されたコマンドを実行できます[/etc/sudoers
を参照]。 current ID。
本当にキュートになりたい場合は、Sudo su -
を実行することもできます。これは、rootユーザー(Sudo
部分)によって実行されるroot(su -
)としてのログインを要求します。
Rootユーザーがロックされている場合(Ubuntuなど)、su
を使用してrootとしてログインすることはできません。この場合、Sudo -s
またはSudo -i
を使用する必要があります
su -s
ユーザー(この場合はroot)に切り替えて、指定したシェル、またはシェルを決定する他のいくつかの方法の1つを起動します。これは、zshまたは別のシェルをrootとして本当にすばやく使用したい場合や、何らかの理由でSudoを使用していない場合に便利です。
Sudo -s
Sudoを使用してシェルを実行するだけで、ルートシェルが得られます。シェルを渡すこともできます。
su -sの方が古く、Sudo -sコマンドよりはるかに古くなっています。私の推測では、開発者はSudoの使用への切り替えをできるだけ簡単にしようとしていると思います。
suは、シェルを実行するか、特定のコマンドを実行するために、別のユーザーに変更するコマンドです。他のユーザーとして認証する必要があります。 rootにsuしたい場合は、rootのパスワードが必要です。
Sudoは、別のユーザーとして別のコマンド(オプションでシェル)を実行するコマンドです。 自分のユーザーとしてを認証する必要があります。 Sudoを使用する権限(およびSudoで実行できる特定の操作)は、sudoersファイルで管理者が指定します。
誰かにsuへのアクセスを許可すると(たとえば、rootパスワードを与えることにより)、他のコマンドを実行したり、シェルを開いたり、パスワードを変更したり、sshを介してリモートでログインしたりなど、何でもできます。あなたは本質的に彼らに他のアカウントへのアクセスを与えています、 'su'は彼らがそれを使ってできるただ一つのことです。
須藤ははるかに細かいです。ユーザーまたはグループに権限を付与できます。特定の時間枠内(例:月曜日から金曜日、午前9時から午後5時)にユーザーまたはグループにSudoを許可できます。コマンドの実行を許可するコマンドの特定のリストを指定するか(例:/ usr/local/bin/run_backup)、またはコマンドの実行を許可する特定のユーザーを指定できます(例:www、backup、staffなど)。 )。
Sudoはその柔軟性に加えて、ユーザーがまだ持っていないものへのアクセスを必要としないため、すべての場合に優れたソリューションです。誰かにSudoアクセスを許可する場合は、sudoersファイルでその行を削除するか、sudoersグループからそれらを削除することにより、そのアクセスを取り消すことができます。あなたが彼らのアカウントを削除すると、彼らのアクセスはなくなります。
あなたが彼らにルートパスワードを与えると、彼らがそれに対して不快なことを何もしないと仮定しても、彼らはそれを永遠に知るでしょう。管理タスクにrootアクセスが必要な人が複数いる場合、これは、誰かが去るたびにすべてのrootパスワードを変更するか、または退社後にシステムへのフルアクセスが許可されていると想定することを意味します。
Wikipedia から:
su(代替ユーザーまたはユーザー切り替えの略)は、ログアウトせずに別のユーザーのシェルを実行するために使用されるUnixコマンドです。
Sudoと呼ばれる関連コマンドは、別のユーザーとしてコマンドを実行しますが、どのユーザーがどのコマンドを他のユーザーとして実行できるかについての一連の制約を監視します(通常、/etc/sudoersという名前の設定ファイル。visudoコマンドで編集するのが最適です)。 suとは異なり、Sudoは、ターゲットユーザーのパスワードではなく、自分のパスワードに対してユーザーを認証します(特定のコマンドを特定のホスト上の特定のユーザーに委任できるようにするため、パスワードをユーザー間で共有することなく、無人端末のリスクを軽減します)。
十分に言われていないことの1つはこれです。どのを使用できるかは、多くの場合、使用しているディストリビューションとその実行者によって異なります。どちらか一方(su
またはSudo
)は、デフォルトでフル使用できるように設定されていません。したがって、たとえば、一部の人々が述べたように、OS XおよびUbuntuはデフォルトでrootアカウント(su
)を無効にします。同様に、Debianは、通常のユーザーにSudo
に対するデフォルトの権限を与えません。 (これらのすべてのシステムでは、これらのデフォルトを変更できますが、最初に何らかの管理特権がある場合に限ります。サーバー以外の状況について話しており、SUではなくマシンを管理していると思いますSFよりも、念のため。)
最後に、Sudo
をよりきめ細かく使用したい場合は、man sudoers
/ etc/sudoersファイルの編集方法。ただし、手動で絶対に編集しない必要があります。プログラムvisudoを使用してください-少なくとも最低限正常でない限り、編集内容を保存できません。これは、システムの管理者権限からロックアウトされる可能性のある単純なエラーに対する優れた保護手段です。
Mac OS Xなどのスーパーユーザーアカウントが無効になっているシステムでは、su
は機能しません。 Sudo -s
します。
また、少なくとも私のマシンではsu -s
がないようです。
この紹介 が役立つ場合があります。 su
はsu root
の省略形であり、他のユーザーとしての権利を無期限に保持します。より危険ですが、一定期間に多くのルートアクセスコマンドを実行する場合にも便利です。
suは基本的に、別のユーザー特権(ログイン)で新しいログインシェルを作成します。sudoは、指定したユーザーを使用してコマンドを一時的に実行できるようにします。 FreeBDSのような一部のUNIXでは、「-s」オプションはありません。