权限管理

权限概述

# 报错
Permission denied(权限不足)

## 权限和用户的关系

权限与属主属组关系图.jpg

r:读权限,read,4
w:写权限,write,2
x:执行权限,exec,1
-:没有权限,0

# 未学习今日命令时,使用awk提取数字权限
[root@localhost ~]# ll|tr 'rwx-' '4210'|awk -F '' 'NR==2{print $2+$3+$4,$5+$6+$7,$8+$9+$10}'
7 7 7


## 正规取出文件数字权限的命令
stat -c %a 文件名

例:
[ljy@localhost ~]$ stat -c %a /home/ljy
700

# 权限位
属主权限位:u          user
属组权限位:g          group
其他用户权限位:o       other

授权命令

chmod

# 语法
chmod 权限 文件名

# 授权方式
1.数字方式
ljy@localhost ~]$ ll
drwxrwxr-x. 2 ljy ljy  6 Mar 16 00:45 work
[ljy@localhost ~]$ stat -c %a work
775
[ljy@localhost ~]$ chmod 744 work
[ljy@localhost ~]$ ll
drwxr--r--. 2 ljy ljy  6 Mar 16 00:45 work
[ljy@localhost ~]$ stat -c %a work
744


2.权限位方式(ugo方式)
u:user用户权限
g:group用户权限
o:other其他用户权限
a:all所有权限位

+:加上后面指定的权限
-:减去后面指定的权限
=:等于后面指定的权限

[ljy@localhost ~]$ chmod u-r,g-r,o+w work
[ljy@localhost ~]$ ll
total 0
drwxrwxr-x. 2 ljy ljy 57 Mar 16 01:02 Music
d-wx--xrw-. 2 ljy ljy  6 Mar 16 00:45 work

# a可以省略
-rw-r--r--. 1 root root 3680 Mar 17 20:27 wenben
[root@localhost ~]# chmod -r wenben
--w-------. 1 root root 3680 Mar 17 20:27 wenben

权限对文件的影响

r 文件只能读取
w 任何编辑命令都可以写入
x 对于普通用户来说,还是做不了事情,只能配合r或者w使用

rw 可读可写,正常的使用vim编辑,但不能执行
rx 可读,可执行,但不能编辑
wx 不可读,可写,可执行
rwx 可读,可写,可执行

权限对目录的影响

# 目录在只有单权限的情况下啥都做不了
r 能看见目录下的文件,但看不了目录下文件的详细信息
w 啥也做不了
x 啥也做不了

rx 才能查看目录下的权限
wx 读取不了目录里的文件,但是创建文件/创建目录/删除目录/删除文件不能用*代替
rwx 啥都可以

修改文件的属主属组

# 修改属主和属组
chown

# 语法
chown 选项 xxx:xxx 参数
例:
chown ljy:ljy xxx
chown ljy.ljy xxx
chown -R ljy.ljy xxx

# 选项
-R 递归修改
chown -R ljy.ljy xxx
修改xxx及xxx中所有文件的属主与属组

# 只改属主
chown root xxx

# 只改属组
chown :root xxx

特殊权限

# 基本权限
r 读
w 写
x 执行
- 屁
问题1:

普通用户可不可以修改自己的密码?

可以

问题2:

/etc/shadow的权限

000

问题3:

为什么可以修改/etc/shadow的内容

-rwsr-xr-x. 1 root root 27832 Jun 10 2014 passwd

特殊权限1 SetUID

文件以文件属主的身份去运行

image.png

setuid特殊权限授权

代表数字:4000

chmod 4755 file
chmod u + s
chmod u = s

# 特性
如果原本没有x权限,授权为setuid,则s会是大写S
如果原本有x权限,授权为setuid,则会是小写s

## 为什么普通用户可以修改密码
1)使用了passwd命令
2)passwd命令文件在属主为上有个s权限 原本的x变成了s
3)s权限在属主位,又叫做setuid权限 setUID
#4)作用:普通用户在使用又setuid权限的文件或者命令的时候,会以该文件的属主身份去运行!

特殊权限2

setgid

代表数字:2000
# 授权方式
chmod 2755 directory

chmod g+s directory

# 特性
如果原本没有x权限,授权为setgid,则s会是大写S
如果原本有x权限,授权为setgid,则会是小写s

练习sgid:

创建三个用户,分别是 zls , oldboy , yourname 这些用户都属于 oldboyedu 组的成员。这些用户的密码

都是 123

[root@localhost ~]# id zls
uid=1083(zls) gid=1083(zls) groups=1083(zls),1086(oldboyedu)
[root@localhost ~]# id oldboy
uid=1084(oldboy) gid=1084(oldboy) groups=1084(oldboy),1086(oldboyedu)
[root@localhost ~]# id ljy1
uid=1085(ljy1) gid=1085(ljy1) groups=1085(ljy1),1086(oldboyedu)

[root@localhost ~]# passwd ljy1
Changing password for user ljy1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd oldboy
Changing password for user oldboy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd zls
Changing password for user zls.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

1.要求以上用户和组可以在 /home/oldboyedu 目录里访问,创建,删除文件

[root@localhost /home]# ll
drwx------. 2 oldboyedu oldboyedu  62 Mar 24 00:09 oldboyedu
[root@localhost /home]# chmod 770 oldboyedu
[root@localhost /home]# ll
drwxrwx---. 2 oldboyedu oldboyedu  62 Mar 24 00:09 oldboyedu

2.其他用户一律不允许访问该目录

[yl@localhost home]$ cat /home/oldboyedu/
cat: /home/oldboyedu/: Permission denied

3.在该目录下新建的文件会自动属于 oldboyedu 组拥有

[oldboy@localhost oldboyedu]$ ll
total 0
-rw-r--r--. 1 root   oldboyedu 0 Mar 24 01:11 1
-rw-rw-r--. 1 ljy1   oldboyedu 0 Mar 24 01:15 2
-rw-r--r--. 1 root   oldboyedu 0 Mar 24 01:14 3
-rw-rw-r--. 1 zls    oldboyedu 0 Mar 24 01:16 4
-rw-rw-r--. 1 oldboy oldboyedu 0 Mar 24 01:16 5

特殊权限3

sbit

展示
ll -d /tmp
drwxrwxrwt. 8 root root 127 Mar 23 16:44 .

作用

1 带有粘滞位的目录下的所有文件,谁都可以读,写
2.带有粘滞位的目录下的文件只有属主才能删除自己的文件,其他普通用户无法删除属主不是自己的文件
3.带有粘滞位的目录 只有root能删
## 授权方法
chmod o+t
chmod 1777 directory

sbit权限数字是1000

# 特性
如果原本有x权限 授权特殊sbit后 t
如果原本没有x权限 授权特殊sbit后 T