Ric*_*ich 10 permissions chmod
我需要一些家庭作业问题的帮助来修改文件的权限。它想要它-rwxr-xr-x吗?不知道如何使用户权限。谢谢你。
Geo*_*sen 25
让我们分析你的作业:-rwxr-xr-x,将它们分成三个部分-rwx|r-x|r-x:
rwx: 为用户或所有者读取、写入和执行r-x: 读取,不写入,并为组成员执行r-x: 和 in 一样,2但这次对每个其他人又名others。不,您需要使用更改权限程序运行命令,chmod如下所示:
chmod 755 filename
Run Code Online (Sandbox Code Playgroud)
解释:
将权限更改为:
- user: 7 => r(4), w(2), x(1)
- group: 5 => r(4), -, x(1)
- others: r(4), -, x(1)
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 和粘滞位,请使用s和t权限:
chmod u+s filename -- 设置 SUIDchmod g+s filename -- 设置SGIDchmod a+t filename-套粘位(a意为“所有”,即u和g和o)强制性序言
修改系统中重要文件和目录的权限会严重破坏系统。如果您发现重新安装系统或从实时会话中检索数据不方便,请确保您安全地试验权限和所有权。在您学习文件系统和基本命令的方法时,您应该避免在 root shell 中运行chmod和chown使用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)
写另一种方式+x在chmod为a+x。a代表所有,如果没有给出字母,则假定为所有。需要注意的重要事项:u代表user,即所有者,而o代表其他人(不是所有者)。
您还可以为a u g或o使用=符号设置所有位。这是我玩弄无用的权限设置:
$ 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当你看到任何命令时会做什么,并用天赋解决任何关于它的家庭作业问题:)
chmod. sudo chmod除非您知道自己在做什么,否则不要使用。使用-R标志前请仔细考虑。stat是你的朋友我发现最容易想到八进制权限:
这可以很容易地看出按位设置:
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。
| 归档时间: |
|
| 查看次数: |
86428 次 |
| 最近记录: |