Вас может заинтересоватьQubes OS ,который позволяет запускать множество контейнеров Linux (или любой другой ОС ), используя один или несколько шаблонов ОС.
Например, мы можем использовать шаблон Debian , установить на него необходимые программные пакеты, а затем запустить контейнеры (личные, рабочие и эксперименты).
В этом сценарии все, что вы будете делать в контейнере экспериментов, никак не повлияет на сам шаблон или какой-либо другой контейнер.
В Qubes OS VM Manager вы также можете делать снимки , как и в VirtualBox.
Это можно сделать с помощью атрибута файла set user id:
# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
root 1234 0.0 0.0 ... 0:00 sleep 1000
ЭТО БОЛЬШАЯ УГРОЗА БЕЗОПАСНОСТИ!
Если вы хотите запустить что-то как кто-то другой (, а не root
, как здесь ), это возможно:
# chown pulse /usr/bin/sleep
# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
pulse 1234 0.0 0.0 ... 0:00 sleep 1000
Если вы не являетесь пользователем root, вы можете разрешить кому-то другому выполнять команду от вашего имени:
# id -nu
john
# ls -l a.out
-rwxr-x--- 1 john users 50923 Mar 25 10:17 a.out
# chmod go+rx,u+s a.out
# ls -l a.out
-rwsr-xr-x 1 john users 50923 Mar 25 10:17 a.out
(обратите внимание на "s" вместо "x" в "rwx...". Это означает, что флаг set user id установлен)
Тогда, какjane
:
# id -nu
jane
# ~john/a.out
Эта команда a.out
будет запущена как john
.
How can you run a command (e.g. iftop or similar) that requires root privileges from a non-root user and without using SUDO in front?
Есть по крайней мере 2 способа разрешить не -пользователи root используют iftop, но им обоим требуется root-доступ.
Более безопасный метод — назначить возможность cap_net_raw
бинарному файлу iftop:
sudo setcap cap_net_raw+ep "$(command -v iftop)"
Менее безопасный метод — назначить setuid root:
sudo chmod +s "$(command -v iftop)"
Alternatively, how can you give root privileges to a user without becoming root?
Вы не можете.