Что вы можете сделать, это создать специального пользователя для выполнения команд, которые пользователи скрипта дают вам. Убедитесь, что этот пользователь заблокирован согласно вашим требованиям безопасности.
Скажите, что вы хотите, чтобы это имя пользователя было scriptkiddie
(для смеха), тогда вы можете создать этого пользователя следующим образом.
$ useradd scriptkiddie
Затем оберните любую системную команду (здесь я буду использовать nmap -Pn -p22 10.0.0.0/8
, команду, требующую root
), которую ваш сценарий будет выполнять от имени пользователя сценария в команде runuser
.
runuser
будет запускать все, что вы дадите, в контексте любого пользователя, которого вы укажете.
$ runuser -l scriptkiddie -c 'nmap -Pn -p22 10.0.0.0/8'
В Python вы можете использовать format(...)
, чтобы ввести любую команду, которая вам дается .
"runuser -l scriptkiddie -c {}".format(user_cmd)
Этот метод не позволит любому пользователю запускать команду в контексте root
, поскольку все команды будут выполняться в контексте нового пользователя scriptkiddie
.
.