Я запускаю сценарий php и хочу во время выполнения иметь возможность сменить владельца файла на пользователя Linux с www-data, а затем после некоторого хранения перевести его обратно.
Я запускаю следующую команду
$cmd = "sudo chown www-data ".$path;
shell_exec($cmd);
где $ path — полный путь
я добавил следующее в мой файл sudoers с помощью sudo visudo
www-data ALL=NOPASSWD: /fullpath/to/phpfile.php
но после проверки моих журналов ошибок я все еще получаю
^Msudo:: no tty present and no askpass program specified
в чем могут быть проблемы, ребята?
Спасибо
Предупреждение С помощью sudo
в php-скрипте это ужасная идея, так как она имеет огромное значение для безопасности.
мне нужно изменить владельца файла, чтобы mp4box мог записывать файлы в этот каталог
Допустим, ваш каталог — / srv / directory. Вам нужно создать группу, которая содержит www-data
пользователь и любой пользователь, который будет писать в каталог (скажем, есть только один пользователь: tony
).
groupadd mygroup
usermod -a -G mygroup www-data,tony
затем измените владельца каталога и разрешения соответственно.
chown -R /srv/directory www-data:mygroup
chmod -R /srv/directory 770
но это часть конфигурации / установки, и такую команду не следует запускать во время выполнения, так как для этого может потребоваться доступ с правами root. Это позволит любому php-скрипту делать что-либо на компьютере. это следует запускать при установке и настройке среды ваш скрипт будет работать
@ мой сисадмин: если ты читаешь это, пожалуйста, не убивай меня.
Вам не нужно заботиться о правах пользователя во время выполнения, так как задача системного администратора — сделать систему безопасной и гарантировать, что ваш код может работать на ней. Поскольку вас это не волнует, в вашем коде не должно быть sudo.
Тем не мение, на земле нет ни одного системного администратора, который бы предоставил root-доступ к www-data
пользователь (возможно есть, но их быстро увольняют).
Если вы добрый человек, который не хочет, чтобы его ненавидели его коллеги и / или пользователи. Вам следует :
Взгляни на этот пост обмена стека unix
Других решений пока нет …