Поэтому я хотел бы ограничить Apache изменением разрешений только в определенной папке и во всех ее подкаталогах, так что это то, что у меня есть в моем файле sudoers
apache ALL= (ALL) NOPASSWD: /bin/chmod -R [g+ws] /var/www/sites/[a-z]+
Но это, похоже, не работает. Я уверен, что смог бы заставить его работать, сняв ограничение на подпапку, но это кажется опасным, поскольку это даст потенциальному хакеру неограниченный доступ.
Так есть ли способ ограничить apache только изменением файлов и папок в папке "sites", или я застрял в предоставлении неограниченного доступа с помощью chmod / chown?
Есть ли большие дыры в безопасности при использовании этого подхода?
Вероятно, лучше сделать команду chmod сценарием оболочки, запускаемым только пользователем root, а затем разрешить запуск этой команды в sudo.
Хорошо, так что очевидно, что здесь не используются полные регулярные выражения, которых я ожидал, обычная звезда сделала свое дело:
apache ALL= (ALL) NOPASSWD: /bin/chmod -R [go]+ws /var/www/sites/*
Это очень опасно. Это откроет уязвимость на вашем сервере. Что произойдет, если пользователю удастся запустить chmod -R g + w /var/www/sites/../../../../etc/shadow?