Linux 修改文件权限
前面小节介绍了权限相关的知识,从这一小节开始我们将要开始学习权限相关的知识,如何给权限,之前小节介绍过 ls
命令展示出来的一些相关的信息,这里面就有和权限相关的信息。
在 Linux 系统中,有时候某些不能,只能拥有只读权限,某些需要读写权限,即可以读,又可以写,某些需要可执行权限,这个时候若的相关权限不正确,就可能报错业务出错,因此需要对权限进行。
1. Linux 权限值
在上述权限中的读、写、执行权限信息中,对应着二进制数值,对应关系如下表:
2. umask 命令
在 Linux 系统中创建新的或者目录的时候,它们都会有认的访问权限,umask 命令则可以这些认的访问权限。例如创建的认访问权限为 rw-rw-rw-(八进制值666)
,创建目录的认权限 rwxrwxrwx(八进制值777)
,而 umask 值则表明了需要从认权限中去掉哪些权限来成为最终的认权限值。
使用 umask
命令可以查看认的权限信息,命令如下:
umask
执行结果如下图:
如上图所示,当前或目录权限相关的是认值是 0022
,其中第一位 0
表示的是一项特殊安全权限,暂且不讨论。
后面三位 022
则和普通权限 rwx
有关,其中后三位中的第一位 0
表示创建者/所有者相关的权限,表示从权限去掉 0
对应的权限 ---(不变)
,后三位中的第二位 2
表示组相关的权限,表示从组权限去掉 2
对应的权限-w-(写权限)
,后三位中的第三位 2
表示和其他的权限有关,表示其他的权限去掉 2
对应的权限 -w-(写权限)
。
所以创建 的认八进制值
666(rw-rw-rw-)
去掉 022(----w--w-)
对应的相关权限之后为 644(rw-r--r--)
,创建 目录
的认八进制值 777(rwxrwxrwx)
去掉 022(----w--w-)
对应的相关权限之后为 755(rwxr-xr-x)
,下面通过示例来验证一下:
umasktouch testfilels -l testfilemkdir testdirls -l
执行结果如下图:
Tips:umask
命令展示出来表示从原来的认值的权限值,新建认的权限值是 666
,新建目录的权限值是 777
,umask
命令展示的值是个基础之上的。
若想要新建的有指定的初始认权限,可以使用 umask
命令,命令如下:
umask 226umask
执行结果如下图:
新建认的权限值是 666
,新建目录的权限值是 777
,226
表示个基础上-w--w-rw-
之后的权限。
3. chmod 命令
新建 newfile
,然后使用 chmod
命令权限,新建和权限命令如下:
touch newfilels -l newfilechmod 777 newfilels -l newfile
执行结果如下图:
3.2 目录权限
使用 chmod
命令目录的权限,目录权限命令如下:
ls -lchmod -R 755 studyls -l
执行结果如下图:
3.3 chmod 命令限定权限
chmod
命令可以已经存在的或目录的权限,可以分别它们的权限、组的权限、其他的权限,也可以上述全部的权限,下图表示 chmod
权限相关的操作:
下面以新增其他写权限为例,命令如下:
ls -l testfilechmod o+w testfilels -l testfile
执行结果如下图:
u
表示;
g
表示组;
o
表示其他;
a
表示全部。
+
表示在现有权限基础上权限;
-
表示在现有权限基础上移除权限;
=
表示在现有权限基础上设置成等号后的权限。
r
表示读权限;
w
表示写权限;
x
表示执行权限。
4. 小结
本小节介绍了或目录权限相关的命令,新建的权限认是 rw-rw-rw-
,新建目录权限认是 rwxrwxrwx
,使用 umask
命令可以对新建的或目录的权限某些特定的权限。还介绍了 chmod
命令直接配合八进制权限值或目录的权限,也可以使用限定符在原来权限基础上、移除、设定某些权限。