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 : 根 : 根
  • -rw-r--r-- : 根 : 根
  • drwxr-xr-x : 根 : 根

现在让我们分解一下,以更好地理解这些行 -

d 表示对象类型是目录
读写 表示应用于所有者的目录权限
接收 表示应用于组的目录权限
接收 表示应用于世界的目录权限
第一个实例,表示目录的所有者
第二个实例,表示应用组权限的组

理解所有者群体世界之间的区别很重要。不了解这一点可能会对托管互联网服务的服务器产生重大影响。

在给出实际示例之前,让我们首先了解适用于目录文件的权限。

请查看下表,然后继续执行说明。

八进制 象征性的 烫发。 目录
1 X 执行 进入目录并访问文件
4 r 列出目录中的文件
2 w 删除或修改目录下的文件

注意- 当文件应该可以在目录中读取时,通常会应用读取执行权限。否则,用户将难以处理这些文件。禁用写入将确保文件不能被:重命名、删除、复制或修改权限。

对目录和文件应用权限

应用权限时,有两个概念需要理解 -

  • 符号权限
  • 八进制权限

本质上,它们都是相同的,但引用和分配文件权限的方式不同。如需快速指南,请研究并参考下表 -

执行
八进制 4 2 1
象征性的 r w X

使用八进制方法分配权限时,请使用3字节数字,例如:760。数字760翻译为:所有者:rwx;组:RW;其他(或世界)没有权限。

另一种情况:733 将转换为:所有者:rwx;组:wx;其他:wx.

使用八进制方法的权限有一个缺点。无法修改现有权限集。只能重新分配对象的整个权限集。

现在您可能想知道,总是重新分配权限有什么问题吗?想象一个大型目录结构,例如生产 Web 服务器上的/var/www/ 。我们希望递归地去掉“其他”所有目录上的wwrite 位。因此,只有在安全措施需要时才强制主动添加它。如果我们重新分配整个权限集,我们就会取消分配给每个子目录的所有其他自定义权限。

因此,这会给系统的管理员和用户带来问题。在某些时候,一个人(或多个人)需要重新分配通过为每个目录和对象重新分配整个权限集而被清除的所有自定义权限。

在这种情况下,我们希望使用符号方法来修改权限 -

chmod -R o-w /var/www/

上述命令不会“覆盖权限”,而是修改当前权限集。所以要习惯使用最佳实践

  • 八进制仅用于分配权限
  • 象征性修改权限集

CentOS 管理员必须精通八进制符号权限,因为权限对于数据和整个操作系统的完整性很重要。如果权限不正确,最终结果将是敏感数据,并且整个操作系统将受到损害。

介绍完这些后,让我们看一些用于修改权限和对象所有者/成员的命令 -

  • chmod
  • 乔恩
  • chgrp
  • 掩码

chmod :更改文件模式权限位

命令 行动
-C 与 verbose 类似,但只会报告所做的更改
-v 详细,输出每个请求的诊断信息
-R 递归地对文件和目录应用操作

chmod 将允许我们使用八进制符号权限集更改目录和文件的权限。我们将使用它来修改我们的分配和上传目录。

chown :更改文件所有者和组

命令 行动
-C 与 verbose 类似,但只会报告所做的更改
-v 详细,输出每个请求的诊断信息
-R 递归地对文件和目录应用操作

chown可以修改拥有的用户和对象组。但是,除非需要同时修改两者,否则通常对组使用chgrp 。

chgrp :更改文件或目录的组所有权

命令 行动
-C 与 verbose 类似,但只会报告更改
-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 ~]#

作为管理员,我们永远不想将我们的凭据泄露给任何人。但与此同时,我们需要让用户能够完成他们的工作。因此,让我们让 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。由于作业目录是供学生提交作业的,因此我们取消学生组中列出和修改文件的功能。

[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权限使用一元否定逻辑。

允许 手术
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 操作系统的操作和设计。