Я получаю сообщение об ошибке «Отказано в доступе» при попытке запустить rename
Команда в PHP.
Файл, который он пытается переименовать, находится в домашнем каталоге другого пользователя.
Вот что я сделал до сих пор:
Предоставил пользователю PHP (userA) доступ к этой группе. Поэтому, когда я бегу id
я получил
uid=1004(userA) gid=1006(userA) groups=1006(userA),10(wheel),1007(userB)
PHP-скрипт работает как userA
,
Я побежал sudo chmod -R g+rwx ./*
в от /home/userB/subdomains/mp3s
каталог.
Когда я перехожу в каталог, где хранятся файлы, в /home/userB/subdomains/mp3s/
и беги ls -lha
Я получил:
-rw-rwxr-- 1 userB userB 62M Aug 8 2017 Stress Management - Lesson 1.mp3
Таким образом, группа имеет разрешение на чтение / запись / выполнение, и мой userA
имеет доступ к этой группе, так почему он не может переименовать файл?
Спорим, у вас есть SELinux с этим модным экземпляром CentOS. Добавьте следующее поверх ваших прав доступа, чтобы PHP мог переименовывать файлы:
sudo chcon -t httpd_sys_rw_content_t /home/userB/subdomains/mp3s/ -R
Команде могут потребоваться другие разрешения для PHP CLI, в отличие от веб-службы, работающей с ней, но вы можете найти информацию об этом в CentOS SELinux, как:
https://wiki.centos.org/HowTos/SELinux
Первая команда помогла мне и была найдена на:
Других решений пока нет …