Список всех файлов / папок, которые пользователь может удалить? Linux

4

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

Какую команду или скрипт я могу использовать, чтобы проверить это?


источник

Ответы:

5
target_user@host:~$ find / -writable
whitequark
источник
Отлично. Похоже, что большинство файлов здесь представляют собой специальные файлы (каналы), в которые можно записывать, но не повреждать или удалять. Я не могу сказать, какие папки, но глядя на список, пользователь кажется «безопасным»
@ acidzombie24 - если вы хотите только каталоги, find / -writable -type d. Если вы хотите только файлы, find / -writable -type f. Если вы хотите , чтобы файлы и каталоги , но не трубы и специальные файлы, find / -writable \( -type f -o -type d \).
bstpierre
Я просто замечаю, это список папок с именем / home / mybackup. делая стат я вижу 700 на нем. Итак, я на самом деле смотрю на список файлов / каталогов, которые находятся в записываемых каталогах? Есть ли способ не включать эти папки? и я получил синтаксическую ошибку (поэтому я написал, find / -writable -type f -o -type d может быть, в этом причина неправильного поведения?
Правильная форма этой команды, вероятно find / -writable \( -type f -o -type d \), потому что bashинтерпретирует неэкранированные скобки сам по себе.
Уайткварк
1

Вам нужно искать каталоги, которые пользователь может написать. Файлы не имеют разрешения на удаление. Попробуйте команду, чтобы найти легкие каталоги. Это должно перечислить / tmp и дерево домашних каталогов использует.

sudo -u your_user find -type d -writable -maxdepth 3 2>/dev/null 

Это пропустит любые каталоги в каталогах, в которые пользователь не может сканировать. Тем не менее, они также будут пропущены при удалении по шаблону. Этот список идет только на три уровня вниз, что должно получить большинство деревьев, на которые пользователь может писать. Измените или уроните maxdepth, чтобы удовлетворить.

Более полной проверкой будут любые каталоги, которые соответствуют одному из следующих критериев:

  • Глобально доступный для записи
  • Доступно для записи пользователем
  • Доступно для записи любой из групп пользователей. (Всегда хотя бы одна группа, возможно больше).

Пользователи смогут удалять файлы и каталоги ниже этих каталогов. Существуют исключения, которые будут препятствовать удалению всего, что находится под этими каталогами. Будучи в состоянии удалить файлы в каталоге, не означает, что каталог может быть удален.

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

BillThor
источник
Не может ли быть каталог, которым владеют, например, root и mode 644 с файлом 666? Каталог не будет доступен для записи для пользователя, но файл может быть поврежден.
Уайткварк
Да это правда. Пользователь может изменять файл на основе привилегии записи в файл. Я только посмотрел на случай удаления, который является наиболее разрушительным. Для искажения файла используйте поиск с '-type f' вместо '-type d'. Вы можете попробовать что-то вроде этого для всего доступного для записи: "sudo -u www-data find / -writable 2 & gt; / dev / null | egrep -v ^ / proc | less "
BillThor
Режим каталога должен включать 1 бит, чтобы быть доступным. (Бит выполнения означает включение доступа к файлу в каталоге.) В обоих моих ответах будет пропущен файл в каталогах с включенным выполнением, но чтение отключено. Например, для корневого файла и режима директории wher указано 511, а разрешение для файла - 666. Чтобы повредить файл, пользователь должен знать его там. Этот тип разрешения можно использовать для каталогов dropbox, где вы не хотите, чтобы дроппер знал о том, что еще было удалено. Это должно сочетаться с битом «t», чтобы пользователи не могли удалять файлы других пользователей.
BillThor
0

С этим пользователем выполните:

find / -perm -=w > ~/listoffiles.txt

записывает список файлов listoffiles.txtв вашем домашнем каталоге.

BloodPhilia
источник
1
Помните, что кроме файлового режима, есть UID и GID, связанные с файлом. Кроме того, у вас может быть набор POSIX ACL.
whitequark
@whitequark Тем не менее, это должно работать нормально?
BloodPhilia
1
Нет. Представьте себе (удаляемый) файл в режиме 0600: ваш тест пропустит его, а мой - нет (вот журнал: pastebin.com/7jV0yTJ7 )
whitequark
@ белый квакш Ха-ха! Я ненавижу, когда ты прав! Отлично сработано!
BloodPhilia
просто любопытно, был ли я прав несколько раз назад или это идиома, которую я не знаю?
whitequark