Существует ли команда find, которая показывает файлы из текущего каталога, для которых определенный пользователь имеет права на чтение? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь выучить find и застрял, когда пытался найти файлы (если они есть) из текущего каталога, который пользователь может распечатать (так, чтобы у пользователя были права на чтение). Практически то, что делает эта команда:

find / -type f -user whateverUser

1 Ответ

0 голосов
/ 31 марта 2019

Для этого используйте grep:

ls -o для просмотра текущей папки

ls -o . */** для вывода списка подпапок, но для каждого файла укажите полный подпуть

ls -o */** | grep -v '^d' для исключения каталогов из списка

Чтобы увидеть, какие файлы вы можете прочитать, вы можете выполнить команду grep для владельца:

ls -o . */** | grep -v '^d' | grep " $LOGNAME "

Тонкость заключается в том, что вы можете читать все файлы, которые имеют разрешение на уровне группы r или все права пользователя r.

Включить последнее легко:

ls -o . */** | grep -v '^d' | egrep "( $LOGNAME |^.......r..)"

Включить файлы, к которым вы можете получить доступ через групповые разрешения, немного сложнее. Не проверено, поэтому здесь идет:

GROUP_GREP=$( groups | sed 's/ /|/g' )

ls -l */** | grep -v '^d' | egrep "( $LOGNAME |^.......r..|$GROUP_GREP)" 

Теперь вам может потребоваться внести уточнения в случаях, когда имя файла содержит какие-либо условия поиска grep (например, имя пользователя или имена групп).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...