コマンド「su -s」と「sudo -s」の違いは何ですか?


23

どのような2つのスーパーユーザーコマンドの違いは、su -ssudo -s

どちらもシェルにスーパーユーザーアカウントへのアクセス権を付与します。

回答:


30

実際には、どちらもあなたをスーパーユーザーにします。しかし、それらはわずかに異なる方法で、わずかに異なることを行います。

まず、su -ログインシェルに切り替えますが、sudo -sそうではありません。実際には、これは多くの場合、環境変数がにスイッチされないことを意味rootためのsudo -s。ログインシェルを取得suないか、ログインシェルを取得するためだけに実行できることに注意してくださいsudo -i(すべてのバージョンではありません)。

第二に、suそしてsu -新しいユーザーとして認証するかを尋ねることで、新しいユーザーに切り替えます。sudo -sそしてsudo -i(そしてただの通常のsudo foo/etc/sudoersおそらく現在の ID を確認するように頼むことによって、事前に許可されているコマンドを実行することができます[参照] 。

本当に可愛くなりたい場合はsudo su -、を実行することもできます。これはsu -、rootユーザー(sudo一部)が実行するroot()としてログインするように要求します。

rootユーザーがロックされている場合(Ubuntuなど)、を使用してrootとしてログインすることはできませんsu。この場合は、あなたが使用する必要がありますsudo -ssudo -i


5
また、多くのディストリビューションでsudoは、通常のユーザーにデフォルトの権限が付与されていないことも言う価値があります。それらのシステムでsuは、唯一のオプションです。
テレマコス

12
su -s

ユーザー(この場合はルート)に切り替えて、指定したシェル、またはシェルを決定する他のいくつかの方法のいずれかを起動します。これは、zshまたは別のシェルをrootとして本当に迅速に使用したい場合に便利です...何らかの理由でsudoを使用していません。

sudo -s

sudoを使用してシェルを実行するだけで、ルートシェルになります。シェルを渡すこともできます。

su -sはより古く、sudo -sコマンドよりもずっと古いです。私の推測では、開発者はできるだけ簡単にsudoの使用に切り替えようとしています。


9

suは、シェルを実行するか特定のコマンドを実行するために、別のユーザーに変更するコマンドです。他のユーザーとして認証する必要があります。rootにsuしたい場合は、rootパスワードが必要です。

sudoは、別のユーザー(オプションでシェル)を別のユーザーとして実行するコマンドです。自分のユーザーとして認証する必要があります。sudo(およびそれを使ってできる特定のこと)を使用する許可は、sudoersファイルで管理者によって指定されます。

誰かにsuへのアクセス権を与えると(たとえば、rootパスワードを与えることで)、他のコマンドを実行したり、シェルを開いたり、パスワードを変更したり、sshを介してリモートでログインしたりできます。あなたは基本的に他のアカウントへのアクセス権を彼らに与えています。「su」は彼らがそれでできることの1つにすぎません。

sudoは、はるかにきめ細かいです。ユーザーまたはグループに特権を付与できます。特定の時間枠(月曜日から金曜日、午前9時から午後5時)内にユーザーまたはグループにsudoを許可できます。実行が許可されているコマンドの特定のリストを指定できます(例:/ usr / local / bin / run_backupのみ)、またはコマンドの実行が許可されている特定のユーザーを指定できます(www、backup、staffなど)。 )。

sudoは、柔軟性に加えて、ユーザーがまだ持っていないものへのアクセスを必要としないため、すべての場合において優れたソリューションです。誰かにsudoアクセスを許可した場合、sudoersファイルからその行を削除するか、sudoersグループから削除することにより、それを取り消すことができます。アカウントを削除すると、アクセス権は失われます。

あなたが彼らにルートパスワードを与えた場合、彼らがそれで不快なことを何もしないと仮定しても、彼らは永遠にそれを知っているでしょう。管理タスクのためにルートアクセスを必要とする複数の人がいる場合、これは、誰かが去るたびにすべてのルートパスワードを変更するか、またはあなたが去った後にシステムにフルアクセスできると仮定することを意味します。


2つのコマンドsuとsudoの違いについての適切な説明。
ジョン別名hot2use

5
  • suは、rootユーザーのパスワードを尋ねます。
  • sudoはあなたに尋ねますあなたのパスワードを(そして、あなたはそれを行うためにsudoのアクセスのためにクリアする必要があります)。

2
通常、これはsudoのデフォルトの動作ですが、rootまたは他のパスワードを要求するように構成することもできます。
もう1人

2

ウィキペディアから:

su(代替ユーザーまたはユーザー切り替え)は、ログアウトせずに別のユーザーのシェルを実行するために使用されるUnixコマンドです。

sudoと呼ばれる関連コマンド は、別のユーザーとしてコマンドを実行しますが、どのユーザーがどのコマンドを他のユーザーとして実行できるかについての一連の制約を観察します(通常、/ etc / sudoersという名前の構成ファイルで、visudoコマンドで編集可能)。suとは異なり、sudoはターゲットユーザーのパスワードではなく、自分のパスワードに対してユーザーを認証します(特定のコマンドを特定のホスト上の特定のユーザーに委任できるようにするため、パスワードを共有せずに無人端末のリスクを軽減します)。


2

完全に言われていないことの1つは、これは次のことです。どちら使用できるは、使用しているディストリビューションとそれを実行する人によって異なります。どちらか(suまたはsudo)がデフォルトで完全に使用できるように設定されていない可能性があります。そのため、たとえば、一部の人々が言及したように、OS XとUbuntuはsuデフォルトでルートアカウント()を無効にします。同様に、Debianは通常のユーザーにに対するデフォルトの特権を与えませんsudo。(これらのすべてのシステムで、これらのデフォルトを変更できますが、何らかの管理特権がある場合に限ります。サーバー以外の状況について話していると仮定します。SUではなくSUを使用しているため、 SFよりも、念のため)

最後sudoに、よりきめ細かい方法で使用する場合はman sudoers/ etc / sudoersファイルの編集方法を確認する必要があります。ただし、手動で編集しないでください。プログラムvisudoを使用します-少なくとも最低限の正気でない限り、編集内容を保存できません。これは、あなた自身のシステムの管理者特権からあなたを締め出す可能性のある単純なエラーに対する大きな安全策です。


1

Mac OS Xなど、スーパーユーザーアカウントが無効になっているシステムでsuは機能しません。sudo -s意志。

また、su -s少なくとも私のマシンでは利用できるものがないようです。


多くの場合、逆のことが当てはまります。つまり、多くの古いUnixライクなディストリビューションでは、通常のユーザーにはデフォルトの権限sudoがありません(常にインストールされているわけでもありません)。
テレマコス

1

この紹介はあなたを助けるかもしれません。 suはの省略形でありsu root、他のユーザーとしての権利を無期限に保持します。より危険ですが、一定期間に多くのルートアクセスコマンドを実行する場合にも便利です。


1

suは基本的に別のユーザー特権(ログイン)で新しいログインシェルを作成します。sudoは、指定したユーザーを使用してコマンドを一時的に実行できるようにします。FreeBDSのような一部のUNIXでは、「-s」オプションはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.