Как я нахожу файлы без полномочий группы?

Я просто хочу знать, как я могу найти в папке, файлы, которые не имеют никакого разрешения группового пользователя (не читал/писал/выполнял), вообще, с помощью терминала.

11
задан 5 October 2019 в 23:30

3 ответа

Можно использовать:

find . \! -perm /070

Или:

find . \! -perm /g+rwx

Это работает потому что:

  • Когда операнд -perm тест запускается с /, это вызывает -perm протестировать, если какие-либо из указанных полномочий присутствуют.

    (Если Вы использовали - вместо /, это протестировало бы, если бы все присутствовали. Без символа префикса это протестировало бы на точно разрешение, указанное, т.е. все они и никакие другие присутствующие.)

  • Это - противоположность того, что Вы ищете - ни один не противоположность никого - и не оператор \! инвертирует результат теста, который следует за ним.

    (Оператор действительно !, и можно, вероятно, записать этому тот путь, но это обычно пишется как \! гарантировать, что оболочка передает его на find вместо того, чтобы рассматривать его особенно.)

Что касается значения определенных строк после /, посмотрите FilePermissions, эту статью Wikipedia, и/или man chmod. Таким образом, в применении к командам, показанным выше:

  • 070 восьмеричная строка полномочий, указывая полномочия для пользователя (т.е. владелец), группа и другой (т.е. все остальные), соответственно. 7 читается (4), запишите (2) и выполнитесь (1) полномочия (т.е. 111 имеет 1 биты в 100, 010, и 001).
  • g+rwx символьная строка полномочий, указывая что группа (g) читал (r), запишите (w), и выполнитесь (x) полномочия.

Какой бы ни нотация, которую Вы используете, помнят, что Вы выражаете противоположность того, что Вы в конечном счете хотите, так как результат теста отрицается !.

14
ответ дан 23 November 2019 в 03:56

Для нахождения любого файла в текущем каталоге или его подкаталогах для который ни один чтение группы запишите или выполнитесь, биты установлены, выполнены:

find . ! -perm /g+rwx
7
ответ дан 23 November 2019 в 03:56

С легкими командами от Вашего частного выполненного терминала:

sudo df --local -P | awk {'if (NR!=1) print $6'} | xargs -I '{}' find '{}' -xdev -nogroup -ls
0
ответ дан 23 November 2019 в 03:56

Другие вопросы по тегам:

Похожие вопросы: