linux是一个多用户,多任务的服务器操作系统
用户角色:超级用户,普通用户,程序用户
CentOS7用户:username/uid
超级用户:0,root有至高无上的权限,在进行管理及维护时使用
普通用户:1000-65535,受到权限限制,一般在宿主目录下有完整权限
程序用户:1-999,仅限于运行服务程序
组的类别:
基本组:用户必须属于一个且只有一个主组
附加组:一个用户可以属于零个或多个辅助组
用户和组的配置文件:
/etc/password
用户名:密码:UID:GID:注释:宿主目录:默认shell
/etc/group
组名:组密码:GID:以当前组为附加组的用户列表
/etc/shadow
用户名:密码:上次修改密码的天数:密码最短有效天数:提前多少天警告过期:过期多少天禁用:失效日期:保留字段
/etc/gshadow
组名称:组密码:组管理员列表:以当前组为附加组的用户列表
密码加密机制:
用户和组管理命令:
创建用户:useradd [options] LOGIN
-u 指定uid
-o 不检查uid的唯一性
-g 指定基本组
-C 用户的注释信息
-d 指定用户家目录
-s 指定用户默认shell
-G 指定用户附加组
-N 不创建私有组
-r 创建系统用户
-e 指定失效时间
-M 不创建主目录
相关文件:
/etc/skel 模板文件
~/.bash_profile:用户每次登录时执行
~/.bashrc: 每次进入新的Bash环境时执行
~/.bash_logout: 用户每次退出登录时执行
/etc/bashrc:全局初始配置文件
/etc/profile 全局初始配置文件
修改用户: usermod [OPTION] login
-u 新uid
-g 新基本组
-G 新附加组,若要保留原有附加组使用-a选项
-s 新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 删除用户家目录
查看用户相关信息:
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: Name
用户切换: su [options...] [-] [user [args...]]
用户密码设置: passwd [OPTIONS] UserName
-l: 锁定指定用户
-u: 解锁指定用户
-e: 强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays :最大使用期限
-w warndays :提前多少天开始警告
-i inactivedays :非活动期限
--stdin :从标准输入接收用户密码
用户密码策略: chage [OPTION]... LOGIN
创建组:groupadd [OPTION]... group_name
组修改:groupmod
组删除:groupdel
组密码:gpasswd
权限管理:
- 权限是OS用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行怎样的操作。
- 每个进程都是以某个用户身份运行,所以进程的权限与该用户的权限一样,所以用户的权限越大,该进程拥有的权限就大。
文件属性操作:
修改文件属主:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
修改文件属组:
chgrp [OPTION]... GROUP FILE...
文件权限主要针对三类对象进行定义:
属主(u)、属组(g)、其他(o)
文件的三种权限:
文件权限操作:
修改文件权限:
chmod [OPTION]... OCTAL-MODE FILE...
umask值 可以用来保留在创建文件权限
特殊权限:
SUID: user, 占据属主的执行权限位
s: 属主拥有x 权限
S :属主没有x 权限
SGID: group, 占据属组的执行权限位
s: group 拥有x 权限
S :group 没有x 权限
Sticky: other, 占据other 的执行权限位
t: other 拥有x 权限
T :other 没有x 权限
特殊权限八进制表示:
SUID = 4
SGID = 2
Sticky =1
设定文件特定属性:
chattr +i 不能删除,改名,更改
chattr +a 只能增加
lsattr
默认权限:
- 每一个终端都拥有一个umask属性,来确定新建文件、目录的默认权限
- umask使用数字权限方式表示,如:022
- 目录的默认权限是:777-umask
- 文件的默认权限是:666-umask
- 一般,普通用户的默认umask是002,root用户的默认umask是022
l 也就是说对于普通用户来说
新建文件的权限是:666-002 = 664
新建目录的权限是:777-002 = 775
- 命令umask用以查看设置umask值
umask 022
访问控制列表:
ACL :Access Control List ,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
RHEL7.0 默认创建的xfs 和ext4 文件系统有ACL 功能。
RHEL7.X 之前版本,默认手工创建的ext4 文件系统无ACL功 功能。需手动增加
tune2fs –o acl /dev/vdb1
mount –o acl /dev/vdb1 /mnt
ACL 生效 顺序:所有者,自定义用户,自定义组,其 他 人访问控制 列表
为多用户或者组的文件和目录赋予访问权限rwx
• mount -o acl /directory
• getfacl file |directory
• setfacl -m u:wang:rwx file|directory
• setfacl -Rm g:sales:rwX directory
• setfacl -M file.acl file|directory
• setfacl -m g:salesgroup:rw file| directory
• setfacl -m d:u:wang:rx directory
• setfacl -x u:wang file |directory
• setfacl -X file.acl directory
ACL 文件上的group 权限是mask 值(自定义用户,自定义组,拥有组的最大权限), 而非 传统的组权限
getfacl 可看到特殊权限:flags
chmod -R a+X /d1 只给目录x 权限,不给文件x 权限
默认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 --set-file=acl.txt /tmp/dir1
#getfacl -R /tmp/dir1