5_ 用户身份与文件权限(RHEL7)–学习笔记
5.1 #用户身份与能力
#useradd [选项] 用户名 # 用于创建新的用户
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为 YYYY-MM-DD.
-u 指定该用户的默认 UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认 Shell 解释器
#默认的 Shell 解释器为/bin/bash
useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)
#gid:基本用户组 #groups:扩展用户组,可多个
#groupadd [选项] 群组名 # 用于创建用户组
groupadd ronny
#usermod [选项] 用户名 # 用于修改用户的属性
-c 填写用户账户的备注信息
-d -m 参数-m 与参数-d 连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为 YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的 UID
/etc/passwd 用户的信息保存在文件中,直接用文本编辑器来修改其中的用户参数项目
usermod -G root linuxprobe
usermod -u 8888 linuxprobe
usermod -g ronny linuxprobe
#passwd [选项] [用户名] # 用于修改用户密码、过期时间、认证信息
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
–stdin
允许通过标准输入修改用户密码,如 echo “NewPassWord” | passwd --stdin
Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
/etc/shadow 用户密码保存在/etc/shadow 文件中
passwd #修改密码
passwd -l linuxprobe
passwd -S linuxprobe
passwd -u linuxprobe
#userdel [选项] 用户名 # 用于删除用户
-f 强制删除用户
-r 同时删除用户及用户家目录
userdel -r linuxprobe
5.2 #文件权限与归属
-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。
c:字符设备文件。
p:管道文件。
-r w x r w x r w x
-4 2 1 4 2 1 4 2 1
文件所有者 所属组 其他用户
5.3 # 文件的特殊权限
#chmod[参数] 权限 文件或目录名称 #设置文件或目录的权限
chmod -Rf 777 testdir/
chmod -Rf u+s testdir/ #SUIT
chmod -Rf g+s testdir/ #SGID
chmod -Rf g-s testdir/
chmod -R o+t linux/ #SBIT
chmod -R o-t linux/
chmod 760 test
#chown [参数] 所有者:所属组 文件或目录名称 # 设置文件或目录的所有者和所属组
# -R 来表示递归操作,对目录内所有的文件进行整体操作
chown root:bin test
ls -l test
-rwxrw----. 1 root bin 15 Feb 11 11:50 test
#所有者 #所属组
424 422 421
- rwS rws rwT
7 6 7 6
#SUID # 让二进制程序的执行者临时拥有属主的权限
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 29 2017 /bin/passwd
-rws
-rwS #原先权限位上没有 x 执行权限
#SGID # 让执行者临时拥有属组的权限
# 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
# 执行程序的用户获取到文件所属组的权限
# 在目录上设置 SGID 特殊权限位,在里面创建的文件会归属于该目录的所属组
ls -ald testdir/
drwx rws rwx. 2 root root 6 Feb 11 11:50 testdir/
#SBIT # 可确保用户只能删除自己的文件,而不能删除其他用户的文件
ls -ald /tmp
d rwx rwx rwt. 17 root root 4096 Feb 11 13:03 /tmp
--- --- rwT #原本没有 x 执行权限则会被写成 T
5.4 # 文件的隐藏属性
#chattr [参数] 文件 +参数 -参数 # 用于设置文件的隐藏权限
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用 dump 命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
X 可以直接访问压缩文件中的内容
chattr +a linuxprobe
chattr +i linuxprobe
#lsattr [参数] 文件 # 用于显示文件的隐藏权限
lsattr linuxprobe
-----a---------- linuxprobe
5.5 # 文件访问控制列表
ACL # 对某个指定的用户进行单独的权限控制
setfacl [参数] 文件名称
针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制
-R 针对目录文件需要使用-R 递归参数
-m 针对普通文件则使用-m 参数
-b 删除某个文件的 ACL,则可以使用-b 参数
setfacl -Rm u:linuxprobe:rwx /root
ls -ld /root
d r-x rwx --- + 14 root root 4096 May 4 2017 /root
# + (.)变成了加号(+)
getfacl 文件名称 # 用于显示文件上设置的 ACL 信息
getfacl /root
ALL
chmod -Rf 777 testdir/
chmod -Rf u+s testdir/ #SUIT
chmod -Rf g+s testdir/ #SGID
chmod -Rf g-s testdir/
chmod -R o+t linux/ #SBIT
chmod -R o-t linux/
chmod 760 test
chown root:bin test
chattr +a linuxprobe
chattr +i linuxprobe
lsattr linuxprobe
setfacl -Rm u:linuxprobe:rwx /root
getfacl /root
5.6 #su 命令与 sudo 服务
su - linuxprobe # 减号(-),完全切换到新的用户
sudo [参数] 命令名称
给普通用户提供额外的权限来完成原本 root 管理员才能完成的任务
-h 列出帮助信息
-l 列出当前用户可执行的命令
-u 用户名或 UID 值 以指定的用户身份执行命令
-k 清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证
-b 在后台执行指定的命令
-p 更改询问密码的提示语
visudo
96 ##
97 ## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
99 linuxprobe ALL=(ALL) ALL
# 谁可以使用 #允许使用的主机 #可执行命令的列表
99 linuxprobe ALL=(ALL) /usr/bin/cat
99 linuxprobe ALL=NOPASSWD: /usr/sbin/poweroff
sudo -l
sudo ls /root
sudo cat /etc/shadow