Запустить скрипт при входе пользователя в систему как root, с подвохом

Я пытаюсь запустить скрипт PHP от имени пользователя root при входе в систему. Скрипт PHP добавляет общий ресурс Samba в конфигурацию Samba, таким образом, требуются права суперпользователя. Единственная проблема здесь в том, что пользователь еще не существует. Эта система интегрирована с активным каталогом. Поэтому, когда пользователь входит в первый раз, для него создается домашний каталог в /home/DOMAIN/username.

Я нашел этот вопрос , и это кажется правильным способом получить то, что я хочу, но у меня проблемы с синтаксисом, так как я не знаю имени пользователя.

Было бы что-то вроде:

ALL ALL=(ALL) NOPASSWD: /home/DOMAIN/*/createSambaShare.php

Это, кажется, не работает, как это в настоящее время. У кого-нибудь есть идеи или «скриптовый» способ добавить общий ресурс Samba при входе пользователя в систему?

Поскольку я внес другие изменения в /etc/skel, я просто добавил bash, необходимый для запуска сценария PHP. профиль там. Затем он копируется в дом «нового» пользователя и пытается запустить скрипт PHP. Но это не помогает, потому что это не привилегированные пользователи.

Изменение разрешений для скрипта PHP не поможет. Его нужно запускать как sudo, потому что он открывает конфигурационный файл Samba для записи. Разрешение любому пользователю запустить скрипт PHP приведет к ошибке PHP.

Директива homes Samba не работает для моего варианта использования. Мне нужно, чтобы общий ресурс Samba существовал, если он существует на сервере, даже если он не вошел в систему.

5
задан 13 April 2017 в 15:23

2 ответа

Не помещайте скрипт в домашнюю директорию пользователя. Вместо этого поместите это в фиксированное местоположение. Если сценарию нужны некоторые пользовательские аргументы, заставьте сценарий прочитать его из файла - но вам это даже не нужно, так как вы все равно копируете сценарий из /etc/skel.

Если вы разрешите пользователю запускать сценарий в своем домашнем каталоге с повышенными привилегиями, он может заменить сценарий другим сценарием. Таким образом, предложенное вами правило будет эквивалентно с точки зрения безопасности

ALL ALL=(ALL) NOPASSWD: /etc/skel/createSambaShare.php
MANY ALL=(ALL) NOPASSWD: ALL

, где MANY - любой пользователь, домашний каталог которого находится под /home/DOMAIN. (Хорошо, если домашний каталог пользователя не принадлежит пользователю root, недоступен для записи пользователю, а сценарий не доступен для записи или для пользователя. Но это было бы довольно необычно.) рекомендуем не использовать ALL в спецификации пользователя. Ограничьте правило группой.

%sambasharers ALL=(ALL) NOPASSWD: /usr/local/bin/createSambaShare.php
0
ответ дан 13 April 2017 в 15:23
  1. Вы можете поместить его в /etc/profile, и он должен выполняться при любом успешном входе.

  2. Добавить привилегию выполнения всем пользователям для этого файла сценария. Откройте терминал и введите эту команду:

    sudo chmod ugo+x script
    
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: