-1

Примечание: пожалуйста, не стесняйтесь редактировать вопрос - мне трудно его выразить!

Вопрос:

Как вы выдаете себя за обычного пользователя - при этом сохраняя права администратора /root для выполнения любой команды от имени этого целевого пользователя?

Механизм для:

  1. Разрешает полный доступ root/admin для выполнения любой команды;
  2. Позволяет указать некоторую "Целевую группу";
  3. Позволяет вам указать "Целевого пользователя";
  4. И обеспечивает выполнение всех команд, сценариев и т.д. От имени этого пользователя / группы, устанавливая "Целевого пользователя" и "Целевую группу" в качестве владельца ...

Эти примеры показывают, как pkexec и / или sudo должны быть указаны для каждой команды - это то, чего я пытаюсь избежать:

pkexec:

FAIL: Требуется администратор для префикса с sudo и pkexec .

  1. sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder

    • Успех: создает папку и назначает правильные разрешения
  2. sudo pkexec -u btsync mkdir /opt/btsync

    • FAIL: не работает для учетных записей служб без домашних папок: Error changing to home directory /home/btsync: No such file or directory

Sudo:

FAIL: Требуется администратор для префикса с sudo .

1 sudo pkexec -u btsync mkdir /opt/btsync

  • FAIL: делает папку - но назначает владельца root.
  • FAIL: требует исправления прав доступа, иногда увеличивая количество команд, вводимых x3.

Желательно функционально с использованием BTSync в качестве примера:

  • root@localhost > enterElevatedShell -u btsync
  • btsync@localhost > nano /etc/asound.conf
  • многие команды вводятся вручную.
  • btsync@localhost > exit
  • root@localhost >

или же:

  • root@localhost > stopauthorizationModules
  • root@localhost > sudo -i btsync
  • btsync@localhost > nano /etc/asound.conf
  • многие команды вводятся вручную.
  • btsync@localhost > exit
  • root@localhost >

или же:

  • root@localhost > sudo --setUmask=0222 --setTargetUser=btsync
  • root@localhost > sudo -E mkdir /opt/btsync

Общие сценарии:

Примечание: это в контексте ручного системного администрирования.

С корневым доступом:

  1. Создать /home /[имя пользователя] /подпапка | w /[username] как владелец
  2. Создать /opt /[serviceAccount] Сервис | w /[serviceAccount] как владелец
  3. Создать /изменить /etc /service /[someconfig] | w /[serviceAccount] как владелец

Как правило, я выполняю много-много команд, и возвращаться за изменяющимися битами разрешений утомительно, непоследовательно, а уязвимость безопасности возникает из-за забывчивости администратора или опечаток.

1 ответ1

0

Чтобы создать каталог и сразу установить владельца:

sudo install -d -o owner -g group -m 755 /path/to/dir

Для этого вам нужно использовать install, если родительский каталог не доступен для записи "владельцем", как в случае с /home .

Для создания файлов просто используйте sudo

sudo -u owner touch /path/to/file

Или ви или что-то еще.

Если у вас есть файл, который вы хотите скопировать и указать владельца, вы можете снова использовать установку. Работает как cp с дополнительными опциями

sudo install -o owner -g group -m 640 file /path/to/file

Если вам нужно создать большое количество файлов, пользователей, каталогов и т.д., И вы беспокоитесь о согласованности, возможно, вам тоже нужно взглянуть на систему управления конфигурациями, такую как puppet, chef, ansible или тому подобное. Для настройки требуется немного больше работы, но у него есть то преимущество, что его можно использовать повторно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .