对于很多linux运维来说,权限管理是比较难搞的,今天聊一下添加用户和给用户授权的一些方法。
linux系统中,增加用户或改变用户的组属性命令分别是useradd和usermod。
這里对于单纯的添加用户,不再详细详解,主要解释一下用户组,在linux用户系统中,存在两类组,第一类是主用户组,第二类是附加用户组。所有用户账户信息都存储在/etc/passwd文件中,/etc/shawod和/etc/group文件存储了用户信息。
增加一个新用户到附加用户组
命令:
useradd -G {group-name} username
该命令适用于,用户是新增,组是已存在的情况
默认情况下我们在添加用户,不指定组的时候,默认会创建一个以用户名命名的组,上面的指令是会在添加以用户名命名的组,并另外添加该用户到其他用户组,添加之后我们可以通过id命令查看如下:
如果要将该用户同时添加到多个附加用户组,可以使用半角逗号隔开组名,命令格式如下:
useradd -G group1,group2,group3,...,groupn username
增加一个新用户到主要用户组
命令:
useradd -g {group_name} username
图中可以看到该命令与上一命令区别该用户的主要用户组直接就是developers,而没有创建新的用户组
将一个已有用户增加到一个已有用户组
命令:
usermod -a -G {group_name} username
该命令是将已创建的用户,添加到另外一个已有用户组,-a参数主要是将用户添加到新用户组中,而不需要离开原有组,同样的,若需要更改已有用户的主用户组,还是使用-g参数,命令如下:
usermod -g {group_name} username
如果要将一个用户从某个组中删除,命令如下:
gpasswd -d user group
這个时候,需要保证group不是user的主组。
以上是用户权限的管理,下面介绍另外一种权限管理方式ACL(访问控制列表)
使用ACL为用户赋予目录权限
要使用ACL来为用户授予权限的前提是要目前的linux文件系统支持ACL,并且内核支持ACL。
首先使用命令查看ACL支持,命令如下:
df -T |awk '{print $1,$2,$NF}' | grep '^/dev'
grep -i acl /boot/config*
可以看到服务器文件系统类型是xfs,并且支持ACL。
然后查看文件系统(分区)挂载时是否使用了ACL选项,对于xfs文件系统的用户,是默认支持ACL的,对于ext4、ext3、ext2系统的用户可以用一下命令查看
tune2fs -l /dev/vda1 |grep acl
dumpe2fs /dev/vda1 |grep acl
两个命令选其中一个即可
查询acl会提示,Default mount options: user_xattr acl,若没有返回结果,则不支持,可以通过一下命令对制定分区开启ACL的支持
mount -o remount,acl /
tune2fs -o acl /dev/vda1
设置好分区支持ACL,可以指定目录的权限分配给用户了,分配命令如下:
setfacl -m user:test:rw /home
若要查看详细的权限信息,可以通过一下命令:
getfacl /home
从上图可以看到/home目录对用户test增加了读写权限。