В этой статье рассказано, что такое команда su (замена пользователя) в Unix/Linux и в чем разница между командами su и su –. Linux – это многопользовательское ядро операционной системы, это означает, что несколько пользователей могут одновременно входить в систему Linux.
Вы можете переключаться между разными пользователями в командной строке с помощью команды su. Команда su означает “заменить пользователя”. Данная команда изменяет учетные данные пользователя на пользователя root.
![Su команда в Linux, сравнение команд su и su - с примерами.](https://linuxwin.ru/wp-content/uploads/2021/09/su-komanda-v-linux-sravnenie-komand-su-i-su-s-primerami.jpg)
Что делает команда 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. Надеюсь, вам понравилась наша статья и она вам помогла.