如何在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
,然后是命令。