Я создал учетную запись службы на своей машине Redhat. Цель учетной записи — выполнить скрипт bash, который я создал.
Скрипт bash в основном проверяет системные свойства, такие как cpuinfo, ifconfig, состояние сети, порты, процессы, права доступа к файлам, состояние устройства и т. д.
Теперь как мне сделать так, чтобы моя учетная запись службы выполняла только тот скрипт, который я создал? Кроме этого эта учетная запись не должна ничего делать. Даже если кто-то войдет на мой сервер с учетными данными учетной записи службы, он не сможет выполнять даже такие базовые команды, как ls, cp, mv, date и т. д., за исключением выполнения скрипта.
решение1
на основе вашего предметакак ограничить доступ к учетной записи в linux,
вы бы создали эту учетную запись, а также новую группу для нее, где имя группы могло бы быть таким же, как имя учетной записи, например. Результатом было бы то, что только эта учетная запись пользователя была бы в этой новой группе, и она была бы совершенно уникальной, где ничто другое в системе не имело бы прав владельца или группы, связанных с этим новым именем учетной записи службы и группой учетной записи службы. Затем установите свой скрипт bash так, чтобы он принадлежал этой учетной записи службы и имени группы служб. Кроме того, установите оболочку входа для этой учетной записи либо , /bin/false
либо /bin/nologin
.
В чем разница между /sbin/nologin и /bin/false
Однако помните, что вы только что создали новую учетную запись с единственной целью — запустить скрипт.ТЫсоздано. С точки зрения безопасности вы только что сделали дополнительный шаг, который не имеет большой ценности, и теперь любой, кроме вас, кто увидит эту новую учетную запись службы, работающую в фоновом режиме, не зная об этом, будет чесать голову и задаваться вопросом, что это, черт возьми, такое.
Лучший способ — оставить его владельцем, поскольку это ваш сценарий.вы являетесь действительным пользователем, и все узнают вашу учетную запись, если она привязана к какому-либо запущенному процессу- а затем используйте бит setuid в вашем скрипте, чтобы предоставить ему разрешения на выполнение задач, поскольку большинство из того, что вы упомянули для проверки свойств системы, требуют привилегий root.
Я упомянул использование SETUID, но это было неверно, потому что вы используетескрипт оболочкипо причинам, которые можно объяснить здесь: Разрешить setuid для скриптов оболочки
Однако если вы пишете и компилируете программу для выполнения необходимых вам задач, исполняемый файл которой будет принадлежать вам, то вы можете воспользоваться SETUID для этого исполняемого файла: