修改权限为-rwxr-xr-x

修改权限为-rwxr-xr-x

我需要一些帮助来解决家庭作业问题,以修改文件的权限。它想要吗-rwxr-xr-x?不确定如何设置用户权限。谢谢。

答案1

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

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

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

chmod 755 filename

解释:

  • 将权限更改为:

    - user: 7 => r(4), w(2), x(1)
    - group: 5 => r(4), -, x(1)
    - others: r(4), -, x(1)
    

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

答案2

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

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

这意味着:

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

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

 chmod u=rwx filename

将设置用户的权限,其他权限保持不变。

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

 chmod g-x filename

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

chmod o+w filename

将为其他人添加写权限。

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

  • chmod u+s filename-- 设置 SUID
  • chmod g+s filename-- 设置 SGID
  • chmod a+t filename-- 设置粘滞位(a表示“全部”,即和u和)go

答案3

强制性序言

修改系统中重要文件和目录的权限可以把东西弄坏。如果您觉得重新安装系统或从实时会话中检索数据很不方便,请确保安全地尝试权限和所有权。在学习文件系统和基本命令时,您应该避免正在运行chmod并且chown使用sudo或在 root shell 中这样,权限错误就会让你知道你可能正在做一些有风险的事情,你应该再次检查该命令。

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


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

-rwxr-xr-x

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

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

stat -c '%U %G' file

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

$ stat -c '%U %G' /var/log/syslog
syslog adm

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

stat -c '%n %a %A' *

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

如果您忘记了某个八进制数代表的权限位chmod,这将为您提供非常有用的参考。vidarlo 的回答提供了一种很好的回忆方法。

我强烈建议您在更改您关心的文件的权限之前先检查它的权限,因为除了手动设置之外,您将没有其他方法可以“重置”原始模式。

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

当我创建一个脚本并想使其可执行时(这是我使用的主要原因)chmod,我使用符号表示法赋予自己执行权限并且不做任何其他更改,使用以下命令:

chmod u+x file

如果该脚本需要由所有用户执行,我将在不执行以下任一操作的情况下运行该脚本u

chmod +x file

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

$ touch somefile
$ stat -c '%a %A' somefile 
664 -rw-rw-r--

好的。因此,为了获得模式,755我需要wg部分中删除位,然后x在所有地方添加位。

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

$ chmod +x,g-w somefile 
$ stat -c '%a %A' somefile 
755 -rwxr-xr-x

另一种写法+x是。代表全部,如果没有给出字母,则默认为全部。需要注意的是:chmod代表用户,即所有者,而代表其他人 (a+xauo不是所有者)。

您还可以将所有位设置为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---

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

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

总结

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

答案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

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

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

相关内容