Единственный способ, которым вы могли бы это сделать, - это прокси-программа, которая является корнем 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.
"и выполняет код от имени недоверенных сторон" ... ", чтобы сделать это более безопасным". Как это будет безопасно. Вы получаете и выполняете недоверенные команды. = :) –
@simon: в чем проблема? если я хочу запустить другой код на своем компьютере, в брандмауэрной, не-root, другой учетной записи, какой ущерб они будут делать? – flybywire
andy, как насчет отправки много спама? Возможно, они не смогут отправить их напрямую, но я готов поспорить, что они могут попасть в местную почтовую катушку, если она у вас есть. – Joshua