Linux下su命令的实例讲解

2016-02-19 20:14 1 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - Linux教程 】

Linux下的su命令主要用于切换用户,可将普通用户与超级用户相互切换,那么su命令有哪些用途呢?使用su命令后,其他用户是否还在呢?下面随图老师小编一起来看看Linux下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退出一下,可以看到,并不是退出登录了,而是回到之前的那个用户去了。因为它们是父子进程的关系,子进程的结束当然 不会影响到父进程的执行了。但是我们如果强行杀死父进程,那就直接退出了。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

其实很多人并不了解,whoami和who am i的区别,他们的作用是不同的。

who am i 显示当前shell进程的实际用户ID。

whomai 显示当前shell进程的有效用户ID。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

很多时候,这两个输出是一样的,以至于我们以为这两个命令的作用是相同的。

实例: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命令使用问题的讲解来给大家详细介绍其具体的用法,也给遇到该问题的用户做个参考,你学会了吗?

来源:https://www.tulaoshi.com/n/20160219/1623096.html

延伸阅读
标签: 电脑入门
在前面的文章有介绍过su命令,su命令用于普通用户和超级用户的切换,但在有些系统中,使用su命令无反应,那么遇到这种情况该如何处理呢?下面随图老师小编一起来看看Linux下su命令无反应的处理方法。 出现问题的系统CentOS 6.3 64位,SSH客户端使用的是SecureCRT,需要的朋友可以参考下 一、问题产生环境 CentOS 6.3 X64 SecureCRT 7.0.0...
标签: 电脑入门
Linux中read命令主要用于读取和输入终端或文件,也是经常会用到的命令,下面将通过实例来给大家详细介绍下Linux下read命令的用法,一起来了解下吧。 一、概述 read命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。 二、使用举例(这里仅列出一些常用的选项) 1.基本读...
标签: 电脑入门
Linux下要实现两台服务器之间的文件传送,使用scp命令就可以了,在Linux系统中,scp命令的用法简单而又实用,系统之家就给大家介绍下如何使用scp命令进行Linux服务器之间的文件传送。 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能...
标签: 电脑入门
了解过Linux命令的都知道df命令能够查看Linux磁盘的空间,本文将通过实例来给大家详细介绍下df命令的具体用法,以便你有个了解。 Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件...
标签: 电脑入门
Linux系统下如果要同时显示多个文件的内容,就要使用cat命令了,那么cat命令还有那些用途呢?下面随图老师小编一起来了解下Linux下cat命令的用法。 cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 1.命令格式: cat ...

经验教程

93

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部