要引入适用于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 | 表示应用于所有者的目录权限 |
rx | 表示应用于组的目录权限 |
rx | 表示目录权限已应用世界 |
roo t | 第一个实例,表示目录的所有者 |
root | 第二个实例,表示应用组权限的组 |
了解所有者,组和世界之间的区别非常重要.不理解这一点会对托管互联网服务的服务器产生重大影响.
在我们给出一个真实世界的例子之前,让我们先了解适用于目录的权限和文件.
请查看下表,然后继续说明.
Octal | 符号 | Perm. | 目录 |
---|---|---|---|
1 | x | 执行 | 输入目录和访问文件 |
2 | w | 写 | 删除或修改目录中的文件 |
4 | r | 读取 | 列出目录中的文件 |
注意 : 当文件应该可以在目录中读取时,通常应用读取和执行权限.否则,用户将难以使用这些文件.禁用写入将确保文件不能被重命名,删除,复制或修改权限.
申请权限时,有两个概念要理解 :
符号权限
八进制权限
从本质上讲,每个都是相同的,但引用和分配文件权限的方式不同.如需快速指南,请参阅下表 :
读 | 写 | 执行 | |
---|---|---|---|
八进制 | 4 | 2 | 1 |
符号 | r | w | x |
使用八进制方法分配权限时,请使用3字节数字,例如:760.数字760转换为:所有者:rwx;组:rw;其他(或世界)没有权限.
另一种情况:733会转换为:所有者:rwx;组:wx;其他:wx.
使用Octal方法的权限有一个缺点.无法修改现有权限集.只能重新分配对象的整个权限集.
现在您可能想知道,总是重新分配权限有什么问题?想象一下大型目录结构,例如生产Web服务器上的/var/www/.我们希望以递归方式取消其他所有目录上的 w 或写入位.因此,只有在安全措施需要时才强制主动添加.如果我们重新分配整个权限集,我们会删除分配给每个子目录的所有其他自定义权限.
因此,它将导致管理员和用户的问题系统.在某些时候,一个人(或多个人)需要通过为每个目录和对象重新分配整个权限集来重新分配所有被删除的自定义权限.
在这种情况下,我们希望使用Symbolic方法修改权限 :
chmod -R ow/var/www/
上述命令不会"覆盖权限",而是修改当前权限集.因此习惯使用最佳实践
仅限Octal分配权限
符号修改权限集
CentOS管理员必须精通 Octal 和 Symbolic 权限因为权限对于数据和整个操作系统的完整性很重要.如果权限不正确,最终结果将是敏感数据,整个操作系统将受到损害.
有了这个,我们来看一些修改权限的命令和对象所有者/会员 :
chmod
chown
chgrp
umask
chmod将允许我们使用 octal 或符号权限集更改目录和文件的权限.我们将使用它来修改我们的分配和上传目录.
命令 | Action |
---|---|
- c | 类似于详细信息,但只会报告所做的更改 |
- v | 详细,输出每个请求的诊断信息 |
- R | 递归地对文件和目录应用操作 |
命令动作- c赞详细,但只报告所做的更改- v详细,输出每个请求的诊断信息-R递归地对文件和目录应用操作
chown 可以修改拥有用户和对象组的两者.但是,除非需要同时修改两者,否则使用 chgrp 通常用于组.
命令 | 行动 |
---|---|
- 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 的所有者和拥有的团体是教授.由于分配目录是供学生转入分配的工作,让我们从学生组中删除列出和修改文件的能力./p>
[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 目录中的文件.因此,它只允许学生提交完成的作业. 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 权限使用一元,否定逻辑.
Permission | 操作 |
---|---|
0 | 读,写,执行 |
1 | 读写 |
2 | 读取并执行 |
3 | 只读 |
4 | 读取和执行 |
5 | 只写 |
6 | 仅执行 |
7 | 无权限 |
[adama @ centosLocal umask_tests] $ ls -l ./ -rw-r - r - . 1 adama学生0 Jan 10 00:27 myDir -rw-r - r--. 1 adama学生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 总计0 -rw-r - r--. 1 adama学生0 Jan 10 00:27 myDir -rw-r - r--. 1 adama学生0 Jan 10 00:27 myFile.txt drwx ------. 2 adama学生6 Jan 10 00:35 myNewDir -rw -------. 1 adama学生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操作系统的操作和设计.