问题一:查看用户属于那个组
[root@oldboy ~]# groups oldxu (用户名称)
oldxu : oldxu root adm
1.特殊权限
相比于一般权限不同的,文件出现一些特殊的标记符号,去达到一个一些特殊的命令使用。
特殊权限SUID 属主
特殊权限SGID 属组
特殊权限SBIT
打开/usr/bin
一般绿色的都是拥有执行权限的
红色的都是属主拥有特殊权限的
蓝色的都是权限打满,是软连接的
黄色的都是属组拥有的特殊权限
特殊权限的一个使用方式:
普通用户-->执行-->passwd命令时。
1.由于passwd命令拥有suid特殊权限(在命令属主权限的执行位变成一个s),
2.那么在整个命令执行的过程中,会以命令的属主身份去运行该命令。 <-- root
xiaolei -->运行 passwd 命令 ---> 却查看到该命令是属主身份root在运行 --->相当于普通用户是依托root身份 --> 来达到变更 /etc/shadow 密码信息
对于更换一个普通用户的 属主身份,来执行这个命令。得到的结果是:你可以去执行这个变更密码,但是你不是root,shadow这个文件,你没权限,所以就一直都改不成功
总结:/etc/shadow 这个文本本身是谁都无法修改的,但是root除外。此时xiaolei执行passwd 通过 特殊权限 借助的是root身份运行该命令。所以最终是由root去更新了/etc/shadow 文件,完成的密码修改。
suid使用环境:
默认情况下,所有的普通用户,都无法查看/etc/shadow,有没有办法能够让所有的普通用户都能查看/etc/shadow
方式1: chmod 004 /etc/shadow
给文件增加一个普通用户查看的权限
方式2: 为cat命令赋予一个 suid权限即可
两种添加方法
chmod u+s /usr/bin/cat
chmod 4755 /usr/bin/cat
两种减去方法
chmod u-s /usr/bin/cat
chmod 755 /usr/bin/cat
cat是实验总结:
给cat赋予了一个特殊权限,然后在访问每天权限的文件时候,使用特权,达到借用root的身份,完成查看。
特殊权限SGID: 组
表形式: 在文件属组权限上有显示一个s (红色标记)
s(有执行权限) S(没有执行权限)
和上边的属主是一个道理,只不过借助了属组的身份。来达到的普通用户的任务使用。
实现:
将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致。
使用sgid可以使得 “多个用户” 之间共享一个目录的所有文件变得简单。组里边的成员可以共享这个文件里边的内容,自由的修改和使用。
sgid 与组的-R 递归,是可以这样理解的,本文件里边的文件和目录都会变成当下组的名字,而数主则是谁创建的,就是谁的。
两种添加方法
chmod g+s
chmod 2755
两种减去方法
chmod g-s
chmod 755
特殊权限SBIT:
只针对目录:
目录一旦被赋予了粘滞位,除了 root 可以删除所有文件,普通用户对该目录就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。
[root@oldboy dtest]# ll -d /tmp/
drwxrwxrwt. 9 root root 202 3月 17 10:52 /tmp/
总结:就是你就是目录本身有删除的权限,但是因为粘滞位的存在,就算你们是一个组里的。你也只能删除自己创建的,别人创建的,你不允许删除。当然你的别人也动不了,
两种添加方法
chmod o+t /usr/bin/cat
chmod 1757 /usr/bin/cat
两种减去方法
chmod o-t /usr/bin/cat
chmod 777 /usr/bin/cat
chatrr
只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。
chattr [+-=] [选项] 文件或目录名
#选项:
+ 增加权限
- 减少权限
= 等于某个权限
# a:让文件或目录仅可追加内容
# i:不得任意更动文件或目录
实验
特殊的属性:权限有关
1.我希望创建一个文件,不允许被删除。包括root都不行。
2.我希望这个文件只能往里面追加数据。
hattr [+-=] [选项] 文件或目录名
#选项:
+ 增加权限
- 减少权限
= 等于某个权限
# a:让文件或目录仅可追加内容
总结:a属性一般作用于日志类文件,特别是 sudo 记录下来的日志 。(你删除不了,所以你的误操作我就能看到。)如果不想要,减去这个权限就行
i:不得任意更动文件或目录
配置一个文件,不能改,不能追加,不能删除
使用场景:/ etc/passwd 放用户信息的地方
如果加了权限,不能做任何事,那么如果有人侵入了你的电脑,也添加不了用户。也是一种安全保护。
默认权限UMASK:表示要减掉的权限
默认系统规定的权限, 目录 777 文件 666
问题:默认创建 普通用户 家目录 的权限,在哪个文件中控制的UMASK:
1.默认创建的用户家目录为啥是 700,是哪个文件控制的UMASK
[root@oldboy tmp]# vim /etc/login.defs
UMASK 077 #创建用户时,设定的UMASK为077
2.假设去创建一个用户那么如何计算这个家目录的权限呢?
777 - 077 = 700
[root@oldboy tmp]# ll -d /home/oldboy/
drwx------. 2 oldboy oldboy 62 3月 17 11:33 /home/oldboy/
3.如果我希望创建出来的目录权限是755,我该怎么做呢?
777 - 755 = 022 (将/etc/login.defs 中UMASK设置为022,那么我们的目录是不是在创建初就为755了)
[root@oldboy tmp]# ll -d /home/olgirl/
drwxr-xr-x. 2 olgirl olgirl 62 3月 17 11:36 /home/olgirl/
问题:默认情况下 root用户创建的文件权限,和普通用户创建的文件权限是不一样的
通过输入umask这个指令,发现,root用户是0022 。而普通用户是0002.
对于root:默认的文件就是666-022=644 rw,只需要读写)
默认的目录就是777-022-755 rwx,打满
对于普用:默认的文件就是666-002=664 r 能读取就行
默认的目录就是777-002-775 rx 能读和进入就行
当一个用户登陆系统时,会去加载一些环境变量,来初始化我们的工作目录。
而默认的0022 和0002 就是在 /etc/profile 中
公式:
if [ $UID -gt 199 ] && [ "/usr/bin/id -gn
" = "/usr/bin/id -un
" ]; then
umask 002 就是普用
else
umask 022 是root
fi
root: 0 UID没有大于199,那么 UMASK 初始化为 022
oldxu: 1000 UID大于199,并且,组名称和用户名称一致,所以条件成立,那么就讲你的UMASK初始化为 002
文件和目录的默认权限都是授UMASK控制,而UMASK是用户在登陆系统时,通过 /etc/profile 中的一个公式来进行的分别设定