
Я знаю, что мы можем выполнить команду/скрипт как супер/другой пользователь, используя sudo
команду. Но есть ли возможность, когда sudo
сама утилита недоступна/удалена пользователем. Если да, то какая может быть альтернатива, кроме sudo
? su
Кроме того, делают sudo
и su
служат той же цели?
решение1
'sudo' позволяет вам запускать любую программу от имени любого пользователя. Это 'setuid root', так как сама программа требует для этого права root. Сила sudo в том, что вы можете легко настроить, кто что может делать. Вы можете разрешить пользователю запускать nmap (и только nmap) с помощью sudo.
'su' позволяет вам запускать оболочку как любой пользователь. Когда вы запускаете оболочку, вы, очевидно, можете запустить любую другую программу. Поэтому это более опасно; в хорошо администрируемых системах su
доступ, как правило, отключен, но sudo
может быть доступен для отдельных программ.
Причина, по которой используются две программы выше, — подотчетность. Sudo регистрирует все сделанные запросы. Поэтому администратору очень легко отслеживать, что сделал пользователь, используя привилегии root. Если вы предоставляете доступ к оболочке, пользователь может делать все, что ему/ей захочется (это «черная дыра»). (Конечно, расширенное ведение журнала на уровне ядра этому препятствует).
Конечно, эти программы также могут быть помечены setuid
. Это изменяет разрешения владельца двоичного файла при его выполнении. Если вам удастся активировать бит setuid
на eg /bin/bash
и установить владельца /bin/bash
на root
, вы будете root каждый раз, когда вы выполняете /bin/bash
.
Наконец, физический доступ к машине позволит вам делать все, что вам угодно. Вы можете загрузиться с флэш-накопителя и получить доступ к локальной файловой системе. Вы даже можете настроить свой загрузчик на использование другого init
процесса, который немедленно запускает оболочку в однопользовательском режиме (не запрашивая пароль).
решение2
Похоже, никто не ответил на вопрос, существуют ли альтернативы sudo, помимо su, поэтому вам может быть интересно узнать, что на сайте sudo на самом деле имеется список альтернатив sudo:
Список включает как программное обеспечение с открытым исходным кодом, так и коммерческое. Вот альтернативы sudo с открытым исходным кодом, перечисленные на данный момент:
-
- Сейчас не существует? Ссылка:SUS: объектно-справочная модель для распределения привилегий суперпользователя Unix
Priv: безопасное и гибкое распространение привилегированного доступа
op: контролируемое повышение привилегий (гибкая альтернатива sudo)
При этом я никогда не использовал ни одну из этих альтернатив, и я никогда не видел и не слышал о них в каком-либо другом контексте. Также кажется, что по крайней мере некоторые из них являются экспериментальными, несуществующими или иным образом не поддерживаются. У меня сложилось такое впечатление, что sudo
это su
единственная настоящая игра в городе.
решение3
Войдите в систему как пользователь root (если это разрешено на вашем терминале) или перезагрузите компьютер и войдите в систему, указав init=/bin/bash в командной строке, чтобы восстановить требуемую функциональность.
Хочу отметить, что удалить sudo может только пользователь root.
sudo и su выполняют схожие, но разные функции. «sudo» позволяет вам делать что-либо с правами доступа другого пользователя, в то время как «su» позволяет вам «стать» этим пользователем и вести себя как он.
решение4
Если машина установлена openssh-server
, то альтернативой sudo
может быть:
ssh root@localhost ..command.. ..goes.. ..here..
Если он не был отключен, то есть, su
как вы упомянули:
su - root -c "..command.. ..goes.. ..here.."