Вопрос или проблема
Мне нужно создать пользователя в системе Linux с правами на установку программ, но без прав на доступ к каталогам других пользователей.
Я пробовал сделать так:
# Создать ограниченного пользователя
adduser --home /home/restricted_user restricted_user
# Изменить права доступа к каталогу обычного пользователя
chmod -R 700 /home/normal_user/
# Добавить ограниченного пользователя в sudoers, чтобы разрешить установку программ
sudo adduser restricted_user sudo
Затем я попробовал:
su restricted_user
sudo ls /home/normal_user
И в конце концов ограниченный пользователь получает доступ к каталогу обычного пользователя, если он делает это с помощью sudo.
Как мне реализовать эти ограничения?
Не добавляйте пользователя в sudo
группу, не предоставляйте им общий доступ к root. Отредактируйте /etc/sudoers
и укажите небольшой набор исполняемых файлов, которые пользователь может запускать от имени root. Пример:
# в файле sudoers
restricted_user ALL = (root) /usr/bin/apt-get
restricted_user ALL = (root) /sbin/reboot
Примечания:
- В зависимости от вашей Linux:
apt-get
/apt
,dpkg
,opkg
,pacman
,yum
, … - Используйте полные пути.
- Правильный способ редактирования
sudoers
— этоvisudo
. - См.
man 5 sudoers
для получения дополнительной информации о синтаксисе. - Когда вы создаете более сложные правила, помните, что их порядок имеет значение.
Имейте в виду, что целеустремленный пользователь, который может устанавливать произвольные программы, может подготовить и установить версию setuid для ls
или “усовершенствованный” sudo
, который даст им доступ к root, независимо от /etc/sudoers
. Или предоставить и установить пакет, который выполняет произвольные действия при установке (возможно, без фактической установки чего-либо). Предотвратить это может быть непросто.
Ответ или решение
Для создания пользователя в системе Linux, которому будут даны права на установку программ, но не предоставлены доступы к директориям других пользователей, потребуется выполнить несколько шагов. Рассмотрим детальный план действий.
Шаг 1: Создание пользователя
Первым шагом необходимо создать нового пользователя. Это можно сделать с помощью команды adduser
. Если требуется скрыть домашнюю директорию от других пользователей, лучше всего задать права доступа к ней:
sudo adduser --home /home/restricted_user restricted_user
Шаг 2: Настройка прав доступа к домашней директории
Следующим шагом является ограничение доступа к директориям других пользователей. Например, если у вас есть пользователь с именем normal_user
, необходимо убедиться, что его домашняя директория имеет правильные права доступа.
sudo chmod -R 700 /home/normal_user/
Эта команда изменит права доступа так, что только владелец директории будет иметь к ней доступ.
Шаг 3: Настройка прав sudo
Вместо добавления restricted_user
в группу sudo
, что предоставляет чрезмерные права, лучше отредактировать файл конфигурации sudoers
. Для этого рекомендуется использовать команду visudo
, так как она проверяет синтаксис перед сохранением изменений:
sudo visudo
Внутри файла sudoers
добавьте следующие строки:
restricted_user ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /usr/bin/dpkg
Это даст пользователю restricted_user
возможность выполнять команды apt-get
и dpkg
без необходимости вводить пароль, что удобно для установки программ.
Шаг 4: Проверка настроек
После выполнения указанных шагов можно выполнить проверку настроек. Войдите под учетной записью restricted_user
и попробуйте установить программу, воспользовавшись следующей командой:
sudo apt-get install имя_пакета
При этом необходимо убедиться в том, что пользователь не может получить доступ к домашним директориям других пользователей:
sudo ls /home/normal_user
Если настроено правильно, то доступ не должен быть предоставлен.
Важные замечания
- Безопасность: Хотя мы ограничили права доступа к файлам, пользователю все еще разрешено устанавливать программы. Это может привести к тому, что он сможет установить вредоносные пакеты или использовать уязвимости в системе. Рассмотрите возможность использования более строгого контроля в зависимости от контекста использования.
- Управление дополнительно: Будьте внимательны с программами, которые пользователь может установить. Обратите внимание на возможность установки исполняемых файлов с повышенными привилегиями (например, с помощью
setuid
).
Следуя этим шагам, вы сможете создать пользователя с правами на установку программ, при этом сохранив конфиденциальность и безопасность директорий других пользователей.