Был бы программа dialog
быть достаточными для своих потребностей? Это может сделать основные диалоговые окна и еще более сложный материал. Возможно, необходимо изучить его.
См. http://www.linuxjournal.com/article/2807 для небольшого количества дополнительной информации.
Конечно, это не было бы 100%-м решением для жемчуга.
То, что Вы спрашиваете, трудно если не невозможный. Даже если Вы действительно ограничивали приложение 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
. Во-первых, удостоверьтесь, что ACLs включены: файловая система это /var/www
идет должен быть смонтирован с acl
опция. Посмотрите Делают все новые файлы в каталоге доступными для группы для справки на этом. Также установите утилиты ACL (getfacl
и setfacl
). Затем дайте дополнительные полномочия дереву под /var/www/html
пользователям, у которых должны быть они. Можно установить ACLs в расчете на пользователя, но часто легче поместить пользователей, которые должны иметь те же права на части файловой системы в группе и установить ACLs для той группы. Например, если пользователи в группе html-writers
должен иметь доступ для чтения-записи к дереву под /var/www/html
:
setfacl -d -m group:html-writers:rwx /var/www/html
setfacl -m group:html-writers:rwx /var/www/html
Можно ограничить команду, которая будет использоваться "myuser" со всеми аргументами в /etc/sudoers
файл с командой visudo
добавьте:
## Allows myuser to chmod the html dir and chmod 755 the html2 dir
myuser ALL=NOPASSWD:/bin/chmod [0-7][0-5][0-5] /var/www/html/*,/bin/chown myuser:mygroup /var/www/html/*,/bin/chmod 755 /var/www/html2/myapp/*.txt
позвольте регистрироваться для каждого операционного добавления:
Defaults logfile=/var/log/sudo.log
демонстрационный вывод:
[root@myhost /]# su - myuser
-sh-3.1$ sudo /bin/chmod 755 /var/www/html/index.html
-sh-3.1$ sudo /bin/chmod 755 /var/www/html/*
-sh-3.1$ sudo /bin/chmod 777 /var/www/html2/myapp/*.txt
Sorry, user myuser is not allowed to execute '/bin/chmod 777 /var/www/html2/myapp/*.txt' as root on myhost.mydomain.
-sh-3.1$ sudo /bin/chmod 755 /var/www/html2/myapp/*.txt
-sh-3.1$
При использовании sudo предпосылка должна быть то, что "myuser" является доверяемым человеком. Будьте осторожны с полномочиями файла, существует не простой способ мешать злонамеренному sudo пользователю ссылка файл от внешнего ресурса и изменить ее.
su - prashant
или su prashant
?
– tombolinux
02.08.2012, 15:14
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
– Gilles 'SO- stop being evil'
03.08.2012, 02:17
На самом деле есть довольно простой способ сделать это, создав Bash (или оболочку по вашему выбору) скрипт для ограничения модификаций, сделанных в определенном файле или каталоге.
В вашем примере это выглядело бы так:
$ vi /usr/local/bin/mychmod
#!/bin/bash
chmod 777 /var/www/index.html
Затем вы бы изменили файл sudoers, чтобы позволить www-data выполнить /usr/local/bin/mychmod.
Имейте, однако, в виду, что разрешение пользователю вводить данные (например, позволять пользователю изменять, какой файл или каталог chmodded) в это пространство чрезвычайно опасно, и вам нужно знать, как отфильтровывать инъекционные атаки, если вы хотите сделать что-то подобное. Злоумышленник может легко выполнить любую команду root таким образом, эффективно подрывая безопасность вашей системы.