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