更改文件权限Linux

6

看起来我无法写入该文件,因为文件权限不允许

访问权限: (0644/-rw-r--r--) 用户 ID: ( 0/ root) 组 ID: ( 0/
root)

我如何更改文件权限以便能够进行写入操作?


在Linux中使用chmod命令更改文件权限。 - Rishit Sanmukhani
查看chmod命令的手册页。 - mathematician1975
我该如何更改它的所有者,使其不再由root用户拥有? - user3213561
请明确你的问题,@user3213561。chmod更改权限;chown更改所有权。 - fedorqui
7个回答

11

chmod

chmod命令用于更改文件或目录的权限。要使用它,您需要指定所需的权限设置以及要修改的文件或文件夹。有两种方法可以指定权限,但我只会教一种方法。

很容易将权限设置看作一系列位(这是计算机对它们的看法)。下面是它的工作原理:

rwx rwx rwx = 111 111 111

rw- rw- rw- = 110 110 110

rwx --- --- = 111 000 000

and so on...

rwx = 111 in binary = 7

rw- = 110 in binary = 6

r-x = 101 in binary = 5

r-- = 100 in binary = 4

777

(rwxrwxrwx) 权限没有限制,任何人都可以做任何事情。通常不是一个理想的设置。

755

(rwxr-xr-x) 文件的所有者可以读取、写入和执行该文件。其他所有用户只能读取和执行该文件。这个设置通常用于所有用户使用的程序。

700

(rwx------) 文件的所有者可以读取、写入和执行该文件。没有其他人有任何权限。这个设置对于只有所有者能够使用并且必须对其他人保密的程序非常有用。

666

(rw-rw-rw-) 所有用户都可以读取和写入该文件。

644

(rw-r--r--) 文件所有者可以读写文件,而其他所有用户只能读取文件。这是数据文件的常见设置,每个人都可以读取,但只有所有者可以更改。

600

(rw-------) 文件所有者可以读写文件。其他所有用户都没有权限。这是数据文件的常见设置,所有者希望保持私密。

目录权限

chmod 命令也可以用于控制目录的访问权限。在大多数方面,目录的权限方案与文件的权限方案相同。但是,执行权限以不同的方式使用。它提供了对文件列表和其他内容的访问控制。下面是一些有用的目录设置:

777

(rwxrwxrwx) 权限没有限制,任何人都可以列出文件、在目录中创建新文件和删除目录中的文件。通常不是一个好的设置。

755

(rwxr-xr-x) 目录所有者拥有完全访问权限。所有其他用户都可以列出目录,但不能创建或删除文件。这个设置通常用于希望与其他用户共享的目录。

700

(rwx------) 目录所有者拥有完全访问权限。没有其他人有任何权限。这个设置对于只有所有者能够使用并且必须对其他人保密的目录非常有用。


3

在终端上使用此命令

sudo chmod 777 fileName

授予所有访问权限(读取、写入、执行)。

如果您不需要执行访问权限,只需要读/写访问权限,则:

sudo chmod 666 fileName

通常,chmod命令采用以下格式:
chmod options permissions filename

如果没有指定选项,chmod会将文件的权限修改为由permissions指定的权限。 permissions定义了文件所有者(user)、拥有该文件的组的成员(group)以及其他任何人(others)的权限。有两种表示这些权限的方法:用符号(字母数字字符)或用八进制数字(0到7的数字)。
示例:
chmod 754 myfile

这里的数字7、5和4分别代表用户、组和其他人的权限,按照顺序排列。每个数字都是由数字4、2、1和0组合而成的:
- 4代表“读取”; - 2代表“写入”; - 1代表“执行”; - 0代表“无权限”。
所以,7是权限4+2+1(读取、写入和执行)的组合,5是4+0+1(读取、无写入和执行),4是4+0+0(读取、无写入和无执行)。
我想你已经明白了。要了解更多详细信息,请阅读chmodman页面(此页面)。

0

chmod命令为例;

chmod 755 filename

为什么是755?这使得它可执行,但可能并非必需。 - mathematician1975
@mathematician1975 这只是一个例子,需要哪种权限由 OP 自行决定。 - Arnab Nandy

0

要更改文件的所有者,请使用chown,例如:

chown <new user>[.<new group>] <file>

0

sudo chmod a+rwx path 对我有效


0

虽然这是一篇旧帖子,但也许仍有人会发现我的回答有用。

如果您想要给所有用户(或“除了所有者” - 意思是最后一位数字)访问权限,您可以运行以下命令:

 cd <path where you want to apply your changes>
 sudo find . -perm 750  -exec chmod 757 {} +;

它将查找所有权限为750(对于所有者用户读取+写入+执行/对于组所有者读取+执行/对于其他用户无)的文件,并通过仅更改最后一位数字,将相同的权限授予所有其他用户。(最后的7表示其他用户的读取+写入+执行权限)

当然,您可以使用不同的数字运行命令,但只需用第一个数字的值替换最后一个数字即可。例如,运行下一个命令以确保所有具有所有者的读取+写入+执行权限的文件都将具有相同的访问权限:

sudo find . -perm 700  -exec chmod 707 {} +;
sudo find . -perm 701  -exec chmod 707 {} +;
sudo find . -perm 702  -exec chmod 707 {} +;
sudo find . -perm 703  -exec chmod 707 {} +;
sudo find . -perm 704  -exec chmod 707 {} +;
sudo find . -perm 705  -exec chmod 707 {} +;
sudo find . -perm 706  -exec chmod 707 {} +;

如果你继续按照这种方式(每个组合的7xx都单独一行)进行,你最终将执行77条命令。这有点太多了……对吧?

幸运的是,可以有一个技巧。你可以在数字前面加上 "-",表示该文件“至少”具有该数字。例如,运行:

sudo find . -perm -775 

将返回所有权限为775、776和777的文件。 另一个例子是运行:

sudo find . -perm -770 

这将返回权限为770、771...777的文件。

在我们的情况下,我们只关心第一个数字,并且希望将最后一位数字更改为其值,因此可以使用以下内容:

sudo find . -perm 700  -exec chmod 777 {} +;

**> 这仅适用于所有者具有读取+写入+执行权限的文件。

如果您尝试使用600而不是700运行上述命令,请记住它还将返回具有权限6xx和7xx的文件。**


0

您可以使用以下命令单独更改文件夹的权限:

chmod 777 folder-name

如果您想同时更改其子目录的权限,请使用以下命令:
chmod -R folder-name

** 注意:chmod 777会给予该文件夹及其文件的所有访问权限


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接