Linux 中的用户组与权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 中的用户组与权限管理相关的知识,希望对你有一定的参考价值。

Linux中的用户以令牌token,identity为标识符号,每一个用户都拥有一个 Username和UID,root用户比较特殊,他的的UID为0。普通用户的UID由系统在1-60000范围内自动分配,系统用户的UID默认取值范围为1-499,Centos7之后范围扩大至1-999,登录用户的UID取值范围为500-60000,Centos7后调整为1 000-60000。 拥有相同权限的用户可以组成一个组,用户必须属于一个且只有一个主组,且组名同用户名,且仅包含一个用户。一个用户可以属于零个或多个附加组。 Linux用户和组的主要配置文件包含以下: /etc/passwd:用户及其属性信息(名称、UID、主组ID等) /etc/group: 组及其属性信息 /etc/shadow:用户密码及其相关属性 /etc/gshadow:组密码及其相关属性

有关用户的常用命令及其使用参数
用户创建:useradd
userada [options] LOGIN
-u UID
-o 配合-u选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以是GID
-c "COMMENT" 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells
文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私有组做主组,使用user组做主组
-r 创建系统用户Centos6: ID>500, Centos 7:ID< 1000
-m 创建家目录,用于非系统用户
useradd默认值设置文件位于:/etc/default/useradd
显示或更改默认设置
useradd -D
useradd -D -s SHELL
useradd -D -b BASE_DIR
useradd -D -g GROUP
用户属性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被
覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c ‘COMMENT‘:新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,
同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
删除用户
userdel [OPTION]... login
-r: 删除用户家目录
有关组的相关命令及其使用参数
创建组
groupadd [OPTION]... group_name
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000
修改和删除组
组属性修改:
groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel
groupdel GROUP
更改组密码组密码:gpasswd
gpasswd [OPTION] GROUP-a user 将user添加至指定组中-d user 从指定组中移除用户user-A user1,user2,... 设置有管理权限的用户列表
newgrp命令:临时切换主组 如果用户本不属于此组,则需要组密码
更改和查看组成员
groupmems [options] [action] options:
-g, --group groupname 更改为指定组 (只有root) actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表?groups [OPTION].[USERNAME]... 查看用户所属组列表
文件权限
技术图片
文件属性操作
chown 设置文件的所有者
chgrp 设置文集的属组信息

修改文件的属主和属组
修改文件的属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法说明:
OWNER WNER:GROUP
:GROUP,冒号也可用 . 替换
-R: 递归
chown [OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
文件权限
文件的权限主要针对三类对象进行定义
owner 属主, u
group 属组, g
other 其他, o
每个文件针对每类访问者都定义了三种权限
r Readable
w Writable
x eXcutable
文件权限
文件:
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件
x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限
文件权限操作
文件权限操作命令:chmod
文件权限(rwx|X)
技术图片

修改文件权限
chmod [OPTION]... OCTAL-MODE FILE...
-R: 递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + -
chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的修改为同RFILE

访问控制列表
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人
ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权
限),而非传统的组权限
getfacl 可看到特殊权限:flags
通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
base ACL 不能删除
setfacl -k dir 删除默认ACL权限
setfacl –b file1清除所有ACL权限
getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2
mask只影响除所有者和other的之外的人和组的最大权限
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective
Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效 setfacl -m
mask::rx file
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含
UGO的设置,不能象-m一样只是添加ACL就可以
示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
访问控制列表
备份和恢复ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是
tar等常见的备份工具是不会保留目录和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1

以上是关于Linux 中的用户组与权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统下用户以及权限管理

Linux的账号与与权限管理

Linux用户及权限管理

Linux用户权限管理命令

[Linux之权限管理⽤户组管理]

用户权限管理