Sudo с php для смены владельца файла

Я запускаю сценарий 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

в чем могут быть проблемы, ребята?
Спасибо

1

Решение

Предупреждение С помощью sudo в php-скрипте это ужасная идея, так как она имеет огромное значение для безопасности.

1. Чистое и безопасное решение

мне нужно изменить владельца файла, чтобы 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 пользователь (возможно есть, но их быстро увольняют).

больше примечаний для разработчиков:

Если вы добрый человек, который не хочет, чтобы его ненавидели его коллеги и / или пользователи. Вам следует :

  • документировать потребности доступа для записи в каталог X или Y.
  • Возможно, создайте скрипт установки, который будет выполнять настройку от имени root только один раз.
  • Или, возможно, создайте Docker-контейнер или виртуальную машину, предварительно настроенную для запуска вашего кода.

2. Tldr; Я не забочусь о безопасности решение

Взгляни на этот пост обмена стека unix

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector