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

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

(0)

相关推荐

  • linux su命令参数及用法详解(linux切换用户命令)

    linux su 命令 建议大家切换用户的时候 使用 su - root 这样,否则可能发现某些命令执行不了 关于su 、su - 及 sudo的区别 请往下看 1.命令作用 su的作用是变更为其它使 ...

  • Linux下su命令无反应的解决办法

    一、问题产生环境 CentOS 6.3 X64 SecureCRT 7.0.0 英文版 二、问题具体描述 今天操作自己的一台Linux服务器时,突然su命令不好使了,敲入命令回车后,没有任何反应,不管 ...

  • Linux如何防止任何人使用su命令成为root

    Linux防止任何人使用su命令成为root方法: 1.vi /etc/pam.d/su auth sufficient /lib/security/pam_rootok.so debug auth ...

  • linux su和sudo命令的区别

    一. 使用 su 命令临时切换用户身份 1、su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  • linux renice命令参数及用法详解(linux修改程序运行优先级命令)

    linux renice 命令详解 功能说明:调整程序优先级。 语法:renice [优先等级][-g <程序群组名称>...][-p <程序识别码>...][-u <用 ...

  • linux关机命令-linux定时关机命令

    linux关机命令-linux定时关机命令 操作方法 01 关机命令: 1.halt   立刻关机 2.poweroff  立刻关机 3.shutdown -h now 立刻关机(root用户使用) ...

  • Linux常用命令大全 Linux常用命令全集

    Linux常用命令全集 http://www./linux/ 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 d ...

  • Linux ftp命令的使用方法详解

    ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ft ...

  • Linux基本命令学习之linux cd命令详解

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。 1. ...