Linux Admin – 文件/文件夹管理
Linux Admin – 文件/文件夹管理
要介绍适用于 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 : 根 : 根
- -rw-r–r– : 根 : 根
- drwxr-xr-x : 根 : 根
现在让我们分解一下,以更好地理解这些行 –
d | 表示对象类型是目录 |
rwx | 表示应用到所有者的目录权限 |
r-x | 表示应用于组的目录权限 |
r-x | 表示应用到世界的目录权限 |
root | 第一个实例,指示目录的所有者 |
root | 第二个实例,指示应用组权限的组 |
了解owner、group和world之间的区别很重要。不了解这一点可能会对托管 Internet 服务的服务器产生重大影响。
在给出实际示例之前,让我们首先了解适用于目录和文件的权限。
请查看下表,然后继续说明。
Octal | 象征性的 | 烫发。 | 目录 |
---|---|---|---|
1 | X | 执行 | 进入目录并访问文件 |
4 | r | 读 | 列出目录中的文件 |
2 | 瓦 | 写 | 删除或修改目录中的文件 |
注意– 当文件应该可以访问以在目录中读取时,通常应用读取和执行权限。否则,用户将难以处理这些文件。离开写入禁止将确保文件不能:重命名,删除,复制,或者已经修改权限。
对目录和文件应用权限
应用权限时,有两个概念需要理解 –
- 符号权限
- 八进制权限
本质上,每个都是相同的,但引用和分配文件权限的方式不同。如需快速指南,请研究并参考下表 –
读 | 写 | 执行 | |
---|---|---|---|
Octal | 4 | 2 | 1 |
Symbolic | r | 瓦 | X |
使用八进制方法分配权限时,请使用 3 字节数字,例如:760。数字 760 转换为:所有者:rwx;组:rw;其他(或世界)没有权限。
另一种情况:733 将转换为:所有者:rwx;组:wx; 其他:wx。
使用八进制方法的权限有一个缺点。无法修改现有权限集。只能重新分配对象的整个权限集。
现在您可能想知道,总是重新分配权限有什么问题?想象一个大型目录结构,例如生产网络服务器上的/var/www/。我们想递归地删除所有目录上的w或write 位以供其他人使用。因此,仅在安全措施需要时才强制主动添加它。如果我们重新分配整个权限集,我们将取消分配给每个子目录的所有其他自定义权限。
因此,它会给系统的管理员和用户带来问题。在某些时候,一个人(或多个人)需要重新分配所有通过为每个目录和对象重新分配整个权限集而被清除的自定义权限。
在这种情况下,我们希望使用 Symbolic 方法来修改权限 –
chmod -R o-w /var/www/
上面的命令不会“覆盖权限”,而是修改当前的权限集。所以习惯于使用最佳实践
- 八进制只分配权限
- 符号修改权限集
CentOS 管理员必须精通八进制和符号权限,因为权限对于数据和整个操作系统的完整性很重要。如果权限不正确,最终结果将是敏感数据,整个操作系统都会受到损害。
有了这些,让我们看看一些用于修改权限和对象所有者/成员的命令 –
- 修改
- chown
- chgrp
- 掩码
chmod :更改文件模式权限位
Command | 行动 |
---|---|
-c | 喜欢冗长,但只会报告所做的更改 |
-v | 详细,输出每个请求的诊断信息 |
-R | 递归地对文件和目录应用操作 |
chmod 将允许我们使用八进制或符号权限集更改目录和文件的权限。我们将使用它来修改我们的分配和上传目录。
chown :更改文件所有者和组
Command | 行动 |
---|---|
-c | 喜欢冗长,但只会报告所做的更改 |
-v | 详细,输出每个请求的诊断信息 |
-R | 递归地对文件和目录应用操作 |
chown可以修改拥有用户和对象组。但是,除非需要同时修改两者,否则通常将chgrp用于组。
chgrp :更改文件或目录的组所有权
Command | 行动 |
---|---|
-c | 喜欢冗长,但只会报告更改 |
-v | 详细,输出每个请求的诊断信息 |
-R | 递归地,应用对文件和目录的操作 |
chgrp 会将组所有者更改为提供的所有者。
现实世界的实践
让我们更改/var/www/students/ 中的所有子目录分配,因此拥有的组是学生组。然后将学生的根分配到教授组。稍后,让 Terry Thomas 博士成为学生目录的所有者,因为他的任务是负责学校所有的计算机科学学术界。
正如我们所见,在创建时,该目录非常原始。
[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和所属组是教授。由于作业目录是供学生上交分配的作业,让我们从学生组中删除列出和修改文件的功能。
[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]#
学生可以将作业复制到作业目录。但是他们不能列出目录的内容、复制当前文件或修改分配目录中的文件。因此,它只允许学生提交已完成的作业。CentOS 文件系统将提供一个日期标记,指示何时提交作业。
作为分配目录所有者 –
[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权限使用一元否定逻辑。
Permission | 手术 |
---|---|
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/配置文件
- 〜/bashrc
[root@centosLocal centos]# su adama [adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$
一般CentOS默认的umask就可以了。当我们遇到默认的0022 问题时,通常是当属于不同组的不同部门需要在项目上进行协作时。
这就是系统管理员的角色发挥作用的地方,以平衡 CentOS 操作系统的操作和设计。