回答:
実際には、どちらもあなたをスーパーユーザーにします。しかし、それらはわずかに異なる方法で、わずかに異なることを行います。
まず、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 -s
かsudo -i
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グループから削除することにより、それを取り消すことができます。アカウントを削除すると、アクセス権は失われます。
あなたが彼らにルートパスワードを与えた場合、彼らがそれで不快なことを何もしないと仮定しても、彼らは永遠にそれを知っているでしょう。管理タスクのためにルートアクセスを必要とする複数の人がいる場合、これは、誰かが去るたびにすべてのルートパスワードを変更するか、またはあなたが去った後にシステムにフルアクセスできると仮定することを意味します。
ウィキペディアから:
su(代替ユーザーまたはユーザー切り替え)は、ログアウトせずに別のユーザーのシェルを実行するために使用されるUnixコマンドです。
sudoと呼ばれる関連コマンド は、別のユーザーとしてコマンドを実行しますが、どのユーザーがどのコマンドを他のユーザーとして実行できるかについての一連の制約を観察します(通常、/ etc / sudoersという名前の構成ファイルで、visudoコマンドで編集可能)。suとは異なり、sudoはターゲットユーザーのパスワードではなく、自分のパスワードに対してユーザーを認証します(特定のコマンドを特定のホスト上の特定のユーザーに委任できるようにするため、パスワードを共有せずに無人端末のリスクを軽減します)。
完全に言われていないことの1つは、これは次のことです。どちらを使用できるかは、使用しているディストリビューションとそれを実行する人によって異なります。どちらか(su
またはsudo
)がデフォルトで完全に使用できるように設定されていない可能性があります。そのため、たとえば、一部の人々が言及したように、OS XとUbuntuはsu
デフォルトでルートアカウント()を無効にします。同様に、Debianは通常のユーザーにに対するデフォルトの特権を与えませんsudo
。(これらのすべてのシステムで、これらのデフォルトを変更できますが、何らかの管理特権がある場合に限ります。サーバー以外の状況について話していると仮定します。SUではなくSUを使用しているため、 SFよりも、念のため)
最後sudo
に、よりきめ細かい方法で使用する場合はman sudoers
、/ etc / sudoersファイルの編集方法を確認する必要があります。ただし、手動で編集しないでください。プログラムvisudoを使用します-少なくとも最低限の正気でない限り、編集内容を保存できません。これは、あなた自身のシステムの管理者特権からあなたを締め出す可能性のある単純なエラーに対する大きな安全策です。
sudo
は、通常のユーザーにデフォルトの権限が付与されていないことも言う価値があります。それらのシステムでsu
は、唯一のオプションです。