Linux之用户身份切换与特殊的Shell

关于用户的切换,大家应该都不会觉得陌生,在实际的操作中,经常会切换到不同的用户环境中进行操作,为什莫会有这样的要求呢?因为在入行的时候,可能都会有一些老师傅在提醒我们:平时千万不要使用root用户登录啊,除非要做系统的配置,否则的话就尽可能使用一般账户登录,这样可以避免在使用root账户时输入一些严重的命令,比如【rm -rf /】,这个命令会删除Linux系统的所有系统文件,是不是很可怕,所以说,一般情况下就用一般账户登录,比如在Linux的主机上有一个apache软件,这个时候你就可以额外建立一个apache用户专门用来执行这个apache软件。
一、su
su是简单的切换命令,它可以进行任何身份的切换,平时我们做切换的时候,都会用到[su - 用户名],有没有考虑过如果不加中间的[-]
会是什么什么结果?我们看一看
在这里插入图片描述
我们分析一下上面的这幅图:首先最开始的时候,是在gao这个用户下,之后我使用了su这个命令(注意这里没有‘ - ’,仅仅是su),输入密码之后使用id这个命令的时候,可以看到这个命令的提示字符仍然是‘gao’,虽然此时用户的身份已经是root了。最要命的是以PATH开头的那一行,依旧在提示着我们虽然你的UID已经具有了ROOT的身份,但是还有一些变量为原本的‘gao’的身份,也就是说此时还有很多数据是无法直接使用的。简单的说,单纯的使用【su】切换成root的身份,读取的变量设置方式为非登录Shell的方式,这种方式很多原本的变量不会被修改。
**问题:**假如此时还是在gao 这个用户下,我想要直接看到原本root环境下才能看到的文件怎么办呢?第一种方法是【su - root】,输入密码后即可;第二种方法是【su - -c ‘‘命令串’’】,我们看一看例子: 在这里插入图片描述
二、sudo
接下来咱们聊一聊sudo,说实在的这个命令我见过,但是还真的没有用过,所以一直没有在意,直到今天,我才发现它真的有它存在的意义,还真得好好讲一讲
**问题:**可能你会问既然有了su这个命令干嘛又多了一个sudo,这不是多此一举吗?然而有这样一个问题你可能需要思考,假如你的主机是多人共用的环境,如果大家都需要使用 su - root 来切换成root的身份和环境,那么岂不是说大家都知道了你的root用户的密码?是不是很恐怖?为了避免密码流出去,于是有了sudo
相对于使用su需要了解到切换用户的密码(一般是root用户的密码)而sudo的执行仅需要自己的密码即可,甚至可以设置不需要密码来执行sudo。由于sudo可以让你以其他用户的身份来执行命令(通常是使用root的身份来执行命令),所以这个sudo并不是所有用户都可以使用的。而是仅有规范到/etc/sudoers 内的用户才能够执行这个命令。
示例一:在这里插入图片描述
**注释:**在上面的图中,首先我在/sbin/nologin环境下创建了用户test2,当我们使用su - test2命令时,发现提示该账号不可用(这就是我要说的特殊的Shell,使用该Shel创建出的用户不可以使用bash或其shell来登录系统),那我就非要用这个用户创建文件怎么办呢?这个时候就可以用到sudo了,【-u】后面接要切换的用户即可。此时可以看到该文件的属主与属组都是test2了。
还要强调的是,除了root之外其他的账号若要使用sudo执行属于root的权限的命令,则root需要先使用visudo去修改/etc/sudoders,让该账号能够使用全部或部分root账号的功能。为什莫不是使用vi,而是使用visudo?因为/etc/sudoders是设置过语法的,如果使用vi 修改的话很容易 出现语法错误,而是用visudo的好处就是它可以在修改完成后检查语法是否正确。其实这个visudo的命令就是使用vi将/etc/sudoders调用出来修改而已
在这里插入图片描述
一般来说,要修改的这个地方大概在98行左右,我的这个是在第100行,在修改的时候只需在第100行的下面加上一行
“gao ALL=(ALL) ALL”即可,当然了还有其他的方法,此处不再一一介绍。

今天关于su 与sudo就讲到这里,接下来我么们会讲到磁盘配额与够爱文件系统管理,再见!!!

猜你喜欢

转载自blog.csdn.net/Gao068465/article/details/106870525