Назад | Перейти на главную страницу

Разрешить www-data использовать другого пользователя - sudo или ssh

Я хотел бы разрешить моему 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 запускать определенную команду от имени другого пользователя.