在Linux使用中的权限,每一位用户的权限都是不同的,root用户拥有最高的权限,就是系统的上帝,但是普通用户的权限却收到了很大的限制,毕竟管理员只需要一名,其他的都只是使用者。在普通用户使用中,有写命令是需要管理员权限来完成的,这时候用户的权限是非常重要的。那怎么才能让普通用户有管理员权限而又不对系统增加管理员呢。在这里,我们使用acl命令就可以完美的解决。
在Linux中,acl命令是和setf、getf一起使用的,他代表的含义是:
acl :针对单一使用者,设置单一文件或目录的rwx权限的修改
setfacl :配置单一使用者,针对单一文件或目录的权限。
命令格式为:
setfacl -m u:用户名:rwx 文件名/目录
setfacl -m g:组名:rwx 文件名/目录
setfacl -m m::rwx 修改mask值
getfacl:获取单一使用者,针对单一文件或目录的权限。
命令格式为:
getfacl 文件名/目录
注:mask是指文件或目录的最高权限---权限上限。
如果mask中没有的权限,那么即使setfacl设定了权限,那么他也不会有权限。
mask权限是:指定用户,指定组,所属组的所有权限。
参数:-m 配置acl参数,-x删除单一文件的acl ,-b删除acl配置 ,-R递归配置acl配置
还有很多参数,请自行man查阅。
知道上面的一些定义后,我们要怎么使用呢。
在企业做项目中,开发组是在服务器端进行开发的,这样做的好处是,组内成员可以同时进行编辑、开发,可以看到组内成员彼此的进度,进行测试等等。
在开发中我们总是需要管理员权限来做一些文件或目录的修改,更新等操作。
这时候我们就可以使用setfacl来设置权限了。
eg:有一个项目需要在Ubuntu下开发,开发人员4位。
这是我们的系统管理员可以这么做。
第一步:建立一个组
groupadd admin ##建立admin组
useradd a;useradd b;useradd c;useradd d ##建立用户a,b,c,d
usermod -G admin a;usermod -G admin b;
usermod -G admin c;usermod -G admin d
当然如果觉得麻烦,可以直接使用:
user add -g admin 用户名 #将用户加入admin组。
组密码,用户密码设置请自行百度查询,这里不做解释。
第二步:建立组文件 ##我们在home下建立gadmin文件
mkdir /home/gadmin
setfacl -m g:admin:rwx /home/gadmin
大功告成,这样这个组里的成员针对/home/gadmin文件有了最高的管理权限。
当使用完毕,不在需要管理权限时候。
setfacl -b /home/gadmin
这样管理权限就移除了。或者
setfacl -x u:用户名:rwx 文件名
这样针对u用户的权限就移除了。
设置权限后。我们可以只用get查看文件按的权限
getfacl 文件名 ##查看文件按权限。
这个命令下就显示了,文件的user权限,group权限,mask权限。
图片1
那么,我们这么知道文件或目录是否有了给定用户或组的权限呢。看下图:
图片2
在x后有一个+号,就显示了已经给与某个用户或组权限了,这时候可以用
getfacl 文件名/目录 来查询,就可以知道了。
也就是说,只要后面有+号就有权限,没有+号,就没有赋予权限。
至此,本文就介绍完成。用户权限问题就基本解决了。
网友评论