Изменение разрешения для списка файлов в каталоге, отвечающих определенным условиям? - PullRequest
0 голосов
/ 01 октября 2019

В настоящее время я должен изменить разрешение для всех файлов, соответствующих критериям g = 000 (имеется в виду, что у группы нет разрешения на чтение, нет разрешения на запись и нет разрешения на выполнение), которые находятся в каталоге, содержащем ~ 50 файлов. Я с Linux и работаю на терминале, используя команду Shell.

Например, вот первые 6 (мое имя было заменено пользователем):

-r--r----- 1 user user 0 Sep 23 19:06 fichier_1
-r-x----r- 1 user user 0 Sep 23 19:06 fichier_10
-r--r----- 1 user user 0 Sep 23 19:06 fichier_11
-rwxr----- 1 user user 0 Sep 23 19:06 fichier_12
-r-x---r-- 1 user user 0 Sep 23 19:06 fichier_13
-rw---x--- 1 user user 0 Sep 23 19:06 fichier_14

Если они соответствуют критериям g = ---, им нужно иметь всеих «другие» разрешения также удалены, но пользовательские разрешения должны остаться прежними. В этом случае файлы теперь будут выглядеть следующим образом (2-й и 5-й файлы потеряли все «чужие» права):

 -r--r----- 1 user user 0 Sep 23 19:06 fichier_1
-r-x------ 1 user user 0 Sep 23 19:06 fichier_10
-r--r----- 1 user user 0 Sep 23 19:06 fichier_11
-rwxr----- 1 user user 0 Sep 23 19:06 fichier_12
-r-x------ 1 user user 0 Sep 23 19:06 fichier_13
-rw---x--- 1 user user 0 Sep 23 19:06 fichier_14

Мне нужно использовать только 1 команду, поэтому я не могу их сделатьпо одному. Я пытался использовать команды find и chmod, но я просто не могу заставить команду find работать, чтобы найти все файлы с g = --- (или 000).

Моя первая попытка была такой:

$ find /home/mael/tp1_inf1070/World/permissions -type f -perm g=000 -exec chmod o= {} \;

, которая дала:

find: invalid mode ‘g=000’

Это не работает просто с g = --- или просто с 'g ='.

Если я попытаюсь сделать первый шаг,

$ find -perm  'g=000'

Я не получу никакого вывода.

Я мог бы просто сделать:

$ find -perm 700, 600, 400, 707, 704, 706, 707 

Чтобы найти все файлы без разрешения группы, но как потом применить chmod к этим файлам, чтобы удалить все права «других», но разрешение их пользователей осталось прежним?

Есть идеи о том, как действовать? ? Спасибо.

1 Ответ

0 голосов
/ 01 октября 2019

Попробуйте применить следующее к вашим потребностям:

find . -not -perm /g=r -and -not -perm /g=w -and -not -perm /g=x -exec chmod o-rwx {} \;

Это должно найти все файлы без групповых разрешений и удалит любые разрешения для мира (других).

...