linux命令chmod 777_chmod无法访问 没有那个文件或目录

2022-09-27 10:41:56 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

Linux的常用命令

    • 一、关于文件权限的基本理论知识
    • 二、关于文件权限的命令
      • (1)查看文件权限
      • (2)文件权限的基本知识
      • (3)关于修改权限的命令

一、关于文件权限的基本理论知识

一个Linux目录或者文件,都会有一个所有者所属组其他用户所有者是指文件的拥有者,而所属组指的是这个文件属于哪一个用户组。 例如:test的文件的所有者是user0,而test1文件的所有者是user1,那么user1很有可能是不能查看test文件的,相应地,user0也很有可能不能查看test1文件(之所以说的是可能,是因为user0和user1可能属于同一个用户组,而恰好这个用户组对这个两个文件有查看权限)。

二、关于文件权限的命令

(1)查看文件权限

想要了解文件权限的命令首先就得知道怎么查看文件的权限。 ls(list files的简写)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。 ls -l命令会列出文件类型、权限、所属者、文件大小等信息。(ls的其他命令不做扩展)

(2)文件权限的基本知识

看到上面的图片哪里是文件权限呢?下面对上面的图片进行进一步解读。


1、对于上面图片显示的一行行的内容解释如下图所示:

2、从上面的图片可以知道前面的内容就是权限,接下来进一步分析每个字符的含义。

看这个图有10个字符,第一个字符是文件类型,剩余的9个字符,每3个字符为一组其中,r 代表可读,w 代表可写,x 代表可执行,- 代表无此权限。 第一组的字符为所有者的权限,第二组的字符为所属组,第三组的字符为非本群组用户(即其他用户)的权限。

(3)关于修改权限的命令

注意:修改权限的命令要在超级用户(root)的状态下才可执行,所以需要使用su命令提前进入超级用户的用户下。chgrp(change group的简写)命令可以更改文件的所属组,格式为: chgrp [组名][文件名] 例如:下图我们修改了test目录的所属组权限由workhah所属组改成root所属组了。

直接使用chgrp命令只会修改目录本身的所属组,不会修改目录下文件的权限。chgrp -R [组名][文件名]可以实现修改目录并且同时修改子文件的权限(这种作用叫做级联更改)。


chown(change owner的简写)命令可以更改文件的所有者,其格式为:chown [用户名][文件名] 例如:下图我们修改了test目录的所属者权限由workhah所属组改成root所属者了。

同样的,跟chgrp类似,chown命令也只会修改目录本身的所属者,不会修改目录下文件的权限。chown -R [用户名][文件名]也是起到级联作用

chown -R [用户名] : [组名] [文件名]命令也是很常用的。不仅可以更改当前目录和子问题的所属者,而且可以更改它们的所属组。


chmod(change mode的简写)命令用于改变用户对文件/目录的读写执行权限,其格式为:chmod xyz 文件名(此处的xyz表示数字)。而这些数字是为了方便更改文件的权限,Linux使用数字代替rwx,具体规则为:r 等于4,w 等于2,x 等于1,- 等于0。 例如:rwxrwx- – – 用数字表示就是770,其具体算法为:rwx = 4 2 1 = 7,rwx = 4 2 1 = 7,- – – = 0 0 0 = 0。

下图把test目录的文件权限修改rwxrwx- – –


chmod命令还支持使用rwx的方式来设置权限。可以使用u、g和o分别表示所属者(user)、所属组(group)和其他用户(others)的属性,用a代表全部(all)。

例如:把test目录的所属者权限更改为只读r,把其他用户和所属组的权限更改为只读 r 和可执行 x。


另外也可以针对u、g、o和a,增加或者减少它们某个权限(读、写或执行)。 例如:把test目录的所属者、所属组和其他用户的权限都添加上可写 w 权限。


最后,对于chmod -R也是跟chown命令的-R选项一样,也表示级联更改。 在LInux系统中,一个目录的默认权限为755,一个文件的默认权权限为644。


umask命令用于更改文件的默认权限,其格式为:umask xxx(这里的xxx代表三个数字)。

代码语言:javascript复制
# umask
0022

看上面的图片,直接输入umask就会输入0022的预设值,接下来对着预设值进行解释。 首先我们要知道,若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(rw- rw- rw-);若用户建立目录,则预设所有权限均开放,即777(rwx rwx rwx)。umask显示出来的预设值(其中的后三位,最前面的0表示的是umask的数值是八进制的)代表的含义为以上两条规则中的默认值需要减掉的权限。 因此, 目录的权限为 rwxrwxrwx(777) - – – – -w- -w-(022) = rwxr-xr-x(755) 普通文件的权限为 rw-rw-rw-(666) - – – – -w- -w-(022) = rw-r- -r-x(644) 所以,创建的目录的默认权限为755,文件的默认权限为644。


需要转载请标明出处

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179249.html原文链接:https://javaforall.cn

0 人点赞