В этой статье рассказано, что такое команда su (замена пользователя) в Unix/Linux и в чем разница между командами su и su —. Linux — это многопользовательское ядро операционной системы, это означает, что несколько пользователей могут одновременно входить в систему Linux.
Вы можете переключаться между разными пользователями в командной строке с помощью команды su. Команда su означает «заменить пользователя». Данная команда изменяет учетные данные пользователя на пользователя root.
Что делает команда 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 объясняет это более подробно.
[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. Некоторые команды могут не выполняться, если 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 не включены в PATH пользователя root. Таким образом, он не выполняет команду fdisk. Теперь мы попытаемся войти в систему с помощью команды su —:
[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
Еще одно различие между этими двумя командами — сценарии входа в систему. Во-первых, давайте посмотрим на сценарии входа в систему:
Когда пользователь входит в систему, выполняются следующие 4 файла, если учетные данные пользователя являются законными:
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
Когда вы входите в систему с помощью команды » su —«, все эти сценарии выполняются. А с командой su выполняются только сценарии bashrc. Т. е. выполняются сценарии /etc/bashrc и ~./bashrc.
Команда su — выдаёт Authentication failure в Ubuntu
В ubuntu при запуске команды su может произойти сбой аутентификации. Вы получаете эту ошибку, потому что учетная запись root в ubuntu по умолчанию отключена.
user@host:~$ su
Password:
su: Authentication failure
Вместо того, чтобы использовать su используйте sudo -i
или sudo
. Либо поставьте пароль на учетную запись root. Так как она по умолчанию без пароля будет заблокированной.
Заключение
В этой статье мы показали разницу между командами “su” и “su -” в Linux. Надеюсь, вам понравилась наша статья и она вам помогла.