Назад | Перейти на главную страницу

Как вы предоставляете права на выполнение пользователю Apache2, а НЕ всем остальным?

У меня работает Ubuntu Server, и я настраиваю отдельный каталог как cgi-bin. У меня есть каталог, и я изменил файл для сайта. Однако, чтобы заставить его работать, мне нужно изменить разрешения скрипта Python, который у меня есть в папке, чтобы Apache мог его выполнить. Однако я не хочу предоставлять доступ на запись или выполнение НИКОМУ, кроме root, меня и Apache. Я предполагаю, что это возможно, но как это сделать?

chown файлы к тому, что называется вашей группой Apache (обычно www-data), и установите разрешения только для предоставления разрешений пользователю / группе:

chown -R www-data:www-data /path/to/cgi-bin
chmod -R 764 /path/to/cgi-bin

Это устанавливает его так, что только пользователь и группа www-data могут записывать файл, и только пользователь www-data может выполнять файл, все могут читать.

На ум приходят два пути. Во-первых, вы можете создать группу с вами, root и apache и изменить групповое владение cgi-bin на это:

groupadd web
usermod -a -G web $USER
chgrp web /path/to/cgi-bin && chmod -R 774 /path/to/cgi-bin

В качестве альтернативы вы можете использовать ACL, чтобы просто добавить разрешения на выполнение для apache:

setfacl -m d:u:apache:rwx /path/to/cgi-bin

Это позволит apache выполнять любой файл в cgi-bin, но вам необходимо, чтобы в файловой системе были включены списки контроля доступа, и иногда их легко пропустить при просмотре файлов и каталогов.

Вы можете включить ACL, изменив настройки файловой системы по умолчанию и перемонтировав файловую систему:

tune2fs -o acl /dev/root/device
mount -o remount,acl /

Файл или каталог с прикрепленным списком контроля доступа будет иметь + в конце режима владения в выводе ls -l:

drwxr-xr-x+  2 username group    4096 May 21 21:58 tmp