Я часто слышал, что лучше использовать su для получения root-прав, а не входить напрямую как пользователь root (и, конечно, люди также говорят, что еще лучше использовать sudo). Я никогда не понимал, почему одно лучше, чем другие, понимание?
Я часто слышал, что лучше использовать su для получения root-прав, а не входить напрямую как пользователь root (и, конечно, люди также говорят, что еще лучше использовать sudo). Я никогда не понимал, почему одно лучше, чем другие, понимание?
Ответы:
Вывод только su
или sudo
когда требуется.
Большинство повседневных задач не требуют корневой оболочки. Поэтому рекомендуется использовать непривилегированную оболочку в качестве поведения по умолчанию, а затем повышаться до уровня root, когда вам нужно выполнить специальные задачи.
Тем самым вы уменьшаете возможности для опасных ошибок (плохие сценарии, неуместные подстановочные знаки и т. Д.) И уязвимостей от любых приложений, которые вы используете. Особенно те, которые подключаются к Интернету - см. Старую поговорку «Не IRC как root» .
sudo
часто рекомендуется, потому что это позволяет вам детализировать и проверять использование таких привилегий.
Соблюдая эти правила, вы также можете отключить удаленный вход в систему. Это увеличивает полосу входа для любого потенциального злоумышленника, поскольку он должен был бы скомпрометировать как обычную учетную запись пользователя, которая была членом группы «wheel» и в идеале авторизованную только открытыми ключами SSH, так и саму корневую учетную запись.
sudo
это и лучше, но su
также позволяет вам использовать -m
флаг, чтобы переменные среды оставались неизменными, пока вы находитесь в корневом терминале. Ничто не побуждает меня больше помешаться, чем su
немного подручиться, только сделать что-то с ~
именем каталога и заставить его не работать.
Вы должны отключить доступ с правами root с удаленного компьютера, чтобы злоумышленник не смог скомпрометировать root, не скомпрометировав сначала пользователя, а затем не перейдя к root. Мы включаем root-доступ только на консоли.
Плюс это создает ответственность. :)
Основная причина заключается в создании контрольного журнала. Если вам нужно войти в систему как обычный пользователь, а затем su, можно отследить, кто отвечает за данные действия.
sudo также автоматически регистрирует каждую команду в системном журнале, и вы можете определить команды, которые может использовать каждый пользователь.
sudo vim foo.txt
затем перетаскивание в оболочку изнутри vim даст вам корневую оболочку без обычной регистрации в sudo.
sudo -i
получить интерактивную сессию ...
Еще одна веская причина: при переходе с правами суперпользователя с помощью sudo пользователь проходит аутентификацию с использованием своих собственных учетных данных, что означает, что ему не обязательно указывать пароль root, что упрощает блокировку, когда кто-то покидает вашу организацию.
Если вы хотите создать контрольный журнал и не хотите стать жертвой проблем «sudo su -» или «sudo vim foo.txt», упомянутых здесь, вы можете использовать «sudosh». Раздайте root-доступ через sudo, но сделайте единственную допустимую команду для запуска sudosh.
sudosh - это оболочка журналирования, и вы можете воспроизвести весь сеанс терминала позднее, показывая точно, что пользователь увидел на своем терминале.
Вы должны практиковать безопасность глубоко.
Запретить удаленный root-доступ (или хотя бы root-доступ через пароли). (если вы разрешаете root-доступ через ключи, тщательно управляйте этими ключами или, что еще лучше, используйте что-то вроде kerberos, которое позволяет централизованно отзывать ключи).
Я бы отключил su и использовал sudo. Таким образом, пользователи используют ключи (желательно зашифрованные) для доступа к системе, затем они используют свой пароль только для повышения привилегий. Вы можете ограничить доступ к каким программам людям с помощью sudo, но в основном вы ограничиваете доступ только тем, кто знает пароль root.
В идеальном мире вы должны иметь возможность публиковать свои корневые пароли в Интернете, и это не имеет значения, даже если вы предоставили людям доступ к вашему компьютеру (но не поместили их в файл / etc / sudoers). Конечно, вы не должны публиковать пароль root, но идея в том, что вы защищаете свои системы с помощью концентрических уровней защиты.
Если вы используете root на регулярной основе, то ваши права доступа могут быть неправильными, или вам может потребоваться предоставить права sudo или права новой группы для r / w / x файлов или каталогов.
Хорошие схемы разрешений - это то, что даже давние пользователи Linux ошибаются или не осознают того, что имеют.
Даже не заводите меня на то, что сделал Ubuntu!