修改权限为 -rwxr-xr-x

Ric*_*ich 10 permissions chmod

我需要一些家庭作业问题的帮助来修改文件的权限。它想要它-rwxr-xr-x吗?不知道如何使用户权限。谢谢你。

Geo*_*sen 25

让我们分析你的作业:-rwxr-xr-x,将它们分成三个部分-rwx|r-x|r-x

  1. rwx: 为用户或所有者读取、写入和执行
  2. r-x: 读取,不写入,并为组成员执行
  3. r-x: 和 in 一样,2但这次对每个其他人又名others

不,您需要使用更改权限程序运行命令,chmod如下所示:

chmod 755 filename
Run Code Online (Sandbox Code Playgroud)

解释:

现在您必须拥有该文件或文件夹才能执行此操作或加入 sudo 组。


Per*_*uck 13

还有一个更“健谈”的版本来设置权限:

 chmod u=rwx,g=rx,o=rx filename
Run Code Online (Sandbox Code Playgroud)

这意味着:

  • 授予用户 ( u=)rwx权限,以及
  • 授予组 ( g=)rx权限,以及
  • 授予其他人 ( o=)rx权限。

您可以省略不想更改的部分,例如:

 chmod u=rwx filename
Run Code Online (Sandbox Code Playgroud)

将设置用户的权限并保留其他人的权限。

您甚至可以“添加”或“减去”权限:

 chmod g-x filename
Run Code Online (Sandbox Code Playgroud)

将删除该组的x权限,并且

chmod o+w filename
Run Code Online (Sandbox Code Playgroud)

将为其他人添加写入权限。

要设置 SUID、SGID 和粘滞位,请使用st权限:

  • chmod u+s filename -- 设置 SUID
  • chmod g+s filename -- 设置SGID
  • chmod a+t filename-套粘位(a意为“所有”,即ugo


Zan*_*nna 6

强制性序言

修改系统中重要文件和目录的权限会严重破坏系统。如果您发现重新安装系统或从实时会话中检索数据不方便,请确保您安全地试验权限和所有权。在您学习文件系统和基本命令的方法时,您应该避免在 root shell 中运行chmodchown使用sudo或在 root shell 中运行。这样,权限错误会让您知道您可能正在做一些有风险的事情,您应该再次检查该命令。

我们使用chmod. 这个命令有一个递归标志-R。这个标志经常被不必要地使用,而且很少有用,因为我们通常不希望目录与其中的文件具有相同的权限。目录需要执行权限才能进入,所以没有它就没有用,而文件只有在它们是程序时才需要执行权限。没有-R标志,chmod只能造成有限的和可修复的损坏,但有了这个标志,-R你可以在一个命令中把你的系统弄得一团糟。如果您正在使用-R,请考虑您是否真的需要它,并检查文件路径是否有拼写错误。


您被要求提供文件的模式是常见的

-rwxr-xr-x
Run Code Online (Sandbox Code Playgroud)

前导破折号表示这是一个常规文件。x三处的位表示它需要可由任何用户执行。因此,这种模式适用于任何人都可以执行的程序。您系统上的大多数程序都有这种模式下,你可以通过检查文件中看到/usr/bin/bin等等(我将解释如何在这个答案后检查的权限)。只有所有者 root 才能写入(修改)这些文件,这对于安全性很重要,因此您运行的程序不会被没有 root 权限的用户意外(或以其他方式)更改。

正如George Udosen 的回答中所指出,权限位是为用户(文件的所有者)、组和其他人分别设置的。例如,这在我们的标签 wiki 中chmod以及互联网上的许多其他地方,甚至在您的系统上都有解释;你可以通过运行阅读它man chmod。您已被要求使该文件的所有者可读、可写和可执行,并对其组和其他人可读和可写。您可以通过运行查看文件的所有者和组ls -ld file-d仅当它是目录时才需要;如果没有该标志,则ls显示目录的内容而不是目录本身),或者如果您想要更少的不相关信息,请使用stat

stat -c '%U %G' file
Run Code Online (Sandbox Code Playgroud)

-c表示控制输出。%U= 文件所有者,%G= 组。file应替换为要检查其元数据的文件的路径。如果它在当前目录中,它的名称就足够了,但您可以为其他地方的文件指定路径:

