Linux Runuser命令 - 使用指定的用户/组ID运行shell
时间:2020-03-05 15:29:20 来源:igfitidea点击:
runuser命令用于使用指定的用户和组ID运行shell。
此命令更改用户和组ID。
当我们想要将一些命令作为其他用户运行时,可以使用此命令来更改用户。
此命令就像su命令,但它不会提示密码。
因此,只有特权用户,例如:root用户可以成功运行此命令,并且可以在任何不需要密码的情况下更改为任何用户。
在shell脚本中使用时,此命令非常有用。
这是因为它是非交互式命令。
SU命令不能用于shell脚本,因为它会在与root身份运行时运行时提示密码。
但是在runUser命令的情况下,它只失败并退出错误(对于未经特权用户)。
随着runuser命令不运行Pam挂钩和身份验证模块,它具有比su更小的开销。
runuser命令
以下是root用户执行runuser命令的示例:
[root@redhat-server /]# 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 [root@redhat-server /]# runuser Hyman [Hyman@redhat-server /]$id uid=501(Hyman) gid=501(Hyman) groups=501(Hyman),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
我们可以使用ID命令检查当前用户。
现在,当一个未体生的用户尝试执行此命令时:
[Hyman@redhat-server /]$runuser jones runuser: cannot set groups: Operation not permitted
使用-l或者-login选项,可以将新shell置于苏命令的情况下。
runUser命令具有相同的效果。
它也会更改环境变量。
像PWD和PATH等变量使用此选项更改其值。
[root@redhat-server ~]# runuser - jones [jones@redhat-server ~]$id uid=502(jones) gid=502(jones) groups=502(jones),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh [jones@redhat-server ~]$pwd /home/jones
如果我们不希望使用-s选项,则可以提供自定义shell:
[root@redhat-server ~]# echo $SHELL /bin/bash [root@redhat-server ~]# runuser -s /bin/sh jones sh-3.2$echo $SHELL /bin/sh sh-3.2$id uid=502(jones) gid=502(jones) groups=502(jones),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh