chmod权限、acl权限、sudo权限之间的区别

2019年4月20日 0 条评论 4.41k 次阅读 0 人点赞

在公司工作中,我们需要对不同级别的运维人员在服务器上设置不同的操作权限,防止每个员工都拥有root最高管理员级别的操作权限。在了解这三者权限之间的区别,首先我们要先列出添加新用户的命令,因为只有增加了用户,我们才能给各个用户添加不同的权限。

查看xhy这个用户的信息的命令:

id xhy

添加xhy这个用户的命令:

useradd xhy

删除xhy这个用户的命令:

userdel -r xhy

注:新增一个用户会默认增加一个新的属组,比如我增加了xhy这个用户,会自动生成xhy这个用户组,并且将xhy这个用户添加到这个用户组之中。

如果我要将xhy这个用户添加到root组中,让它也拥有root组中的权限该怎么做呢?

解决方案:(如下命令)

将xhy这个用户加入到root组的命令 (-a 代表add)

gpasswd -a xhy root

将xhy这个用户从root组中删除的命令 (-d 代表del)

gpasswd -d xhy root

了解了上面的用户添加和用户属组的设置后,让我们来看看下面3种权限的区别到底在哪里吧

chmod权限,acl权限,sudo权限的区别

linux下的用户分为三类

一、 超级用户, 一般为root, 什么都可以做。

二、 系统用户:UID是1-499,一般这类用户不能登录系统,但是不排除部分用户可以登录系统。

三、 非系统用户:UID大于等于500,这类用户一般权限较小,可以登录系统。

并且用户创建文件时,也拥有对该文件的相应读(r)写(w)执行(x)权限,

如图所示:

能看到最左边的dr-xr-xr-x.之类的字符,那么这些东西是什么呢?其实就是对应用户的权限,该文件创建时面向三类用户,分别是:文件属主用户、文件属组用户以及其他用户。

dr-xr-xr-x.的意思其实是这样的,d代表该文件是个文件夹,r代表可读x代表可执行,其中还有个w权限代表可写入,但是这里是没表示出来的,因为该用户没有w写入权限,每类用户都拥有三类权限rwx,分别是读写执行权限,如果没有该权限则用-来代替位置。r-xr-xr-x代表分别是属主r-x权限,属组r-x权限其它用户r-x权限

r-x代表该文件的属主(也就是创建文件的用户)拥有可读和可执行的权限(文件夹的可执行权限也就是cd切入文件夹目录下的权限,如果权限是r--那么该属主用户连进入文件夹的权限也没有,此时可能有人会问了,如果连进入文件夹的权限都没有,那么怎么会有r这个可读的权限呢?其实如果当只有r这个可读权限,该用户还是可以用cat这个命令去看该文件夹下的文件,只不过进不去目录罢了)

一、chmod 权限分配

①给index.php这个文件的所属组加写入的权限

chmod g+w index.php

②给index.php这个文件的所属组去除写入的权限

chmod g-w index.php

③让所有用户都拥有对index.php可执行的权限 下面的a+x中的a代表all

chmod a+x index.php

④给index.php这个文件的属主rwx 属组和其他人rw权限

chmod 755 index.php

(上面的755代表user拥有rwx权限、groups拥有rx权限、others拥有rx权限 )

在此rwx三个权限分别代表三个数字

r可读权限对应的是4。w可执行权限对应的是数字2。x可执行权限对应的数字是1

rwx则为4+2+1=7,所以chmod中的 7代表属主拥有rwx权限,依次推理。

注:chmod只能大批量的添加权限,它做不到权限细分,例如有一天的要给others其他人中的user1 user2 user3分配不同的权限,只靠chmod来分配权限是不合适的,因为chmod权限设置是批量用户权限的批量操作

因此引入了以下的的acl权限分配

acl权限分配能做到细分用户权限

以下开始进入acl权限的介绍

1.setfacl 设置权限

让用户xhy对index.php这个文件设置rw权限

setfacl -m u:xhy:rw index.php

2.getfacl 查看权限

查看index.php这个文件的权限

getfacl index.php

3.删除一个用户对文件的权限

删除xhy这个用户对index.php的权限

setfacl -x u:xhy index.php

4.清空文件权限

setfacl -b index.php

注:此时对文件添加的rwx读写执行权限,只是对该文件内容本身的增删改,用户却不能对该文件本身的删除或者在同级目录下创建新的文件

解决方法:去该文件的所在目录给用户设置权限(而不是只对文件设置权限)

如下:给xhy用户对mnt这个文件夹下增加读写执行的权限

setfacl -m u:xhy:rwx mnt

此时该用户就能在该目录下创建和删除文件了

注:那么问题来了,如果mnt底下还有文件夹怎么办呢?底下的文件夹可没有拥有rwx权限

解决方法:给xhy用户增加对文件夹的权限时,添加一个-R参数进行递归,使之安对mnt下的文件包括mnt下的文件夹中的文件都具有删除修改的权限

setfacl -m u:xhy:rwx -R mnt

同理 chmod 777 /mnt -R 也可以实现上面的功能,只不过是将所有的用户都设置了777权限(注意:-R千万不能写成-R*)

提出问题:此时给mnt设置了777权限,但是如果后期,我在mnt目录下又新建了目录,这个目录难道还要用setfacl或者chmod 重新-R递归赋予权限吗?显然这样是很麻烦的。

那么如何让后期创建的目录能继承之前赋予的权限呢?这是一个问题

解决方案:

setfacl -m d:u:xhy:rwx /mnt

解释:在设置acl权限时,再添加一个参数d:(这个d代表的是default,默认后期再创建文件时,该文件都具有rwx权限)

acl权限在此就告一段落了,以下进入sudo权限的介绍

sudo权限的作用:

主要用于设置用户对命令使用的权限和用户对应用程序执行的权限

提出问题:xhy用户不能使用ls这个命令,该如何解决呢?

解决方案:

which ls

先靠上面这条命令查找出ls所在的目录,我这里查询到ls这条命令所在的文件夹是 /usr/bin/ls

使用方法:

命令:visudo

打开sudo的编辑界面,下拉到最后面一行的空白处编辑内容

xhy localhost=/usr/bin/ls

:wq保存即可

如图所示:

此时xhy用户就拥有了ls这个命令的使用权限了,如果还是不能使用该命令,就在命令界面输入:

sudo /usr/bin/ls xhy

再输入xhy用户的密码就可以执行了,因为sudo命令前必须加sudo,且安全级别比较高的命令,它都需要做到验证该用户的密码才能用sudo命令进行执行

使用无密码的sudo命令:

命令:visudo

打开sudo的编辑界面,下拉到最后面一行的空白处编辑内容

xhy ALL=NOPASSWD: /usr/bin/ls

兰陵美酒郁金香

大道至简 Simplicity is the ultimate form of sophistication.

文章评论(0)

你必须 登录 才能发表评论