权限管理


liunx中的特殊权限

set uid

## 总结:
1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属权限
2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是S
3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效
注意:suid极其危险,不信可以尝试对vim或者rm命令进行设定suid
## 授权方式
### 数字授权方式
chmod 4xxx 文件名
[root@moban ~]# ll -d 6.ttt 
-rw-r--r--. 1 root root 0 Apr 15 15:35 6.ttt
[root@moban ~]# chmod 4777 6.ttt 
[root@moban ~]# ll -d 6.ttt 
-rwsrwxrwx. 1 root root 0 Apr 15 15:35 6.ttt

## ugo方式
[root@moban ~]# chmod u-s 6.ttt 
[root@moban ~]# ll -d 6.ttt 
-rwxrwxrwx. 1 root root 0 Apr 15 15:35 6.ttt
s:代表该文件的属主权限位上,本身有x(执行)权限
S:代表该文件的属主权限位上,本身没有x(执行)权限

setgid

## 总结:
1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
sgid数字权限:2000
## 数字权限授权
chmod 2xxx 文件名
[root@moban ~]# ll -d 6.ttt 
-rwxrwxrwx. 1 root root 0 Apr 15 15:35 6.ttt
[root@moban ~]# chmod 2777 6.ttt 
[root@moban ~]# ll -d 6.ttt 
-rwxrwsrwx. 1 root root 0 Apr 15 15:35 6.ttt

## ugo方式
[root@moban ~]# chmod g-s 6.ttt 
[root@moban ~]# ll -d 6.ttt 
-rwxrwxrwx. 1 root root 0 Apr 15 15:35 6.ttt

s:代表该文件的属组权限位上,本身有x(执行)权限
S:代表该文件的属组权限位上,本身没有x(执行)权限

SBIT

## 总结:
1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件(root除外)。
2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T
3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此之
外其他用户都不允许删除该目录下的所有文件。
## 数字权限授权
chmod 1xxx 文件名
[root@moban ~]# chmod 1644 dir1
[root@moban ~]# chmod 1755 dir1
## ugo方式
[root@moban ~]# chmod o+t dir1
t:代表该文件的其他用户权限位上,本身有x(执行)权限
T:代表该文件的其他用户权限位上,本身没有x(执行)权限

chattr权限

选项 作业
-i 不可修改,(删除,移动,追加)
-a 只可以echo追加
## 语法
chatter 选项  文件        --------------- 增加文件安全
lsattr  文件             ---------------  查看所增加的chattr权限
## 总结
1.限制用户的修改,root也不行
[root@moban ~]# chattr +i 6.ttt       --------- 增加i权限
[root@moban ~]# lsattr 6.ttt 
----i----------- 6.ttt
[root@moban ~]# chattr +a 6.ttt       --------- 增加a权限
[root@moban ~]# lsattr 6.ttt 
----ia---------- 6.ttt
[root@moban ~]# chattr -ia 6.ttt      ---------减去ia权限
[root@moban ~]# lsattr 6.ttt 
---------------- 6.ttt

umask

系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但是umask表示要减
去的值,所以新目录文件的权限应该是777-022=755。至于文件的权限也依次类推:666-022=644

## 查看
[root@moban ~]# umask
0022

## 目录权限使用777-umask
## 文件权限使用666-umask -但是当umask出现奇数位时,需要在该位上得到结果后+1

## 条件
[root@localhost ~]# # 1.uid > 199
[root@localhost ~]# # 2.uid name = gid name
# UID大于199 并且 用户名和组名子一样 此时 : umask=002


# UID小于199时 此时 umask=022
# 用户名和组名不一样时 此时umask=022