У меня работает 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