linux给目录赋访问权限_Linux中的文件权限Chmod命令:教你使用chmod更改文件和目录的访问权限...

在Linux操作系统中,通过文件权限、属性和所有权来管理对文件的访问,这可确保只有授权用户和进程才能访问文件和目录。本文介绍如何使用chmod命令更改文件和目录的访问权限。

Linux文件权限说明

在进一步说明之前,让我们解释一下基本的Linux权限模型。

在Linux中,每个文件都与一个所有者和一个组相关联,并为三个不同类别的用户分配了权限访问权限:

1、文件所有者。

2、小组成员。

3、其他人(其他人)。

可以使用chown和chgrp命令更改文件所有权。

有三种适用于每个类的文件权限类型:

1、读取权限。

2、写权限。

3、执行权限。

此概念允许你指定允许哪些用户读取文件,写入文件或执行文件。

可以使用ls命令查看文件权限:

ls -l filename.txt

第一个字符显示文件类型,它可以是常规文件(-),目录(d),符号链接(l)或任何其他特殊类型的文件。

接下来的九个字符代表文件权限,三个三元组各占三个字符,第一个三元组显示所有者权限,第二个三元组显示权限,最后一个三元组显示所有其他人权限,根据文件类型,权限可以具有不同的含义。

在上面的示例中(rw-r--r--)表示文件所有者具有读写权限(rw-),该组和其他人只具有读权限(r--)。

三个权限三元组中的每一个都可以由以下字符构成,并具有不同的效果,具体取决于它们是设置为文件还是目录。

1、权限对文件的影响,如下:

2、权限对目录的影响(文件夹)

在Linux中,目录是包含其他文件和目录的特殊类型的文件,如下:

使用chmod

chmod命令的一般形式采用以下形式:

chmod [OPTIONS] MODE FILE...

chmod命令允许你使用符号或数字模式或参考文件更改文件的权限,我们将在本文后面更详细地解释这些模式,该命令可以接受由空格分隔的一个或多个文件和/或目录作为参数。

只有root,文件所有者或具有sudo权限的用户才能更改文件的权限,使用chmod时要格外小心,尤其是在递归更改权限时。

一、符号(文本)方法

使用符号模式时chmod命令的语法具有以下格式:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

第一组标志([ugoa ...]),用户标志,定义哪些用户类对文件的权限发生了更改。

u - 文件所有者。

g  - 作为该组成员的用户。

o  - 所有其他用户。

a  - 所有用户,与ugo相同。

如果省略users标志,则默认值为a,并且umask设置的权限不受影响。

第二组标志([-+=]),操作标志,定义是否要删除,添加或设置权限:

-删除指定的权限。

+添加指定的权限。

=将当前权限更改为指定的权限,如果在=符号后未指定任何权限,则会删除指定用户类的所有权限。

权限(perms ...)可以使用零或一个或多个以下字母显式设置:r,w,x,X,s和t,将权限从一个用户类复制到另一个用户类时,请使用集u,g和o中的单个字母。

为多个用户类([,...])设置权限时,请使用逗号(不带空格)分隔符号模式。

以下是如何在符号模式下使用chmod命令的一些示例:

1、授予组成员读取文件的权限,但不要编写和执行它:

chmod g=r filename

2、删除所有用户的执行权限:

chmod a-x filename

3、拒绝删除其他用户的写入权限:

chmod -R o-w dirname

4、删除除文件所有者之外的所有用户的读取,写入和执行权限:

chmod og-rwx filename

5、使用以下形式也可以完成同样的事情:

chmod og= filename

6、为文件所有者授予读,写和执行权限,读取文件组的权限,对所有其他用户无权限:

chmod u=rwx,g=r,o= filename

7、将文件的所有者权限添加到文件组成员具有的权限:

chmod g+u filename

8、将粘滞位添加到给定目录:

chmod o+t dirname

二、数值方法

