如何在Linux中使用su命令

时间:2020-03-05 15:29:59  来源:igfitidea点击:

在本教程中,我们了解UNIX/Linux中的SU命令(Switch User)以及Su和Su命令之间的差异。
Linux是一个多用户操作系统内核,这意味着多个用户可以同时登录Linux系统。

我们可以使用SU命令在命令行本身上切换不同的用户。
SU命令代表'替代用户'或者可以在用户之间切换。
此命令将用户凭据更改为指定用户或者root的用户凭据(默认情况下)。

什么是su命令做

如上所述,SU命令将将用户的凭据更改为其他用户的凭据。
让我们检查一个例子

[raghu@redhat-server ~]$su Hyman
Password:
[Hyman@redhat-server raghu]$id
uid=501(Hyman) gid=501(Hyman) groups=501(Hyman),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh

ID命令输出有关当前用户的信息。

在上面的输出中,我们可以看到更改的用户。
当没有给出苏命令的参数时,它默认情况下会更改为root用户。
Ubuntu Man页面已经解释了更多信息。

[Hyman@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 - Hyman
Password:
[Hyman@redhat-server ~]$id
uid=501(Hyman) gid=501(Hyman) groups=501(Hyman),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh

Su与Su -的差异

'su'和'su -'之间的差异是某些环境变量,例如路径变量,不仅仅是用su(即如果-l选项或者被删备)。
如果路径未正确设置路径,可能无法运行某些命令。
例如,请考虑以下方案:

[Hyman@redhat-server ~]$su root
Password:
[root@redhat-server Hyman]# fdisk -l
bash: fdisk: command not found
[root@redhat-server Hyman]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/Hyman/bin

我们可以看到索取目录不包含在root用户的路径中。
所以它不运行fdisk命令。

现在我们尝试使用su命令登录:

[Hyman@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 - "命令登录时,执行所有这些脚本。
但是对于苏,只执行Bashrc脚本,例如:/etc/bashrc和~。
/bashrc脚本被执行。

在Ubuntu中,我们可能会在运行SU命令时收到身份验证失败。
我们收到此错误,因为默认情况下禁用Ubuntu root帐户。

User @ Host:~$SU密码:SU:身份验证失败

而不是苏使用sudo -i或者sudo,然后是命令。