Linux文件属性
Linux中的文件都有三种属性
1 所有者
2 所属组
3 其他人
以boot文件举例来说
dr-xr-xr-x. 5 root root 4096 12月 14 09:44 boot
d代表目录
第一个r-x代表文件拥有者可具备的权限,第二个代表加入此用户组的账号的权限,第三个代表非本人且没有加入本用户组的其他账号的权限。注意这三个权限的位置不会改变,如果没有权限就会出现-号。
文件的三种权限分别为rwx代表读 写 执行
如何修改文件权限
chgrp:修改文件所属组权限
-R: 递归修改权限
把所属组为root的文件修改为xxx可写为 chgrp xxx 文件名
chown:修改文件所有者的权限
修改方法同chgrp
chmod:修改文件的权限
权限修改的方法有两种数字法和符号法
各权限数字对照表
r=4
w=2
x=1
各种身份的三个权限是需要累加的
当权限为[rwxrw-r–]时
owner=rwx=4+2+1=7
group=rw-=4+2=6
other=r--=4
如果我们要设置数字权限时
chmod 764 文件名
用户组管理命令
用户管理命令
useradd
usermod
userdel
组帐号维护命令
groupadd
groupmod
groupdel
用户创建
常见选项:
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
范例:
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
useradd 命令默认值设定由/etc/default/useradd定义
[root@centos8 ~]#cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
用户属性修改
usermod
常见选项:
-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
常见选项:
-f, --force 强制
-r, --remove 删除用户家目录和邮箱
查看用户相关的ID信息
id
常见选项:
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
切换用户或以其他用户身份执行命令
su
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
说明:root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c ‘COMMAND’
常见选项:
-l --login su -l UserName 相当于 su - UserName
设置密码
passwd
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码
范例:
echo "PASSWORD" | passwd --stdin USERNAME
修改用户密码策略
常见选项:
-d LAST_DAY
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE 密码过期后的宽限期
-E --expiredate EXPIRE_DATE 用户的有效期
-l 显示密码策略
范例:
#下一次登录强制重设密码 [root@centos8 ~]#chage -d 0 wang
用户相关的其它命令
chfn 指定个人信息
chsh 指定shell
fifinger 可看用户个人信息
创建组
groupadd
常见选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
修改组
组属性修改:groupmod
常见选项:
-n group_name: 新名字
-g GID: 新的GID
组删除
groupdel 可以删除组
常见选项:
-f, --force 强制删除,即使是用户的主组也强制删除组
更改组密码
组密码:gpasswd
常见选项:
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,… 设置有管理权限的用户列表
临时切换主组
newgrp命令可以临时切换主组, 如果用户本不属于此组,则需要组密码
更改和查看组成员
groupmems可以管理组成员关系
常见选项:
-g, --group groupname 更改为指定组 (只有root)
actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups 可查看用户组关系
新建文件和目录的默认权限
umask的值可以用来保留在创建文件权限
实现方式:
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶
数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
查看umask
umask
#模式方式显示
umask –S
#输出可被调用
umask –p
修改umask
umask #
持久保存umask
全局设置: /etc/bashrc
用户设置:~/.bashrc
Linux文件系统上的特殊权限
前面介绍了三种常见的权限:r, w, x 还有三种特殊权限:SUID, SGID, Sticky
特殊权限SUID
安全上下文
前提:进程有属主和属组;文件有属主和属组
- 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
- 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
- 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
© 应用文件“其它”权限
二进制的可执行文件上SUID权限功能:
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为原程序文件的属主
SUID只对二进制可执行程序有效
SUID设置在目录上无意义
特殊权限SGID
二进制的可执行文件上SGID权限功能:
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属组为原程序文件的属组
目录上的SGID权限功能:
默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有
写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录
特殊权限 Sticky 位
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
设定文件特殊属性
设置文件的特殊属性,可以访问root 用户误操作删除或修改文件
不能删除,改名,更改
chattr +i
只能追加内容
chattr +a
显示特定属性
lsattr
访问控制列表
ACL权限功能
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
所有者,自定义用户,所属组|自定义组,其他人
ACL相关命令
setfacl 可以设置ACL权限
getfacl 可查看设置的ACL权限
mask 权限
mask只影响除所有者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effffective Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效