Как временно приостановить проверки политики безопасности или временно предоставить root-доступ?
Примечание: пожалуйста, не стесняйтесь редактировать вопрос - мне трудно его выразить!
Вопрос:
Как вы выдаете себя за обычного пользователя - при этом сохраняя права администратора / root для выполнения любой команды от имени этого целевого пользователя?
Механизм для:
- Разрешает полный доступ root / admin для выполнения любой команды;
- Позволяет указать некоторую "Целевую группу";
- Позволяет вам указать "Целевого пользователя";
- И обеспечивает выполнение всех команд, сценариев и т. Д. От имени этого пользователя / группы, устанавливая "Целевого пользователя" и "Целевую группу" в качестве владельца...
Эти примеры показывают, как pkexec
и / или sudo
должны быть указаны для каждой команды - это то, что я пытаюсь избежать:
pkexec:
FAIL: требуется админ для префикса sudo
а также pkexec
,
sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder
- Успех: создает папку и назначает правильные разрешения
sudo pkexec -u btsync mkdir /opt/btsync
- FAIL: не работает для учетных записей служб без домашних папок:
Error changing to home directory /home/btsync: No such file or directory
- FAIL: не работает для учетных записей служб без домашних папок:
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
Общие сценарии:
Примечание: это в контексте ручного системного администрирования.
С корневым доступом:
- Создать /home/[имя пользователя]/ подпапка | w/[username] как владелец
- Создать /opt/[serviceAccount] Сервис | w/[serviceAccount] как владелец
- Создать / изменить /etc/service/[someconfig] | w /[serviceAccount] как владелец
Как правило, я выполняю много-много команд, и возвращение за изменяющимися битами разрешений является утомительным, непоследовательным, а уязвимость безопасности возникает из-за забывчивости администратора или опечаток.
1 ответ
Чтобы создать каталог и сразу установить владельца:
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 или тому подобное. Для настройки требуется немного больше работы, но есть то преимущество, что его можно использовать повторно.