Как я позволяю некорневым пользователям управлять systemd сервисом с экземплярами?

Если Вы не будете корнем, то Вы не сможете установить VNC, таким образом, это не поможет.

Я думаю, что существует только две опции

  1. Скажите Вашему Поставщику входить в систему от консоли и повторно добавлять пользователя к колесу.
  2. Найдите и используйте для улучшения полномочий.:)
11
13.04.2017, 15:36
2 ответа

Файл sudoers не будет работать так, или так мне кажется. Файл sudoers предназначен для предоставления определенного доступа к командам, а не указан аргументы, которые могут пойти с этой командой.

Создайте сценарий, который работает как root, и выполняет это:

/usr/bin/systemctl start database@

Создание сценария, такого как starawesomeApp, так что он выполняет следующее:

Script Executes: / usr / bin / systemctl запуска базы данных @ starawsesomapp

Дайте своим пользователям разрешение на выполнение файла Script.SH с / etc / sudoers.

scriptuser ALL=(ALL) NOPASSWD: /path/to/script.sh

Пользователь может работать так:

sh script.sh anotherawsesomeapp

Пример:

AppName=$1

/usr/bin/systemctl start database@$AppName;
if [ $? != "0" ] 
then; 
    echo "$AppName could not be started. Are you using the right application name?";
fi
1
27.01.2020, 19:59

Предлагаемое решение, основанное на SUID

Вы можете создать указанный сценарий, который вызывает systemctl с помощью sudo. Сделайте скрипт владельцем root. Предоставьте SUID права root, а также разрешения на чтение и выполнение группе администраторов баз данных (dba).
Только будьте осторожны, чтобы не предоставлять разрешение на запись группе или другим лицам, потому что таким образом они могут изменить сценарий и заставить его выполнить все, что предшествует sudo! Также убедитесь, что сценарий является пуленепробиваемым с точки зрения ввода.

$ cat >> start_database.sh
sudo /usr/bin/systemctl start database@$1
(Ctrl+D)

Этот сценарий можно улучшить, проверив, действительно ли указан аргумент, и напечатав сообщение Usage: if not ..., также, поскольку это сценарий с SUID , это было бы целесообразно проверить; чтобы избежать внедрения других команд после аргумента. Или, что еще лучше, разрешите в качестве входных данных только одну из упомянутых вами строк, связанных с приложением!
Затем вы должны убедиться, что разрешения для сценария строго следующие:

$ sudo chown root:dba start_database.sh
$ sudo chmod u-x,g-w,o-rwx start_database.sh
$ sudo chmod u+s,g+rx start_database.sh

Затем, чтобы проверить правильность разрешений:

$ls -la
.
.
.
-rwSr-x--- 1 root dba       35 Aug  2 19:11 start_database.sh
.
.
.

Итак, напомним:

1. владельцем скрипта является root
2. файл может быть прочитан и выполнен членами группы dba
3. никто другой не сможет даже прочитать это.
4. SUID позволит пользователю, выполняющему сценарий, стать пользователем root , пока выполняется сценарий.
5. Таким образом, sudo не остановится на вводе пароля.

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

0
27.01.2020, 19:59

Теги

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