Я могу настроить Sudo (через файл sudoers) , чтобы позволить пользователю для запуска chown
и chmod
команды на любой файл или каталог в системе. Однако я хочу предоставить пользователю только разрешение на запуск этих команд для файлов, находящихся в /var/www/html
каталоге.
Как я могу ограничить привилегированные команды, чтобы пользователь мог запускать их только в предварительно указанном каталоге?
Например: следующая команда предоставляет 777 разрешений для index.html
файла.
sudo chmod 777 /var/www/html/index.html
Теперь я хочу выполнить два действия
Ограничить
sudo
таким образом, что пользователь может работать толькоchmod
иchown
изнутри/var/www/html
Запретить пользователю выполнять эти команды в другом месте системы (например, команды не могут быть запущены в
/var/www
или/var/ftp
)
www-data
группы, исключающей необходимостьchmod
/chown
что-нибудь?chown
. Кроме того, я не вижу причин, почемуchmod
нужно запускать с правами root.Ответы:
То, что вы спрашиваете, сложно, если не невозможно. Даже если вы сделали ограничить применение
chown
иchmod
для файлов в каталоге конкретного, кто - то еще могут пройти символическую ссылку и поэтому влияют на файлы в любом месте они любят.К счастью, весьма вероятно, что то, что вы пытаетесь сделать, просто не является правильным решением вашей реальной проблемы, и есть другой метод, который работает.
Обычно пользователи, которым необходимы дополнительные разрешения для создания и изменения файлов
/var/www
, добавляются в группу (частоwww-data
, или у вас могут быть разные группы для разных частей сайта). Вы можете использовать владение группой и каталоги setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/html
позволяет каждому членуwww-data
группы записывать в/var/www/html
каталог, а файлы, созданные в этом каталоге, будут принадлежатьwww-data
группе, а не основной группе пользователя, создавшего файл. Однако это не очень гибко.Что вы, вероятно, должны сделать, это настроить списки контроля доступа для файлов в
/var/www
. Во-первых, убедитесь, что ACL включены: включенная файловая система/var/www
должна быть смонтирована сacl
опцией. См. Сделать все новые файлы в каталоге доступным для группы для помощи по этому вопросу. Также установите утилиты ACL (getfacl
иsetfacl
). Затем предоставьте дополнительные права доступа к дереву/var/www/html
пользователям, которые должны их иметь. Вы можете установить списки ACL для каждого пользователя, но часто проще поместить пользователей, которые должны иметь одинаковые права на часть файловой системы, в группу и установить ACL для этой группы. Например, если у пользователей в группеhtml-writers
должен быть доступ на чтение и запись к дереву под/var/www/html
:источник
Вы можете ограничить использование команды «myuser» всеми аргументами в
/etc/sudoers
файле командойvisudo
add:включить ведение журнала для каждой операции, добавив:
образец вывода:
Когда вы используете sudo, следует исходить из того, что «myuser» является доверенным лицом. Будьте осторожны с правами доступа к файлам, не существует простого способа помешать злоумышленнику sudo связать файл с внешним ресурсом и изменить его.
источник
su - prashant
илиsu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
и если вы как-нибудь это исправите,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
На самом деле существует довольно простой способ сделать это, создав скрипт Bash (или оболочку по вашему выбору), чтобы ограничить изменения, сделанные в конкретном файле или каталоге.
В вашем примере это будет выглядеть так:
Затем вы должны изменить файл sudoers, чтобы разрешить www-data выполнять / usr / local / bin / mychmod.
Имейте в виду, однако, что разрешить ввод данных пользователем (например, разрешить пользователю изменять, какой файл или каталог chmodded) в это пространство чрезвычайно опасно, и вам нужно знать, как отфильтровать атаки с использованием инъекций, если вы хотите сделать что-то вроде тот. Злоумышленник может легко выполнить любую команду с правами root таким образом, что может поставить под угрозу безопасность вашей системы.
источник