Как ограничить командами выполнения в определенном каталоге через SUDOERS?

Был бы программа dialog быть достаточными для своих потребностей? Это может сделать основные диалоговые окна и еще более сложный материал. Возможно, необходимо изучить его.

См. http://www.linuxjournal.com/article/2807 для небольшого количества дополнительной информации.

Конечно, это не было бы 100%-м решением для жемчуга.

13
14.10.2014, 01:00
3 ответа

То, что Вы спрашиваете, трудно если не невозможный. Даже если Вы действительно ограничивали приложение 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
13
27.01.2020, 19:53
  • 1
    Относительно "этого не очень гибко" (в конце абзаца 3) — почему это нет? Это, потому что люди должны быть в определенной группе? (Я едва ничего не знаю о полномочиях и ACL и связанных вещах.) –  KajMagnus 14.08.2015, 10:33
  • 2
    @KajMagnus Это негибко, потому что корень должен управлять группами и файлами, может только принадлежать единственной группе. ACL позволил любому пользователю выбрать, кто может получить доступ к файлам, которыми они владеют, и многочисленные пользователи и группы могут быть упомянуты в ACL. –  Gilles 'SO- stop being evil' 14.08.2015, 13:12

Можно ограничить команду, которая будет использоваться "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 пользователю ссылка файл от внешнего ресурса и изменить ее.

2
27.01.2020, 19:53
  • 1
    я попробовал его прежде, но это дало ошибку как: Извините, пользователю prashant не разрешают выполнить '/bin/chmod 777/var/www/html/a' как корень на prashant.xyz.com. –  PrashantB 02.08.2012, 15:11
  • 2
    имеет Вас переключенный пользователь с su - prashant или su prashant? –  tombolinux 02.08.2012, 15:14
  • 3
    Да я выполняю команду prashant пользователем. Я считал форумы, они говорят что команды, выполненные в масштабе всей системы. Ни у кого нет записи о такой проблеме. –  PrashantB 02.08.2012, 15:19
  • 4
    я выполняю его whooo :). Но это будет статической командой. Мы можем сделать это общим так, чтобы я мог применить какое-либо разрешение на какой-либо файл под/var/www/html? –  PrashantB 02.08.2012, 15:22
  • 5
    Это абсолютно небезопасно: 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 таким образом, эффективно подрывая безопасность вашей системы.

1
27.01.2020, 19:53

Теги

Похожие вопросы