Linux学习第二十九篇--su和sudo命令

来源:互联网 发布:淘宝法院拍卖的房子 编辑:程序博客网 时间:2024/05/22 15:08

前言

纠结了好一会,要不要写blog记录这一部分内容,因为我感觉作为java开发人员这种管理类的知识大概了解一下就可以了,但是想了想觉得还是记录一下吧,毕竟这个命令的作用确实比较好用,到时候自己的工作机可能会需要添加这些东西.

su命令和sudo命令

先说一下su命令和sudo命令的作用和应用场景吧.
su命令主要用来切换用户,啥时候会用来切用户呢,大多数应该是当前用户权限不足的时候,还有一种可能应该是权限太足的时候.
第一个权限不足还可以理解,那么第二个权限太足是个什么情况呢?
这儿我是这么理解的,假设一个场景,
你写了一个脚本用来自动发布web项目,这个项目加入权限是777,你执行脚本万一要还是root用户,那么可能一些有心人注入进来的脚本之类的就会被执行了.
这时候,我们就需要在脚本里统一将用户切换到一个权限相对较低或者是专门用来发布项目的用户来执行脚本,这样就能降低风险了.
恩,这儿我是这么理解的,当然可能理解的有错误,不过,这都不重要!
重要的是,我们先来看一下这个命令.

怎么用我就不说了.文档写的太清晰了,还是中文版的.
在使用这个命令的时候,如果su后面不跟任何的参数,那么表示默认就是切换到root用户下,这种切换是有局限的,这样切换需要注意的是,他是用的no-login的shell登录的,所有会有一些环境变量不会重置。
还有一个命令式sudo命令,这个命令的作用是切换成其他用户身份来执行后面的命令。我们常常会用这个命令来切换成root身份来执行代码。
需要注意的是,系统默认一开始是只支持root用户使用sudo这个命令的,如果我们需要其他用户使用sudo命令, 那么就需要将这个用户的信息添加到/etc/sudoers内。
sudo的命令 参数不需要记住太多,记住u和b选项就好了。u表示的user,用来指定我们想要切换的用户,b表示background的意思用来表示命令在后台执行。
刚才说了能否使用sudo命令取决于/etc/sudoers文件。下面就是改文件的部分内容。

注意看上图未注释的部分,这里给出了两个样例,一个是针对用户的,还有一个是针对群组。
我们仔细看一下,他们每一行都是由四部分或者说四个数据构成的。
首先是用户(root)或者群组名称(%wheel),这里以百分号开头的表示其为群组。
第二列的ALL=(ALL)可以拆分为两个部分,第一个ALL表示允许的登录主机的名称,这儿表示允许所有的主机。第二部分为等号后面的(ALL),表示能够切换的用户身份,同理这里的ALL表示可以切换的用户身份。
第三列,也就是第四部分数据表示能够执行的命令,这一点应该需要注意的,ALL表示可以执行所有的命令,我们还可以通过在命令前面加上感叹号(!非)表示不能执行改命令,这儿是可以使用正则表达式来匹配命令及其参数的。
这些说的都是一些基础的概念,下面再比较详细的记录一下详细的用法。

使用sudo命令免密码

如果想要用户在使用sudo命令的时候不用输入密码,我们可以在命令那一块加上NOPASSWD:(见上图最后一行)。

用户别名和命令别名

有些时候我们可能需要添加多个用户到sudoers文件中,难道我们需要一个个手动添加吗?
其实这一部分的解决办法在sudoers文档中已经给出了解决办法,改文件是支持定义一个变量来表示多个用户或命令的。
注意看下图红框部分。

然后使用的方法也比较简单,就和直接定义用户和群组差不多。。。说来好笑,因为最近工作比较忙,这么点字的blog我竟然拖了一个多周。。。


原创粉丝点击