В Linux, как я могу найти все файлы и каталоги, которые доступны для записи (или вообще не доступны для записи) конкретному пользователю?
Изменить: чтобы уточнить, я имел в виду под конкретным subdir, а не в масштабе всей системы. И да, это означает, что все перестановки и комбинации пользовательских, групповых и мировых прав на запись могут позволить этому пользователю писать. Я знаю, что вопрос влечет за собой семантически, я надеялся, что один или несколько строк для выполнения, чтобы получить список этих файлов.
Ответы:
Используйте команду 'find', если у вас установлена версия findutils 4.3.0 или выше:
Для всех файлов в текущем каталоге, доступных для записи текущему пользователю:
Для всех файлов в текущем каталоге, которые не доступны для записи текущему пользователю:
Согласно справочной странице:
источник
2>&1 | grep -v "Permission denied"
вfind . -writable 2>&1 | grep -v "Permission denied"
Вы можете создать скрипт Perl (
writable.pl
) следующим образом:и затем используйте этот скрипт в качестве пользователя root следующим образом:
заполнение
USERNAME
иDIRECTORY
при необходимости.источник
Вы уверены, что это действительно тот вопрос, который вы хотите задать?
Сказать «Я хочу видеть все файлы, в которые может записать учетная запись X» означает каждый файл, которым они владеют с помощью u + w, каждый файл, принадлежащий любой группе, к которой они принадлежат, это набор g + w, и каждый файл, доступный для записи (o + ж).
Не для записи будет еще сложнее. Вам лучше составить список каждого файла, а затем исключить те, в которые они могут записать.
источник
Для ответа Эдди, если вы добавите:
Затем он будет проходить каталоги с пробелами в их имени.
источник
Я буду использовать синтаксис gnu find для флага -perm в этом примере:
В основном - если вы выбрасываете дурацкие расширения, такие как ACL, у вас есть 3 варианта - владелец, группа и «другие» права на запись. Похоже, работа для цикла.
Существует много возможностей для оптимизации этого, но я оставлю это кому-то еще ... Кроме того, я никогда не могу вспомнить все детали поиска и пересечения файловых систем и тому подобную чепуху. Также убедитесь, что вывод групп такой же, как в моей тестовой системе Linux.
Это грубый пример того, как вы найдете файлы, доступные для записи пользователю. Это будет происходить при запуске от имени любого пользователя, но если вы запустите его как пользователь не-uid0, вы найдете только то, что находится в каталогах, к которым у пользователя, запустившего скрипт, есть права как на чтение, так и на выполнение.
источник
Эта команда должна найти все доступные для записи каталоги, вы можете изменить разрешения по своему усмотрению:
источник
Я не уверен, что это лучший способ, но должен делать то, что вы просите:
ключ, конечно, в
-w
переключателе, который также может быть отмененРЕДАКТИРОВАТЬ: Если больше думать об этом, этот сценарий печатает то, что доступно для записи текущему пользователю, очевидно, он не будет работать для данного пользователя.
источник