OpenSSH – Ограничение пользователей одной или несколькими папками

Вопрос или проблема

Я хочу узнать, как я могу ограничить доступ пользователей с помощью 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. Пользователь 1 должен иметь доступ к /Media, /Documents и своей домашней папке.
  2. Пользователь 2 должен иметь доступ к /Folder21 и своей домашней папке.
  3. Пользователь 3 – доступ к /Documents, /Folder21 и своей домашней папке.

Для реализации этого сценария вам потребуется:

  1. Создать группы для каждой соответствующей папки:

    groupadd media_access
    groupadd documents_access
    groupadd folder21_access
  2. Добавить пользователей в соответствующие группы:

    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
  3. Настроить права доступа к папкам, используя 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. Это обеспечивает защиту данных и удовлетворяет бизнес-требования к информационной безопасности.

Оцените материал
Добавить комментарий

Капча загружается...