Я хотел бы разрешить моему PHP-скрипту (размещенному на apache2) выполнять команды с другой учетной записью пользователя.
Я не хочу, чтобы другой веб-сайт, размещенный на сервере, мог подключаться к этой учетной записи другого пользователя.
Если я добавлю правило в / etc / sudoers, это позволит любому пользователю веб-сайта использовать этого пользователя.
Решение, которое я пришел, заключалось в использовании ssh с закрытым и открытым ключом. Сценарий PHP запускает ssh-соединение с сервером, на котором он размещен, в нужной учетной записи пользователя.
Есть ли другой способ, кроме моего решения с ssh?
С уважением
Мое чутье подсказывает мне, что то, что вы делаете, - ужасная идея. Но на самом деле вы не дали достаточно информации о том, почему вам это нужно, и каков вариант использования, чтобы рассказать об этом на самом деле.
Но твоя мысль о sudo
неправильно, хорошая это идея или нет.
Запись sudoers определяется как:
USER HOST = [(RUNAS)] [NOPASSWD:] [!] CMD[,...]
Это означает, что пользователь USER
разрешено бежать CMD
как пользователь RUNAS
(если есть). Чтобы вы могли построить свой sudoers
запись вроде этого:
www-data YOUR-HOSTNAME = (YOUR-USER) NOPASSWD: /path/to/command
Это позволит пользователю www-data
на указанном хосте (или ALL
если вы дадите это как YOUR-HOSTNAME
) для выполнения программы /path/to/command
как пользователь YOUR-USER
без пароля.
Вы также можете поставить ALL
как команду, позволяя каждой команде YOUR-USER
имеет доступ к.
С вашими примерными значениями строка sudoers будет состоять из следующего (при условии, что mydeployer
как имя хоста и thedeployer
как имя пользователя):
www-data mydeployer = (thedeployer) NOPASSWD: ALL
Вы можете сделать dat, используя sudo и определенную конфигурацию sudoers:
Выполните команду из PHP как
sudo -H -u user2 /your/command parameters
Добавить в sudoers (sudo visudo
команда)
www-data ALL=(user2) NOPASSWD: /your/command
Это позволяет apache запускать определенную команду от имени другого пользователя.