Вопрос или проблема
Я хочу увидеть, к каким файлам и папкам у пользователя в моей системе есть доступ. Я администратор на системе. Как мне получить больше информации о том, к каким файлам и папкам имеет доступ пользователь?
Предпочтительные решения через командную строку, я подключен по SSH к хосту.
Предположим, имя пользователя rick
, тогда попробуйте эти две команды:
$ sudo ls -al /var/cache/ldconfig/aux-cache
-rw------- 1 root root 82579 Oct 1 16:51 /var/cache/ldconfig/aux-cache
$ sudo -u rick ls -al /var/cache/ldconfig/aux-cache
ls: невозможно получить доступ к '/var/cache/ldconfig/aux-cache': Доступ запрещен
ls
работает для sudo
как для пользователя по умолчанию root
в первом примере. Но когда sudo
(Substitute User Do) — это пользователь rick
, доступ запрещен.
Вы можете искать файлы по их правам доступа с помощью команды find и опции -perm, однако, если вы хотите проверить доступ на уровне владельца и группы, вам также потребуется использовать параметры -user и -group.
Полное описание этих опций можно найти в справочной странице по команде find, чтобы определить, какие из них подходят для вашего случая:
man find
Но для примера предположим, что у вас есть пользователь по имени bob в группе users, следующая команда найдет все файлы, к которым bob имеет доступ на чтение как владелец, член группы или иначе:
find -perm /444 -user bob -group users
Слэш (/) перед правами доступа позволяет соответствовать, если хотя бы у одного из пользователя bob, группы users или у всех остальных есть хотя бы права на чтение для файла, то есть это будет соответствовать таким вещам, как файл с правами 600, принадлежащий bob, так как его учетная запись пользователя имеет права на чтение для него, даже если у других нет.
Существуют и другие префиксы, которые позволяют точно настраивать права доступа, которые вы хотите искать, но это было бы долгое объяснение, чтобы углубляться во все без учета ваших конкретных потребностей, и справочная страница уже документирует это.
Также важно упомянуть, что права доступа становятся немного сложнее из-за множественных членств в группах и т.д. Такие инструменты хорошо дают общее представление о файлах, к которым пользователь может иметь доступ, но не стоит предполагать, что вывод является исчерпывающим; если ваша конечная цель — безопасность, я бы предложил тестирование как лучший способ удостовериться в этом случае.
Найдите файлы, принадлежащие пользователю, с помощью следующей команды:
find путь_к_каталогу -user <имя_пользователя>
…где <имя_пользователя>
заменяется на имя пользователя, по которому вы фильтруете результаты поиска. Вы также можете дополнительно отфильтровать поиск следующим образом:
find путь_к_каталогу -user <имя_пользователя> -name <имя_файла</i>
путь_к_каталогу
: Находите файлы или каталоги в этом каталоге.-user <имя_пользователя>
: Находите файлы или каталоги, которые принадлежат этому пользователю.-name <имя_файла>
: Имя файла или шаблон.
Источник: Linux / Unix Найти все файлы, принадлежащие определенному пользователю / группе
Ответ или решение
Для получения информации о том, какие файлы и папки доступны пользователю на вашей системе, вы можете использовать несколько команд терминала, находясь на удалённом SSH. Я приведу несколько способов, которые подойдут вам как администратору.
Проверка прав доступа пользователя
-
Использование команды
sudo
для проверки доступа к конкретному файлу:Если вы хотите проверить, может ли пользователь
rick
получить доступ к определённому файлу, вы можете использовать командуsudo
. Например:sudo ls -al /путь/к/файлу
-
Запуск команды от имени пользователя:
Вы также можете запустить команду
ls
от имени пользователяrick
, чтобы проверить, какие файлы он может видеть:sudo -u rick ls -al /путь/к/файлу
Если вы получите сообщение "Permission denied", это означает, что пользователь
rick
не имеет доступа к данному файлу или папке.
Поиск файлов с определёнными правами доступа
Если вы хотите просмотреть все файлы, к которым есть доступ у пользователя, вы можете использовать команду find
. Например, команда ниже найдёт все файлы, к которым есть права на чтение для пользователя bob
, находящегося в группе users
:
find / -perm /444 -user bob -group users
Здесь /444
указывает на то, что файл может быть прочитан владельцем, членом группы или любым другим пользователем.
Поиск файлов, принадлежащих пользователю
Чтобы найти все файлы, принадлежащие пользователю, вы можете использовать следующую команду:
find /путь/к/директории -user rick
Это вернёт все файлы, принадлежащие пользователю rick
, в указанной директории.
Дополнительные возможности
Вы можете значительно сузить результаты поиска, добавив дополнительные параметры. Например, чтобы найти файлы определённого имени, выполните:
find /путь/к/директории -user rick -name "имя_файла"
Важно помнить
Следует отметить, что наличие доступа к файлам может быть сложнее, чем кажется изначально, из-за нескольких членств в группах и других факторов. Поэтому, если безопасность – ваш приоритет, я рекомендую тестировать доступ непосредственно, а не полагаться исключительно на результаты команд.
Для получения дополнительной информации о командах и их параметрах вы можете обратиться к страницам руководства:
man find
Эти команды и методы помогут вам получить полное представление о доступе пользователя к файлам и папкам на системе.