このチュートリアルでは、Unix / Linuxでのsuコマンド(ユーザーの切り替え)とは何か、およびsuコマンドとsuコマンドの違いについて学習します。 Linuxはマルチユーザーオペレーティングシステムカーネルです。つまり、複数のユーザーがLinuxシステムに同時にログインできます。
suコマンドを使用して、コマンドライン自体で異なるユーザーを切り替えることができます。 suコマンドは、「substitute user」の略であるか、ユーザーを切り替えることができます。このコマンドは、ユーザーの資格情報を指定されたユーザーまたはルートの資格情報に変更します(デフォルト)。
suコマンドの機能
上記のように、suコマンドは、ユーザーの資格情報を他のユーザーの資格情報に変更します。例を見てみましょう
[raghu@redhat-server ~]$ su jack
Password:
[jack@redhat-server raghu]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
idコマンドは、現在のユーザーに関する情報を出力します。上記の出力では、変更されたユーザーを確認できます。 suコマンドに引数が指定されていない場合、デフォルトでrootユーザーに変更されます。 Ubuntuのmanページで詳細が説明されています。
[jack@redhat-server raghu]$ su
Password:
[root@redhat-server raghu]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
suを使用したログインのシミュレーション-
su--loginまたはsu-lまたは単に「su-」コマンドを使用すると、端末からのログインであるかのようにユーザーを切り替えることができます。
[raghu@redhat-server ~]$ su - jack
Password:
[jack@redhat-server ~]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
suとsuの違い-
'su'と'su-'の違いは、PATH変数などの一部の環境変数は、suだけでは値を変更しないことです(つまり、-lオプションまたは-が省略されている場合)。 PATHが正しく設定されていないと、一部のコマンドが実行されない場合があります。たとえば、次のシナリオを考えてみましょう。
[jack@redhat-server ~]$ su root
Password:
[root@redhat-server jack]# fdisk -l
bash: fdisk: command not found
[root@redhat-server jack]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
sbinディレクトリがrootユーザーのPATHに含まれていないことがわかります。したがって、fdiskコマンドは実行されません。ここで、su --command:
を使用してログインしようとします。[jack@redhat-server ~]$ su -
Password:
[root@redhat-server ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1044 8281507+ 8e Linux LVM
[root@redhat-server ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
これら2つのコマンドのもう1つの違いは、ログインスクリプトです。まず、いくつかのログインスクリプトについて説明しましょう:
ユーザーがシステムにログインすると、ユーザーの資格情報が正当である場合、次の4つのファイルが実行されます。
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
'su-'コマンドでログインすると、これらのスクリプトがすべて実行されます。ただし、suでは、bashrcスクリプトのみが実行されます。つまり、/ etc / bashrcスクリプトと〜。/bashrcスクリプトが実行されます。
ubuntuでは、suコマンドを実行すると認証が失敗する場合があります。このエラーが発生するのは、ubuntuではrootアカウントがデフォルトで無効になっているためです。
user@host:~$ su
Password:
su: Authentication failure
suの代わりにsudo -i
を使用します またはsudo
その後にコマンドが続きます。
結論
このチュートリアルでは、Linuxでの「su」コマンドと「su-」コマンドの違いを学びました。詳細については、mansuを参照してください。読んで楽しんでいただければ幸いです。以下に提案を残してください。
関連項目:
- 例を使って学ぶための38の基本的なLinuxコマンド
- DebianのSudoersにユーザーを追加する方法