使用numeric方法时chmod命令的语法具有以下格式:

chmod [OPTIONS] NUMBER FILE...

使用数字模式时,您可以同时为所有三个用户类(所有者,组和所有其他用户)设置权限。

NUMBER可以是3位或4位数字。

当使用3位数字时,第一个数字表示文件所有者的权限,第二个数字表示文件组的第二个数字,最后一个数字表示所有其他用户的权限。

每个写入,读取和执行权限都具有以下数字值:

r(读)= 4

w(读)= 2

x(读)= 1

没有权限= 0

特定用户类的权限编号由该组权限值的总和表示。

要在数字模式下查找文件的权限,只需计算所有用户类的总计,例如,要为文件所有者提供读取,写入和执行权限,读取和执行文件组的权限,并且只读取对以下所有其他用户的权限:

Owner: rwx=4+2+1=7

Group: r-x=4+0+1=5

Others: r-x=4+0+0=4

使用上面的方法,我们得到数字754,它代表所需的权限。

要设置setuid,setgid和sticky bit标志,请使用四位数字。

使用4位数时,第一个数字具有以下含义:

setuid=4

setgid=2

sticky=1

no changes = 0

接下来的三位数字与使用3位数字时的含义相同。

如果第一个数字是0,则可以省略,并且模式可以用3个数字表示,数字模式0755与755相同。

要计算数值模式,你还可以使用另一种方法(二进制方法),但它稍微复杂一些,知道如何使用4,2和1计算数字模式对于大多数用户来说已经足够了。

可以使用stat命令以数字表示法检查文件的权限:

stat -c "%a" filename

644

以下是如何在数字模式下使用chmod命令的一些示例。

1、授予文件所有者读写权限,仅读取组成员和所有其他用户的权限:

chmod 644 dirname

2、为文件的所有者提供读取,写入和执行权限,读取和执行组成员的权限,并且不向所有其他用户授予权限:

chmod 750 dirname

3、赋予读取,写入和执行权限以及给定目录的粘性位:

chmod 1777 dirname

4、递归地为文件所有者设置读取,写入和执行权限,并且对给定目录中的所有其他用户没有权限:

chmod -R 700 dirname

三、使用参考文件

--reference = ref_file选项允许你将文件的权限设置为与指定的引用文件(ref_file)的权限相同:

chmod --reference=REF_FILE FILE

例如,以下命令将file1的权限分配给file2:

chmod --reference=file1 file2

四、递归更改文件的权限

要以递归方式操作给定目录下的所有文件和目录,请使用-R(--recursive)选项:

chmod -R MODE DIRECTORY

例如,要将/var/www目录下的所有文件和子目录的权限更改为755,你将使用:

chmod -R 755 /var/www

五、在符号链接上运行

符号链接始终具有777权限。

默认情况下,更改符号链接的权限时,chmod将更改链接指向的文件的权限:

chmod 755 symlink

有可能不是改变目标所有权,而是提示错误:cannot access ‘symlink’: Permission denied。

发生此错误是因为默认情况下,大多数Linux发行版上的符号链接都受到保护,你无法对目标文件进行操作,此选项在/proc/sys/fs/protected_symlinks中指定,1表示启用,0表示禁用,建议不要禁用符号链接保护。

六、批量更改文件权限

有时,你可能需要批量更改文件和目录权限。

最常见的情况是递归地将网站文件的权限更改为644,将目录的权限更改为755。

使用数字方法:

find /var/www/my_website -type d -exec chmod 755 {} \;

find /var/www/my_website -type f -exec chmod 644 {} \;

使用符号方法:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;

find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

find命令将搜索/var/www/my_website下的文件和目录,并将每个找到的文件和目录传递给chmod命令以设置权限。

结论

chmod命令更改文件的权限,可以使用符号或数字模式设置权限。关于它的使用,上面都已经做了详细的说明。

相关主题

你可能感兴趣的