将文件的所有者权限复制到组权限


25

如何将文件的用户/所有者权限复制到其组权限?

例如,如果权限为755,我希望它们变为775。

澄清度:755-> 775 123-> 113 abc-> aac

如果我可以递归地对目录中的所有文件执行此操作,那么将有好处。

(也就是说,对于每个文件,所有者权限都将复制到组权限。每个文件可能具有不同的权限。)


我不太确定。您要更改目录/文件的权限,使组权限像所有者一样?如果是这样,则只需使用chmod即可。如果愿意,我可以在回答中为您提供更明确的示例。
Anarko_Bizounours 2011年

在您的答案中,它将所有文件更改为775。如果其中一个文件最初具有123权限怎么办?然后必须将其更改为113而不是775。我在问题(755)中使用的权限仅是示例,实际的权限可以是任何东西。我想以编程方式执行此操作。
安南

chmod之后的数字仅是数字许可。如果执行ls -l并获得452作为许可,则只需执行chmod 442 / you_directory /。我链接到我的答案的维基百科页面上(一切都很好)进行了解释。
Anarko_Bizounours 2011年

Answers:


54

您可以g=u用来使组权限与用户权限相同

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

递归地

chmod -R g=u *

或一些文件规格

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

文件模式手册页是你的朋友。


做的好方法!我每次xD都忘记了这个把戏
Anarko_Bizounours 2011年

从来没有听说过这个把戏!有用的一个。
skinp 2011年

g=u把戏为我节省了数小时的繁琐管理工作。+1 ;-)
Edurne Pascual

我的用户拥有一堆文件,我想与所有用户共享。所以我做到了chmod -R ag=u ${path_to_directory}
Trevor Boyd Smith,

2

正如人们所说,更改文件权限可能很危险。强大的力量伴随着巨大的责任,以及所有的什扎什。这是我的答案:

文件/ usr / bin / otog:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

用法示例:

find . -exec otog {} \;

使用stat获取数字权限,使用chmod更改权限。

PS:请参阅Iain的答案,以获得更好的方法!


1
不是$ {p:0:1} $ {p:0:1} $ {p:2:1}吗?
minaev 2011年

是的,你的权利。我也奇怪地工作了。
安南

有人请解释一下反对意见吗?
安南

不是我,但我想补偿。这是一个有效的解决方案。
minaev 2011年

1
我想说在脚本中使用危险命令比手动使用更为安全。在经过良好测试的脚本中,这是:)。另一方面,chmod这远非一个真正非常危险的命令。与相比rm,我的意思是,或rsync --delete其他。
minaev 2011年

1

首先,您需要列出您的权利。

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

要在数字权限中转换结果,请使用:R = 4,W = 2,X = 1。

因此,在这2个文件上的权限为755。

获得正确的权限后,必须使用chmod命令以所需的方式更改正确的权限:

chmod 775 /your_directory/

该命令只会更改目录的权限,而不会更改内部文件的权限。

如果您也想更改右侧,请执行以下命令:

chmod 775 /your_directory/ -fR

-fR将强制递归。(仅当您确定要应用的权限以及目录中的文件时,才使用它。)

如果只想更改file1的权限,则:

chmod 775 /your_directory/file1

饼干就这样崩溃了!

/!\请注意,滥用此命令可能会破坏您的所有OS权限并导致其故障。/!\

ps:查看那里以了解有关chmod的更多信息。

希望这会帮助你。


我已经对这个问题做了一些澄清。这些文件可能没有相同的所有者权限,因此,如果要使用chmod,必须有一种在将其传递给chmod之前提取所有者权限的方法?
安南

这很棘手,但是ls -l命令必须授予您许可权,但是格式为-rw-rw-r--。问题是您一定不要使用脚本来使用chmod!您必须首先获得文件的所有权限。然后chmod拥有该组的良好权限。我将编辑答案以显示一个示例。
Anarko_Bizounours 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.