У меня есть каталог / folder1 / folder2 / folder3, где находится наша программа; Программа содержит PHP-интерфейс, инструменты Python CLI и множество больших файлов. Большие файлы загружаются через графический интерфейс и обрабатываются скриптами Python (которые включают копирование или перемещение файлов или создание новых обработанных версий файлов).
Я могу установить биты правдоподобия для любых файлов, затронутых apache:
chmod($inputs_metric_file, 0777);
//or something like
$oldmask = umask(0);
mkdir($inputs_report_dir, 0777);
Однако это постоянно терпит неудачу
chown($inputs_report_dir, "cas");
chgrp($inputs_report_dir, "casgrp");
С этой ошибкой:
Предупреждение: chown (): операция не разрешена в / folder1 / folder2 / folder3
на линии 45Предупреждение: chgrp (): операция не разрешена в / folder1 / folder2 / folder3
на линии 46
Важный: apache не является членом casgrp; Я не хочу, чтобы apache был участником, поскольку у него слишком много разрешений. Я прочитал, что apache не может изменить группу, если он не является членом новой группы; Я подозреваю, что мне нужно как-то обойти это и ограниченным образом. Даже если я смог назначить apache для casgrp, я все равно не могу сменить пользователя.
Зачем: мы действительно хотим, чтобы все в / folder1 / folder2 / folder3 всегда было назначено cas: casgrp.
Мы добавили следующие строки в файл sudoers:
apache ALL=NOPASSWD: /folder1/folder2/folder3/cli_tool1,/folder1/folder2/folder3/cli_tool2,/bin/chown 8008 /folder1/folder2/folder3/
Я читал, что в httpd вы можете изменить следующее, что может дать путь к цели:
Пользователь apache
Группа apache
… но у меня есть опасения, так как я действительно не знаю, что это делает, и не хочу, чтобы у apache были полные права доступа к учетной записи / группе cas по соображениям безопасности … Я только хочу, чтобы это помогло сохранить пользователя / Группа / разрешения согласованы в нашей иерархии папок.
Что мы делаем не так?
Задача ещё не решена.
Других решений пока нет …