сбрасывается пароль root? Именно поясняется, типа зачем и почему, а не просто список команд
https://t.me/grouplinux/1707964
А что там описывать пошагово? Смена пароля это буквально сменить хэш в shadow файле. Обычные юзеры туда писать не могут, так что нужно а) запустить систему так, чтобы стать рутом без ввода пароля (например, подменить инит на шелл, он запустится от юзера root), или б) взять диск с системой и смонтировать rootfs в другой системе, где есть возможность залогиниться под рутом, и сменить пароль через passwd (там есть опция chroot, чтобы указать какой конкретно shadow файл редактировать)
Либо в) у тебя в системе имеется sudo/doas и есть юзер с паролем и возможностью повышать свои привелегии. Тогда просто запускаешь passwd с sudo и меняешь пароль юзеру (руту или другому юзеру)
А теперь вопрос: команда passwd тоже меняет этот файл. Как она это делает, если я запускаю ее не от рута и без судо?
Правильно :)
Интересно, возможно ли сделать работающий [от непривилегированного юзера] passwd без suid, с одними только capabilities
Можно дажэ безо всяких капабилитис. Делаешь сервис изменения пассвд, который принимает реквесты и аутэнтифицыроует их по юзеру, который его послал.
Очень здорово. А сервис как работать будет?
От пользователя, которому принадлежыт /etc/passwd
Ну т.е. мало того, что нужно держать в фоне сервис, он ещё и работать от рута должен. Шило на мыло
1) Нет, конечно, типичных векторов атак на сервисы — меньшэ, чем на бинарники, запускаемые из под юзера. И вообще, вопрос защиты таких сервисов отработан куда лучшэ. 2) Кстати, не обязательно от рута. Хотя, понятно, взлом этого сервиса всё равно даст практически рутовые привелегии.
Не вижу преимуществ в сервисе над бинарником с SUID. Только недостатки: будет ли оно работать, например, в чруте? Как оно будет аутентифицировать юзера в таком случае? И т.д. и т.п. If this is the solution, I want my problem back
>Не вижу преимуществ в сервисе над бинарником с SUID. Ну, ты вообще новичок в безопасности, так что это неудивительно. >будет ли оно работать, например, в чруте? Пробросишь туда сокет — будет. Или запустишь новый экземпляр. > Как оно будет аутентифицировать юзера в таком случае? Зависит от предыдущего пункта. А кого ты вообще собрался аутэнтифицыровать в чруте?
Ох, теперь пробросы сокетов, новые экземпляры. Нет, спасибо, такого решения точно не надо
Так, помнил ведь, что в owl что-то делали на эту тему... https://www.openwall.com/tcb/ Да, есть другой вариант. Все юзерские настройки (пароль там, в первую очередь, видимо shell ещё) лежат где-то в /etc/tsb/$USER Файлы там отданы пользователю, он можэт менять их невозбранно.
Обсуждают сегодня