## 需要掌握的内容
- 理解Linux文件系统权限
- 理解文件特殊权限SUID和SGID
- 掌握权限相关命令的用法:chown、chgrp、chmod
- 理解并掌握文件默认权限umask的用法
# 使用的设备
- CentOS 7
# 首先我们先认识linux系统下单文件属性
Linux系统下的文件属性共为10个字节
| 类型标识 | r | w | x | r | w | x | r | w | x |
格式如上
文件属性的第一个字母为类型标识,用来说文件的类型。在linux系统中,一共有其中文件类型,分为为:
- p表示命名管道文件
- d表示目录文件
- l表示符号连接文件
- -表示普通文件
- s表示socket套接口文件
- c表示字符设备文件,例如,虚拟控制台或tty0
- b表示块设备文件 例: sda, cdrom
如果用户没有对应权限则会使用“-”进行占位。
权限当中 “r” 代表读取权限 “w” 代表写入权限 “x” 代表执行权限
其中:
第一组“rwx”代表文件所有者的权限
第二组“rwx”代表文件所属组的权限
第三组“rwx”代表其他用户的权限
##只有root用户以及所属用户才有修改文件权限的权限
## 本章我们需要掌握的命令
- chown:修改文件的所有者
chown即change owner的意思,需要注意,用户必须存在于**/etc/passwd**,否则无法生效。chown甚至可以顺带把用户组名称改了,也可以连带目录下的所有子目录或文件同时更改文件拥有者。其语法如下:
chown [-R] 所有者名称 文件或目录
chown [-R] 所有者名称:用户组名称 文件或目录
- chgrp:修改文件所属组
chgrp即change group,但是需要注意,修改后的所属组,必须是事先存在于**/etc/group文件中,否则无法完成修改。另外,其执行命令的格式为:
chgrp users [-R] dirname/filename
-R 参数表示递归地修改组属性,表示连同目录及其下属文件和目录都进行更新成为此用户组。
- chmod:修改文件权限
命令格式:chmod [OPTION]… MODE[,MODE]… FILE/DIRECTORY…
OPTION选项:-R 递归地目录和文件的权限
MODE 模式:[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+
[ugoa]:
u:User,文件或目录的拥有者
g : Group 文件或目录的所属群组
o : Other 除了文件或目录所有者或群组之外的其他用户
a : All 全部的用户,包含所有者,群组及其他用户
[-+=]符号:
+添加权限
-取消权限
=指定权限
权限代号:
r:读取权限,数字代号为“4”
w:写入权限,数字代号为“2”
x:执行权限,数字代号为“1”
-:没有权限,数字代号为“0”
使用八进制(0-7)数字表示权限法:
| 权限 | 二进制值 | 八进制值 | 描述 |
| —- | 000 | 0 | 没有任何权限 |
| –x | 001 | 1 | 只有执行权限 |
| -w- | 010 | 2 | 只有写入权限 |
| -wx | 011 | 3 | 有写入和执行权限 |
| r– | 100 | 4 | 只有读取权限 |
| r-x | 101 | 5 | 有读取和执行权限 |
| rw- | 110 | 6 | 有读取和写入权限 |
| rwx | 111 | 7 | 有全部权限 |
简单记忆系统权限
简单来说只需要记住
首先是标识 创建者 工作组 其他人
读取 4(r) 写入 2(w) 执行 1(x) 无权 0(-)
记住是rwx不是RWS)
# 尝试操作
1.使用root用户登录系统,请为IT部创建用户it;创建两个用户liwen和wangjiaqi,并将他们加入附加组it;创建一个测试用户账户test01。查看UID和GID。
首先我们需要创建用户和组
[root@local ~]# groupadd IT [root@loacl ~]# useradd -g IT liwen [root@loacl ~]# useradd -g IT wangjiqi [root@loacl ~]# useradd -g IT test01 [root@loacl ~]# tail -5 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin admin:x:1000:1000:admin:/home/admin:/bin/bash liwen:x:1001:1001::/home/liwen:/bin/bash wangjiqi:x:1002:1001::/home/wangjiqi:/bin/bash test01:x:1003:1002::/home/test01:/bin/bash [root@loacl ~]# tail -5 /etc/group stapdev:x:158: tcpdump:x:72: admin:x:1000:admin IT:x:1001: test01:x:1002:
如上所示,我们可以查看passwd和group文件可以看到我们已经创建了
2.使用root用户登录系统,请创建/data/it目录,查看该目录权限;请在/data/it目录下创建两个文件liwen.txt和wangjiaqi.txt,并查看文件的权限信息。
我们这里先创建文件并查看下权限
[root@loacl ~]# mkdir -p /data/it [root@loacl ~]# ls -l /data/ total 0 drwxr-xr-x. 2 root root 6 Oct 17 10:57 it
可以看到这就是正常状态下用户创建完文件夹的状态,我们现在创建完里面的liwen.txt与wangjiaqi.txt之后再看一下
[root@loacl ~]# touch /data/it/liwen.txt /data/it/wangjiaqi.txt [root@loacl ~]# ls -l /data/it/ total 0 -rw-r--r--. 1 root root 0 Oct 17 11:03 liwen.txt -rw-r--r--. 1 root root 0 Oct 17 11:03 wangjiaqi.txt
我们可以看到正常文件创建完成之后,只有我们有读写权限别的用户都只有读取的权限。我们可以记下这点
3.使用root用户登录系统,请对/data/it/liwen.txt设置文件权限:用户liwen拥有完全控制权限,IT部其他用户只有读取和执行权限,其他人没有任何权限。
我们可以先想一下,我们现在需要李文有完全控制,但是同组的也要有读取权限和执行权限我们计算一下完整的权限是7但是同组的只需要读取和执行所以4+1=5 所以我们填入的命令应该问750
[root@loacl ~]# chmod 750 /data/it/liwen.txt [root@local ~]# ls -l /data/it/liwen.txt -rwxr-x---. 1 root root 0 Oct 17 11:03 /data/it/liwen.txt
我们使用chown进行更改所有者
我们把拥有者更改为李文,所属组改为IT组
[root@local ~]# chown liwen:IT /data/it/liwen.txt # 或使用命令 chown linwen.IT /data/it/liwen.txt # 又或者命令 chown liwen /data/it/liwen.txt # 然后用命令 chgrp IT /data/it/liwen.txt [root@loacl ~]# ls -l /data/it/liwen.txt -r-xr--r--. 1 liwen IT 0 Oct 17 11:03 /data/it/liwen.txt
4.使用root用户登录系统,请对/data/it/wangjiaqi.txt设置文件权限:用户wangjiaqi拥有完全控制权限,IT部其他用户只有读取权限,其他人没有任何权限。
跟上面一样但是我们需要考虑现在it部门其他用户只有r了,所以大差不差
[root@loacl ~]# chown wangjiqi:IT /data/it/wangjiaqi.txt [root@loacl ~]# ls -l /data/it/wangjiaqi.txt -rw-r--r--. 1 wangjiqi IT 0 Oct 17 11:03 /data/it/wangjiaqi.txt [root@loacl ~]# chmod 740 /data/it/wangjiaqi.txt [root@loacl ~]# ls -l /data/it/wangjiaqi.txt -rwxr-----. 1 wangjiqi IT 0 Oct 17 11:03 /data/it/wangjiaqi.txt
我们在这里试一下使用文字的方法
[root@loacl ~]# ls -l /data/it/wangjiaqi.txt -rwxr-x---. 1 wangjiqi IT 0 Oct 17 11:03 /data/it/wangjiaqi.txt
可以看到这样同样可以修改
5.使用root用户登录系统,请对/data/it目录设置权限,要求IT部用户拥有/dat/it目录的使用权(读取+写入+进入目录权限),但是不允许其他人进入该目录查看,并查看该目录的权限信息。
[root@loacl ~]# chgrp IT /data/it [root@loacl ~]# ls -l /data/ total 0 drwxr-xr-x. 2 root IT 44 Oct 17 11:03 it [root@local ~]# chmod 770 /data/it [root@local ~]# ls -l /data/ total 0 drwxrwx---. 2 root IT 44 Oct 17 11:03 it
6.切换到用户liwen,并进入到/data/it目录,请在该目录下创建一个文件share1.txt,查看文件权限信息。请切换用户到wangjiaqi,对/data/it/share1.txt进行权限测试:进入到/data/it目录,请向share1.txt文件中写入内容“This is a public document“,测试用户wangjiaqi是能够修改该文件?
李文账号
[liwen@local it]$ pwd /data/it [liwen@local it]$ touch share1.txt [liwen@local it]$ ls -l share1.txt -rw-rw-r--. 1 liwen IT 0 Oct 17 11:40 share1.txt
登录王佳琪账号
PS C:\Users\pc> ssh wangjiqi@192.168.32.128 wangjiqi@192.168.32.128's password: [wangjiqi@local ~]$ cd /data/it [wangjiqi@local it]$ ls liwen.txt share1.txt wangjiaqi.txt [wangjiqi@local it]$ ls -l share1.txt -rw-rw-r--. 1 liwen IT 0 Oct 17 11:40 share1.txt [wangjiqi@local it]$ nano share1.txt [wangjiqi@local it]$ cat share1.txt This is a public document [wangjiqi@local it]$