1.1 怎么管理文件
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的指定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
- chown (change ownerp) : 修改所属用户与组。
- chmod (change mode) : 修改用户的权限。
下图中通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。
::: hljs-center
:::
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 # 用户和用户组一致