用户身份与文件权限
1.管理员 root UID: 0
2. 系统用户 5/6 UID: 1-499
红帽7 UID 1-999
/sbin/nologin
3.普通用户 5/6 500-65535
7 1000-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
id xps # 查看用户信息
useradd
useradd -u 555 xps # 新建用户并指定uid
useradd -u ssbin/nologin xps # 指定终端
adduser
groupadd hhh # 新建用户组
usermod -G hhh xps # 基本组/扩展组
usermod -u 666 xps # 修改uid
groupdel hhh # 删除用户组
passwd xps # 重置密码
userdel xps # 删除用户(不删除home等)
userdel -r xps # 删除用户(信息全删除)
deluser
#修改name的话可以直接去 /etc/passwd修改
|
1
2
3
4
5
6
7
|
文件类型
➢ -:普通文件。
➢ d:目录文件。
➢ l:链接文件。
➢ b:块设备文件。
➢ c:字符设备文件。
➢ p:管道文件。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
r读4
w写2
x执行1
===============
chmod # 权限 格式为“chown [参数] 所有者:所属组 文件或目录名称” chown root:bin test
chown # 所有者,属性
-Rf # 强制的意思
chmod -Rf 777 test/
chmod -Rf g+s test/ # 并为该目录设置了 SGID 特殊权限位
chmod -R o+t linux/ # 设置sbit权限 保护位
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
1.**SUID** # 让程序执行者,临时获取程序所有者的身份(仅对拥有执行权限的二进制程序有效)
u+s 4
2.**SGID** # 让程序执行者,临时获取程序所有组的身份
让目录内的新建文件,集成目录所有组的名称
g+s 2
3.**SBIT** #让目录内的文件,**只能自己删除自己**的
RHEL 7 系统中的/tmp 作为一个共享文件的目录,默认已经设置了 SBIT 特殊权限位,因此除非是该目录的所有者,否则无法删除这里面的文件;
当目录被设置 SBIT 特殊权限位后,文件的其他人权限部分的 x 执行权限就会被替换成 t 或者 T,原本有 x 执行权限则会写成 t,原本没有 x 执行权限则会被写成 T
o+t 1
suid:
x 改变成 s 就意味着该文件被赋予了 SUID 权限。如果原本的权限是 rw-呢?如果原先权
限位上没有 x 执行权限,那么被赋予特殊权限后将变成大写的 S
s 证明原先有x
S 证明原先没有x
sgid:
s 证明原先有x
S 证明原先没有x
sbit:
对其他目录来设置 SBIT 特殊权限位,用 chmod 命令就可以了。对应的参数 o+t 代表设置 SBIT 粘滞位权限:
t 证明原先有
T 证明原先没有x
例如:
转换7654 # 7是特殊权限位, 654是一一般权限位
420 401 400
rw- r-x r--
7: = 4+2+1 三个都涉及了,所以要都加上 # S->之前没有x权限,s->之前有x权限,T->之前没有...
rwSrwsr-T
======
rwsr--rwT
rwxr--rw- 746
s=4,T=4
5746
======
r-Srws--T
5470
|
1
2
3
4
|
1.chattr 设置文件的隐藏权限,格式为“chattr [参数] 文件”
chattr +a /var/log/message
2. lsattr 显示文件的隐藏权限,格式为“lsattr [参数] 文件”
lsattr -d Desktop/ $ 查看目录的...
|
表 5-6 chattr 命令中用于隐藏权限的参数及其作用
参数 |
含义 |
i |
无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a |
仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
S |
文件内容在变更后立即同步到硬盘(sync) |
s |
彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域) |
A |
不再修改这个文件或目录的最后访问时间(atime) |
b |
不再修改文件或目录的存取时间 |
D |
检查压缩文件中的错误 |
d |
使用 dump 命令备份时忽略本文件/目录 |
c |
默认将文件或目录进行压缩 |
u |
当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t |
让文件系统支持尾部合并(tail-merging) |
X |
可以直接访问压缩文件中的内容 |
1
2
|
对某个指定的用户进行单独的权限控制
如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL
|
1
2
3
4
5
6
7
8
9
|
1.setfacl 命令
(针对目录文件需要使用-R 递归参数;
针对普通文件则使用-m 参数;
如果想要删除某个文件的 ACL,则可以使用-b 参数)
setfacl -Rm u:xps:rwx /root # -m 修改
setfacl -Rm g:xpsg:r-x /tmp
看到文件的权限最后一个点(.)变成了加号(+) ,这就意味着该文件已经设置了 ACL 了。
2.getfacl
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
su - xps
su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)
使用 sudo 命令把特定命令的执行权限赋予给指定用户(避免泄露 root 管理员密码)
**sudo 服务中的可用参数以及作用**
-h 列出帮助信息
-l 列出当前用户可执行的命
-u 用户名或 UID 值 以指定的用户身份执行命
-k 清空密码的有效时间,下
-b 在后台执行指定的命令
-p 更改询问密码的提示语
**sudo 命令具有如下功能:**
➢ 限制用户执行指定的命令:
➢ 记录用户执行的每一条命令;
➢ 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
➢ 验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。
使用 sudo 命令提供的 visudo 命令
来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改 sudoers 配置文件,还
可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。
(只有root才能使用visudo编辑所服务的配置文件)
在 sudo 命令的配置文件中,按照下
面的格式将第 99 行(大约)填写上指定的信息:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
xps ALL=(ALL) ALL
如果需要让某个用户只能使用 root 管理员的身份执行指定的命令,切记一定要给
出该命令的绝对路径,否则系统会识别不出来。
先使用 whereis 命令找出命令所对应
的保存路径,然后把配置文件第 99 行的用户权限参数修改成对应的路径即可
xps ALL=(ALL) /usr/bin/cat
加 NOPASSWD 参数,使得用户执行 sudo 命令时不再需要密码验证:
xps ALL=NOPASSWD: /usr/sbin/poweroff
|