1.1 怎么管理文件

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的指定。

在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:

  • chown (change ownerp) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。

下图中通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。

::: hljs-center

chown.png

:::

1.2 文件权限

1.2.1 查看文件信息

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的权限以及文件所属的用户和组

其中除去开头的 - 字符后面的9位字符便是文件的权限

# ls -l /root
-rw-------

1.2.2 文件权限介绍

在Linux中,权限位共9个字符。去掉开头的文件类型,每3个相邻的字符位一组。前3位表示所属用户权限,中3位表示所属用户组权限,后3位表示其他用户权限。

1)常见的文件权限:

权限 数字权限 含义
r 4 read 代表可读权限
w 2 write 代表可写权限(删除目录下文件需要该权限)
x 1 execute 代表可执行权限
- 代表没有权限

2)特殊权限位

权限 含义
suid 让普通用户可以以root或其他的用户角色运行只有root或其他账号才能运行的命令或程序
sgid 执行命令的用户可以获得该程序执行期间所属组的权限
sticky 可以往里面放内容但是却不能对这个目录进行操作

1.3 chmod 修改文件权限

参数:

参数 含义
u (user) 用户位
g (group)用户组位
o (other)其他用户位
a (all)所有用户位,默认为对所有用户位修改
- 减少权限
+ 增加权限
= 赋予新的权限

1.3.1 增加权限

1)对用户位修改

# 以字符的方式
chmod u+r oldboy01.txt
chmod u+rwx oldboy02

# 以数字的方式
# 使用数字增加多个权限时,将对应数字相加即可
chmod u+4 oldboy01.txt
chmod u+7 oldboy02

2)对所有位修改

# 以字符的方式
chmod +r oldboy01.txt
chmod +rwx oldboy02

# 以数字的方式
# 在增加多个权限位时,一个数字代表一个权限位
chmod +444 oldboy01.txt
chmod +777 oldboy02

1.3.2 减少权限

1)对用户组位修改

# 以字符的方式
chmod g-r oldboy01.txt
chmod g-rwx oldboy02

# 以数字的方式
chmod g-4 oldboy01.txt
chmod g-7 oldboy02

2)对所有位修改

# 以字符的方式
chmod -r oldboy01.txt
chmod -rwx oldboy02

# 以数字的方式
chmod -444 oldboy01.txt
chmod -777 oldboy02

1.3.3 赋予新的权限

1)对其他用户位修改

# 以字符的方式
chmod o=r oldboy01.txt
chmod o=+rwx oldboy02
# 以数字的方式
# 使用数字增加多个权限时,将对应数字相加即可
chmod o=4 oldboy01.txt
chmod o=7 oldboy02

2)对所有位修改

# 以字符的方式
chmod =r oldboy01.txt
chmod =rwx oldboy02
# 以数字的方式
# 在增加多个权限位时,一个数字代表一个权限位
chmod =444 oldboy01.txt
chmod =777 oldboy02

1.4 chown 修改用户和用户组

参数:

参数 作用
-v 显示详细的处理信息
-R 处理指定目录以及其子目录下的所有文件

1.4.1 只修改文件

# 只修改用户
chown oldboy test.txt

# 只修改用户组 
chown .oldboy test.txt

# 同时修改用户和用户组
chown oldboy.root test.txt   # 用户和用户组不一致
chown oldboy.oldboy test.txt # 用户和用户组一致
chown oldboy. test.txt       # 用户和用户组一致

1.4.2 修改目录和目录下所有

# 只修改用户
chown -R oldboy /oldboyedu

# 只修改用户组 
chown -R .oldboy /oldboyedu

# 同时修改用户和用户组
chown -R oldboy.root /oldboyedu   # 用户和用户组不一致
chown -R oldboy.oldboy /oldboyedu # 用户和用户组一致
chown -R oldboy. /oldboyedu       # 用户和用户组一致