2013-06-28 3 views
2

Как бы вы изменили разрешения для файла или в каталоге рекурсивно таким образом, чтобы групповые разрешения были скопированы на мировые разрешения без каких-либо изменений? Например, чтобы перейти из этого каталога списка:Как установить права на мир, чтобы они были такими же, как групповые разрешения?

drwxr-x--- 2 septi septi 4096 Jun 29 01:14 example.d 
-rw-r----- 1 septi septi 0 Jun 29 01:14 example.r 
-rwxr-x--- 1 septi septi 0 Jun 29 01:14 example.x 

... чтобы:

drwxr-xr-x 2 septi septi 4096 Jun 29 01:14 example.d 
-rw-r--r-- 1 septi septi 0 Jun 29 01:14 example.r 
-rwxr-xr-x 1 septi septi 0 Jun 29 01:14 example.x 

ответ

4

Из chmod(1) man page (соответствующие части добытых):

-R Изменить режимы иерархии файлов, внедренные в файлы вместо самих файлов.

И:

Символическое режим описывается следующей грамматикой:

who ::= a | u | g | o 
op  ::= + | - | = 
perm ::= r | s | t | w | x | X | u | g | o 

В who символы "u", "g", и " o "укажите пользователя, группу и другие части битов режима, соответственно. who символ a является эквивалентно ugo.

В perm символов представляют собой часть бит режима следующим образом:

g В группе бит прав доступа в исходном режиме файла.

Так что для вас:

chmod -R o=g * 

Пример:

$ ls -l 
total 0 
drwxr-x--- 2 carl staff 68 Jun 28 10:25 example.d 
-rw-r----- 1 carl staff 0 Jun 28 10:25 example.r 
-rwxr-x--- 1 carl staff 0 Jun 28 10:25 example.x 
$ chmod -R o=g * 
$ ls -l 
total 0 
drwxr-xr-x 2 carl staff 68 Jun 28 10:25 example.d 
-rw-r--r-- 1 carl staff 0 Jun 28 10:25 example.r 
-rwxr-xr-x 1 carl staff 0 Jun 28 10:25 example.x 
+3

Обратите внимание, что '*' исключает файлы и директории, имена которых начинаются с '.'. В зависимости от ваших требований вы можете предпочесть 'chmod -R o = g .' –

Смежные вопросы