$ stat -c '%U %G' /var/log/syslog
syslog adm
Run Code Online (Sandbox Code Playgroud)

stat命令还可以以八进制和“人类可读”的形式显示文件权限:

stat -c '%n %a %A' *
Run Code Online (Sandbox Code Playgroud)

(我曾经%n显示文件名,并在当前目录中的每个非隐藏文件上*运行stat。)

如果您忘记了特定八进制数代表的权限位,这提供了一个非常有用的参考chmod,尽管vidarlo 的答案提供了一种很好的方式来回忆它们。

我强烈建议您在更改之前检查您关心的任何文件的权限,因为除了手动设置之外,您将无法“重置”原始模式。

其他答案解释了如何以八进制表示法设置所需的文件模式。chmod接受符号表示法和八进制的文件模式,当您只想修改一个权限位(该rwxr-xr-x字符串中的一个字母)时,这很有用。Perl Duck 的回答解释了如何设置您想要的模式。

当我创建一个脚本并希望使其可执行时,这是我使用 的主要原因chmod,我使用符号表示法为自己授予执行权限并且不进行其他更改,使用以下命令:

chmod u+x file
Run Code Online (Sandbox Code Playgroud)

如果脚本需要所有用户都可以执行,我会在没有u以下内容的情况下运行:

chmod +x file
Run Code Online (Sandbox Code Playgroud)

在您当前的情况下,这可能就足够了,因为默认情况下创建的文件通常具有允许所有者读取和写入的权限,并且仅对组和其他人可读,但也可能是在创建时具有组的写入权限。这取决于umask用户在创建文件时的设置。让我们创建一个文件并查看它!

$ touch somefile
$ stat -c '%a %A' somefile 
664 -rw-rw-r--
Run Code Online (Sandbox Code Playgroud)

好的。因此,要获得模式,755我需要w从该g部分中删除该位,并在x各处添加该位。

在符号表示法中,我可以这样做:

$ chmod +x,g-w somefile 
$ stat -c '%a %A' somefile 
755 -rwxr-xr-x
Run Code Online (Sandbox Code Playgroud)

写另一种方式+xchmoda+xa代表所有,如果没有给出字母,则假定为所有。需要注意的重要事项:u代表user,即所有者,而o代表其他人(不是所有者)。

您还可以为a u go使用=符号设置所有位。这是我玩弄无用的权限设置:

$ chmod =x somefile 
$ stat -c '%a %A' somefile 
111 ---x--x--x
$ chmod u=r,g=rwx,o= somefile 
$ stat -c '%a %A' somefile 
470 -r--rwx---
Run Code Online (Sandbox Code Playgroud)

您可以使用八进制和符号表示法来添加特殊位,例如 setuid(这允许以所有者身份运行程序,因此很危险)和 setgid(这会导致在具有 setgid 的目录中创建的文件随后继承该目录的组所有权,即很有用,因为它允许您在某个文件系统位置控制一组用户的权限,而不必经常摆弄它)。

有些人喜欢八进制符号,有些人喜欢符号。后者更灵活一些,对于某些人来说可能更直观一些。我建议测试和学习两者(安全!),这样你就可以弄清楚chmod当你看到任何命令时会做什么,并用天赋解决任何关于它的家庭作业问题:)

TL; 博士

  • 小心chmod. sudo chmod除非您知道自己在做什么,否则不要使用。使用-R标志前请仔细考虑。
  • 首先查看现有权限。stat是你的朋友
  • 学习符号和八进制符号。


vid*_*rlo 4

我发现最容易想到八进制权限:

  • 1 等于执行
  • 2 等于写入
  • 4 等于读取

这可以很容易地看出按位设置:

r w x
0 0 1 #Execute = 1
0 1 0 #Write = 2
1 0 0 #Read = 4
1 0 1 #Read + Execute = 5
1 1 0 #Read + Write = 6
1 1 1 #All permissions = 7
Run Code Online (Sandbox Code Playgroud)

这些都可以添加。读取和执行是4+1=5。读取、执行和写入为 7 (4+2+1),仅写入为 2,依此类推。

权限由三位数字组成:用户、组和其他。对于第一个数字,用户的 rwx 变为 7(完全权限)。组的 rx 变为 1+4=5,其他的 rx 变为 5。因此,这等于权限 755。