- Linux管理员教程
- 主页
- CentOS概述
- 基本的CentOS Linux命令
- 文件/文件夹管理
- 用户管理
- 配额管理
- Systemd服务启动和停止
- 使用systemctl进行资源管理
- 使用cgroups进行资源管理
- 进程管理
- 防火墙设置
- 在CentOS Linux中配置PHP
- 在CentOS Linux中设置Python
- 在CentOS Linux中配置Ruby
- 为CentOS Linux设置Perl
- 安装和配置Open LDAP
- 创建SSL证书
- 安装Apache Web服务器CentOS 7
- 在CentOS 7上设置MySQL
- 设置Postfix MTA和IMAP/POP3
- 安装匿名FTP
- 远程管理
- CentOS中的流量监控
- 日志管理
- 备份和恢复
- 系统更新
- Shell脚本
- 包管理
- 卷管理
- Linux管理员有用资源
- Linux管理员 - 快速指南
- Linux管理员 - 有用资源
- Linux管理员 - 讨论
Linux管理员 - 文件/文件夹管理
为了介绍CentOS Linux中目录和文件相关的权限,让我们看一下以下命令输出。
[centos@centosLocal etc]$ ls -ld /etc/yum* drwxr-xr-x. 6 root root 100 Dec 5 06:59 /etc/yum -rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d
注意 - 你将看到的三个主要对象类型是
"-" - 普通文件的短横线
"d" - 目录
"l" - 符号链接
我们将重点关注每个目录和文件的三个输出块 -
- drwxr-xr-x : root : root
- -rw-r--r-- : root : root
- drwxr-xr-x : root : root
现在让我们分解一下,以便更好地理解这些行 -
d | 表示对象类型为目录 |
rwx | 指示应用于所有者的目录权限 |
r-x | 指示应用于组的目录权限 |
r-x | 指示应用于世界的目录权限 |
root | 第一个实例,指示目录的所有者 |
root | 第二个实例,指示应用组权限的组 |
理解所有者、组和世界之间的区别非常重要。不理解这一点可能会对托管互联网服务的服务器产生重大影响。
在我们给出实际示例之前,让我们首先了解应用于目录和文件的权限。
请查看下表,然后继续操作。
八进制 | 符号 | 权限 | 目录 |
---|---|---|---|
1 | x | 执行 | 进入目录并访问文件 |
4 | r | 读取 | 列出目录中的文件 |
2 | w | 写入 | 删除或修改目录中的文件 |
注意 - 当文件应在目录中可读时,通常会应用读取和执行权限。否则,用户将难以使用这些文件。禁用写入将确保文件无法:重命名、删除、复制或修改权限。
将权限应用于目录和文件
应用权限时,需要理解两个概念 -
- 符号权限
- 八进制权限
本质上,两者相同,只是指代和分配文件权限的方式不同。有关快速指南,请学习并参考下表 -
读取 | 写入 | 执行 | |
---|---|---|---|
八进制 | 4 | 2 | 1 |
符号 | r | w | x |
使用八进制方法分配权限时,使用 3 字节数字,例如:760。数字 760 转换为:所有者:rwx;组:rw;其他(或世界)无权限。
另一种情况:733 将转换为:所有者:rwx;组:wx;其他:wx。
使用八进制方法设置权限有一个缺点。无法修改现有的权限集。只能重新分配对象的整个权限集。
现在你可能会想,总是重新分配权限有什么问题?想象一下大型目录结构,例如生产 Web 服务器上的/var/www/。我们希望递归地从所有目录的“其他”用户中删除w 或写入位。因此,强制只有在需要进行安全措施时才主动添加它。如果我们重新分配整个权限集,我们将删除分配给每个子目录的所有其他自定义权限。
因此,这将导致系统管理员和系统用户都出现问题。在某些时候,一个人(或多人)需要重新分配被重新分配每个目录和对象的整个权限集而清除的所有自定义权限。
在这种情况下,我们希望使用符号方法来修改权限 -
chmod -R o-w /var/www/
上述命令不会“覆盖权限”,而是修改当前的权限集。因此,请习惯使用最佳实践
- 仅使用八进制分配权限
- 使用符号修改权限集
CentOS 管理员必须熟练掌握八进制和符号权限,因为权限对于数据完整性和整个操作系统都非常重要。如果权限不正确,最终结果将是敏感数据和整个操作系统都将受到威胁。
解决了这个问题,让我们来看一些修改权限和对象所有者/成员的命令 -
- chmod
- chown
- chgrp
- umask
chmod:更改文件模式权限位
命令 | 操作 |
---|---|
-c | 类似于详细模式,但只会报告所做的更改 |
-v | 详细模式,输出每个请求的诊断信息 |
-R | 递归地将操作应用于文件和目录 |
chmod 将允许我们使用八进制或符号权限集更改目录和文件的权限。我们将使用它来修改我们的分配和上传目录。
chown:更改文件所有者和组
命令 | 操作 |
---|---|
-c | 类似于详细模式,但只会报告所做的更改 |
-v | 详细模式,输出每个请求的诊断信息 |
-R | 递归地将操作应用于文件和目录 |
chown 可以修改对象的所有者用户和组。但是,除非需要同时修改两者,否则通常使用chgrp 来处理组。
chgrp:更改文件或目录的组所有权
命令 | 操作 |
---|---|
-c | 类似于详细模式,但只会报告所做的更改 |
-v | 详细模式,输出每个请求的诊断信息 |
-R | 递归地将操作应用于文件和目录 |
chgrp 将更改组所有者为提供的组。
实际操作
让我们更改/var/www/students/ 中所有子目录的分配,以便拥有组为students 组。然后将students 的根目录分配给 professors 组。稍后,让 Terry Thomas 博士成为students 目录的所有者,因为他负责学校所有计算机科学学术事务。
正如我们所看到的,创建时,目录保持得很原始。
[root@centosLocal ~]# ls -ld /var/www/students/ drwxr-xr-x. 4 root root 40 Jan 9 22:03 /var/www/students/ [root@centosLocal ~]# ls -l /var/www/students/ total 0 drwxr-xr-x. 2 root root 6 Jan 9 22:03 assignments drwxr-xr-x. 2 root root 6 Jan 9 22:03 uploads [root@centosLocal ~]#
作为管理员,我们永远不想将我们的root 凭据交给任何人。但与此同时,我们需要允许用户能够完成他们的工作。因此,让我们允许 Terry Thomas 博士对文件结构进行更多控制,并限制学生可以执行的操作。
[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/ [root@centosLocal ~]# ls -ld /var/www/students/ drwxr-xr-x. 4 drterryt professors 40 Jan 9 22:03 /var/www/students/ [root@centosLocal ~]# ls -ls /var/www/students/ total 0 0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 assignments 0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 uploads [root@centosLocal ~]#
现在,每个目录和子目录的所有者都是drterryt,拥有组是professors。由于assignments 目录供学生提交作业,让我们取消students 组列出和修改文件的能力。
[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod 736 /var/www/students/assignments/ [root@centosLocal assignments]# ls -ld /var/www/students/assignments/ drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/ [root@centosLocal assignments]#
学生可以将作业复制到assignments 目录。但他们不能列出目录的内容、复制现有文件或修改assignments 目录中的文件。因此,它只允许学生提交已完成的作业。CentOS 文件系统将提供作业提交时间的日期戳。
作为assignments 目录的所有者 -
[drterryt@centosLocal assignments]$ whoami drterryt [drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/ [drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ total 4 -rw-r--r--. 1 adama students 0 Jan 9 23:14 myassign.txt -rw-r--r--. 1 tammyr students 16 Jan 9 23:18 terryt.txt [drterryt@centosLocal assignments]$
我们可以看到,目录所有者可以列出文件以及修改和删除文件。
umask 命令:提供创建文件和目录权限的默认模式
umask 是一个重要的命令,它提供创建文件和目录权限的默认模式。
umask 权限使用一元否定逻辑。
权限 | 操作 |
---|---|
0 | 读取、写入、执行 |
1 | 读取和写入 |
2 | 读取和执行 |
3 | 只读 |
4 | 读取和执行 |
5 | 只写 |
6 | 只执行 |
7 | 无权限 |
[adama@centosLocal umask_tests]$ ls -l ./ -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt [adama@centosLocal umask_tests]$ whoami adama [adama@centosLocal umask_tests]$ umask 0022 [adama@centosLocal umask_tests]$
现在,让我们更改当前用户的umask,并创建一个新文件和目录。
[adama@centosLocal umask_tests]$ umask 077 [adama@centosLocal umask_tests]$ touch mynewfile.txt [adama@centosLocal umask_tests]$ mkdir myNewDir [adama@centosLocal umask_tests]$ ls -l total 0 -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt drwx------. 2 adama students 6 Jan 10 00:35 myNewDir -rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt
正如我们所看到的,新创建的文件比以前更具限制性。
必须在以下位置更改用户的umask -
- /etc/profile
- ~/bashrc
[root@centosLocal centos]# su adama [adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$
通常,CentOS 中的默认umask 就可以了。当我们遇到0022 默认值的问题时,通常是不同部门的不同组需要协作完成项目时。
这就是系统管理员的作用,平衡 CentOS 操作系统的操作和设计。