Как временно приостановить проверки политики безопасности или временно предоставить root-доступ?

350
h.d. kohen

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

Вопрос:

Как вы выдаете себя за обычного пользователя - при этом сохраняя права администратора / 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
какой сервисный аккаунт ты имеешь в виду? некоторые из них требуют определенных контекстов selinux для своих файлов, следовательно, ошибка отказа в разрешении. Под root `sudo -u user mkdir folder` должен работать для обычных пользователей. Azad 8 лет назад 0
@ Азад Спасибо, Азад. Например, я хочу создать учетную запись службы btsync, а затем вручную создать кучу папок, файлов конфигурации, переместить исполняемый файл и т. Д. - и все это при назначении соответствующих разрешений без явного возврата и выполнения этого. h.d. kohen 8 лет назад 0

1 ответ на вопрос

0
Bram

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

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 или тому подобное. Для настройки требуется немного больше работы, но у него есть то преимущество, что его можно использовать повторно.

Брэм, спасибо. Это работает, но даже если бы это было - было бы невероятно утомительно использовать это, чтобы вручную создавать много папок, копировать файлы и т. Д., Для общих задач конфигурации. "sudo -u btsync mkdir btsync` приводит к" не может создать каталог "btsync": разрешение отклонено. h.d. kohen 8 лет назад 0
Я обновил свой ответ, чтобы решить эту проблему. Mkdir требует доступа на запись к родительскому каталогу. Bram 8 лет назад 0
- Брэм. Еще раз спасибо. `sudo pkexec -u TestUser mkdir / home / TestUser / NewFolder` не требует, чтобы родительская папка имела права на запись. - Но это по-прежнему не решает проблему, устраняя необходимость ввода «sudo» или «pkexec» для каждой команды. h.d. kohen 8 лет назад 0

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