Win7系统之家 网站地图| TAG标签| RSS订阅| 加入收藏

Linux下su命令的实例解说

  • 浏览:
  • |
  • 更新:

Linux下的su命令主要用于切换用户,可将普通用户与超级用户相互切换,那样su命令有什么作用与功效呢?用su命令后,其他用户是不是还在呢?下面随记者一块儿看看Linux下su命令的实例解说吧。

原问:linux中,我以root登录,和以其他用户登录然后用su命令切换至root用户,有哪些不同,假如一样的话,我实行su命令之后,其他的用户还在不在系统中?本人在实行su后,试图删除其他用户,linux提示,其他用户logged in?why

回答:我来为你讲解吧! unix系统里,当用户登录时会为每一个用户创建一个shell进程,提供交互功能,假如你用的是bash,那样这个shell进程就是bash,用的ksh,这个进程就是ksh,其他shell也是一样。

而对于进程而言,在它的进程PCB(进程控制块)里,有实质用户ID和有功用户ID这两个值,所谓实质用户ID是指该进程是以什么身份创建的,譬如:我目前是root用户,我创建的进程的实质用户ID就是root的ID,一般为0。而有功用户ID是指对该进程目前拥有用权限的用户的ID,譬如我有一辆车,我把它组出去了,这个车的拥有者是我,但用权限却不是我的。

通常情况下实质用户ID和有功用户ID都是相同的,su命令就是拥有如此的功能,让一个进程可以以命令拥有者的权限运行,即可以使进程的实质用户ID和有功用户ID不相同。你可以用ls -l去查询su这个命令,在它的拥有者的x权限位上写的肯定是个s(小s),passwd命令也是一样,他们拥有相同的功能。这个s位的意思是 实行该命令的用户可以以该命令的拥有者权限来实行,假如你把这个s位取消了,也就只有su的拥有者可以su了。

目前来进一步讲解下吧,期望你能看的懂。

当大家以root实行su时,su命令会以目前shell进程为父进程来创建一个新的shell进程,这个shell进程是提供给大家所要su到的那个用户用的,而root的shell进程仍然存在,反过来也是一样的,这就是你所问的问题是什么原因,由于之前那个用户的shell进程还没有关闭,你可以用exit退出一下,可以看到,并非退出登录了,而是回到之前的那个用户去了。由于它们是父子进程的关系,子进程的结束当然 不会干扰到父进程的实行了。但大家假如强行杀死父进程,那就直接退出了。

其实不少人并不知道,whoami和who am i有什么区别,他们有哪些用途是不一样的。

who am i 显示目前shell进程的实质用户ID。

whomai 显示目前shell进程的有功用户ID。

有时候,这两个输出是一样的,以至于大家以为这两个命令有哪些用途是相同的。

实例:root@yunhw-Aspire-4750G:~# who am i

root pts/0 2011-12-10 13:13 (:0.0)

root@yunhw-Aspire-4750G:~# whoami

root

root@yunhw-Aspire-4750G:~#ps -ef

root 2939 2935 0 13:18 pts/0 00:00:00 bash

root@yunhw-Aspire-4750G:~# su - yunhw

yunhw@yunhw-Aspire-4750G:~$ who am i

root pts/0 2011-12-10 13:13 (:0.0)

yunhw@yunhw-Aspire-4750G:~$ whoami

yunhw

root@yunhw-Aspire-4750G:~#ps -ef

root 2939 2935 0 13:18 pts/0 00:00:00 bash

yunhw 2958 2939 0 13:19 pts/0 00:00:00 su - yunhw

yunhw 2966 2958 7 13:19 pts/0 00:00:00 -su

root@yunhw-Aspire-4750G:~#sudo kill -9 2939

这条命令一实行,也就完全退出了。

上面就是Linux下su命令的使用方法介绍了,通过su命令用问题的解说来给大伙详细介绍其具体的使用方法,也给遇见该问题的用户做个参考,你掌握了吗?