2009-07-13 14 views
1

Я хочу написать сервер, который получает и выполняет код от имени недоверенных сторон.Ubuntu: разрешить пользователю без полномочий root создавать и олицетворять пользователей

Чтобы сделать это более безопасным, я хочу, чтобы код запускался как пользователь, созданный исключительно для запуска этого кода, а затем удаленный.

Как я могу предоставить пользователю, не являющемуся пользователем root, разрешение создавать, олицетворять и удалять других пользователей?

+2

"и выполняет код от имени недоверенных сторон" ... ", чтобы сделать это более безопасным". Как это будет безопасно. Вы получаете и выполняете недоверенные команды. = :) –

+1

@simon: в чем проблема? если я хочу запустить другой код на своем компьютере, в брандмауэрной, не-root, другой учетной записи, какой ущерб они будут делать? – flybywire

+0

andy, как насчет отправки много спама? Возможно, они не смогут отправить их напрямую, но я готов поспорить, что они могут попасть в местную почтовую катушку, если она у вас есть. – Joshua

ответ

1

Единственный способ, которым вы могли бы это сделать, - это прокси-программа, которая является корнем setuid (т. Е. Chown root-my-proxy-process; chmod 47nn my-proxy-process. И эта прокси-программа setuid позаботится об обработке соображений безопасности , setuid'ing указанному пользователю и т. д.

Однако проблемы безопасности с этим должны быть достаточно ясными. Один из способов, которым это может быть ограничено, - обеспечить, чтобы ваш процесс, не связанный с правами, выполнялся с пользователем в группе имен. chown thet proxy command с корнем: myprivategroup и chown it 4710, так что только пользователи, которые являются членами myprivategroup, могут его выполнить.

Это, вероятно, так же безопасно, как и может быть. Убедитесь, что прокси-процесс является хорошим и безопасным и заблокирован, поэтому только соответствующие пользователи могут запускать его через членство в группе.

Если есть какие-либо другие ограничения, которые, как вы знаете, могут применяться к пользовательским процессам, тогда прокси-программа может подтвердить, что процесс соответствует этим правилам. Обратите внимание, что в то время как это может быть разрыв остановки, для кого-то не может существовать «технология», которая проходит тесты.

Для дополнительной безопасности (рекомендуется) используйте песочницу или тюрьму chroot, как указано mark4o.

1

Возможно, вы можете предоставить разрешения для пользователей без полномочий root с помощью sudo и/etc/sudoers, но этот способ кажется небезопасным и не линейным. Я не знаю, что вам нужно, но, возможно, вы можете предварительно создать некоторых пользователей, а затем использовать их.

0

Это проблема, поскольку вы не можете использовать скрипт su vie без терминала (возможно, это функция безопасности). Я уверен, что вы можете взломать свой путь через это, но это, вероятно, было сделано по уважительной причине.

Смежные вопросы