Вопрос или проблема
Я хочу узнать, как я могу ограничить доступ пользователей с помощью OpenSSH Server.
Допустим, мне нужно:
- пользователь 1 имел доступ только к /Media, /Documents и своей домашней папке,
- пользователь 2 имел доступ только к /Folder21 и своей домашней папке,
- пользователь 3 имел доступ только к /Documents, /Folder21 и своей домашней папке,
Как это можно сделать?
Я нашел, как это сделать с одной папкой, но это было для всех пользователей, я думаю?
описание здесь: https://bensmann.no/restrict-sftp-users-to-home-folder/
(скопировано из ссылки, которую я дал выше:
Могу я просто сделать это:
$ usermod User1 -s /bin/false
$ usermod User2 -s /bin/false
И установить домашний каталог пользователя:
$ usermod User1 -d /folder
$ usermod User2 -d /folder
затем сделать все другие папки подпапками /folder и ограничить доступ к этим папкам согласно моим желаниям с помощью команды chmod
, или есть лучшее решение?
Дополнение и уточнение:
Добавление в их домашний каталог не является вариантом, так как это общие папки, некоторые пользователи должны иметь доступ к одному и тому же содержимому, в то время как для других пользователей он ограничен,
Это то, о чем я думал:
- пользователь 1
- пользователь 2
- пользователь 3
-
пользователь 4
-
папка “Документация по сети”
- папка “документация приложения”
- папка “Загрузки”
-
папка “Медиа”
-
Пользователю 1 нужен полный доступ ко всему, но доступ только для чтения к документации по приложениям
- Пользователю 2 нужен полный доступ к обеим папкам с документацией
- Пользователю 3 нужен доступ только к папке “Медиа”
- Пользователь 4 нужен доступ только к папке “Загрузки” и “Документация приложения”
Разве нельзя просто поместить нужные папки, к которым хотят получить доступ пользователи, в их домашний каталог? Если нет, я предполагаю, что ssh использует те же права доступа к файлам, что и файловая система на компьютере. Таким образом, вы можете использовать те же модификаторы прав доступа к файлам, которые вы использовали бы для предоставления пользователю доступа к папке вне его домашнего каталога, например:
https://superuser.com/questions/280994/give-write-permissions-to-multiple-users-on-a-folder-in-ubuntu
Вы можете сделать простую систему управления правами доступа.
Для начала вам нужно создать дерево каталогов, давайте сделаем это так:
~ (домашняя папка)
|
|---> Их файлы
|
|---> Символическая ссылка на /opt/public/
В /opt/public/
находятся все ваши папки. В этом случае:
Media
Documents
Folder51
Поскольку у вас только три пользователя (и три папки), вы могли бы создать группы.
Простой способ сделать это – создать группу для каждой папки. Например:
groupadd opt-public-media-access
groupadd opt-public-documents-access
groupadd opt-public-folder51-access
Теперь добавьте пользователей в конкретные группы (в этом случае, user1
будет добавлен в группу media
.)
usermod -a -G opt-public-media-access user1
Наконец, выполните эти команды для каждой папки, чтобы обеспечить чтение/запись только для конкретной группы:
chown -R root:opt-public-media-access /opt/public/Media
chmod 770 -R /opt/public/Media/
Добавляйте и удаляйте группы/папки по своему усмотрению. Однако стоит отметить несколько вещей:
- Команда для удаления групп –
groupdel
. Вы должны удалить группу, когда удаляете папку. - Другие пользователи системы, не входящие в соответствующую группу, не смогут попасть в те папки, вне зависимости от остального.
- Дайте каждому пользователю его собственную домашнюю папку. Не размещайте её в чем-то вроде
/opt/public
. - Root может заходить куда угодно. Убедитесь, что ни у кого из пользователей нет прав
sudo
. - Все команды в этом посте предназначены для выполнения от имени root, если не указано иное.
.
Ответ или решение
Ограничение доступа пользователей к определённым папкам в OpenSSH является непременной частью обеспечения безопасности и контроля над данными на сервере. Давайте рассмотрим, как это можно реализовать, основываясь на ваших запросах.
Теория:
OpenSSH позволяет нам управлять доступом пользователей, используя системные группы и права доступа на уровне операционной системы. Принцип заключается в том, чтобы создать группы пользователей, которые будут обладать доступом к определённым папкам, а также корректно настраивать права доступа к этим папкам, чтобы ограничить нежелательные действия.
Пример:
Рассмотрим ваш сценарий, где у вас есть три пользователя и несколько папок с различными условиями доступа:
- Пользователь 1 должен иметь доступ к
/Media
,/Documents
и своей домашней папке. - Пользователь 2 должен иметь доступ к
/Folder21
и своей домашней папке. - Пользователь 3 – доступ к
/Documents
,/Folder21
и своей домашней папке.
Для реализации этого сценария вам потребуется:
-
Создать группы для каждой соответствующей папки:
groupadd media_access groupadd documents_access groupadd folder21_access
-
Добавить пользователей в соответствующие группы:
usermod -a -G media_access user1 usermod -a -G documents_access user1 usermod -a -G documents_access user3 usermod -a -G folder21_access user2 usermod -a -G folder21_access user3
-
Настроить права доступа к папкам, используя
chown
иchmod
:chown -R root:media_access /Media chmod -R 770 /Media chown -R root:documents_access /Documents chmod -R 770 /Documents chown -R root:folder21_access /Folder21 chmod -R 770 /Folder21
Пользователи, не входящие в указанные группы, не смогут просматривать или изменять содержимое этих папок. Это позволяет разграничить доступ на уровне файловой системы.
Применение:
После настройки доступа не забудьте протестировать учетные записи, чтобы убедиться, что они могут получить доступ только к тем папкам, к которым разрешено. Используйте команды su
или ssh
для проверки ограничений в среде пользователя. Это позволит убедиться, что доступные ресурсы соответствуют поставленным требованиям и изменениями безопасности.
Таким образом, посредством использования групп и корректной настройки прав доступа вы создаете надежную структуру контроля файлов и ограничиваете доступ к системным ресурсам в OpenSSH. Это обеспечивает защиту данных и удовлетворяет бизнес-требования к информационной безопасности.