Добавить в корзинуПозвонить
Найти в Дзене
Дед в IT

Ох блин, что сейчас было

Я прям испугался, так испугался. Каким-то пока мне неизвестным способом я умудрился сделать своего пользователя на сервере владельцем каталога /usr. estorozhenko@bigbox:/opt/gitea-runner$ ls -alh /usr/ total 108K drwxr-xr-x 12 estorozhenko root 4,0K авг 5 2025 . drwxr-xr-x 24 root root 4,0K дек 6 11:04 .. drwxr-xr-x 2 estorozhenko root 36K фев 15 12:04 bin drwxr-xr-x 2 estorozhenko root 4,0K апр 22 2024 games drwxr-xr-x 37 estorozhenko root 16K фев 15 12:04 include drwxr-xr-x 90 estorozhenko root 4,0K фев 15 12:04 lib drwxr-xr-x 2 estorozhenko root 4,0K фев 4 06:29 lib64 drwxr-xr-x 13 estorozhenko root 4,0K янв 4 17:32 libexec drwxr-xr-x 11 estorozhenko root 4,0K ноя 22 09:21 local drwxr-xr-x 2 estorozhenko root 20K фев 10 06:27 sbin drwxr-xr-x 152 estorozhenko root 4,0K янв 18 09:52 share drwxr-xr-x 8 estorozhenko root 4,0K фев 10 06:28 src Собственно в Ubuntu, в котором root не имеет пароля и заблокирован это становится ОЧЕНЬ серьезной проблемой. ве

Ох блин, что сейчас было. Я прям испугался, так испугался. Каким-то пока мне неизвестным способом я умудрился сделать своего пользователя на сервере владельцем каталога /usr.

estorozhenko@bigbox:/opt/gitea-runner$ ls -alh /usr/

total 108K

drwxr-xr-x 12 estorozhenko root 4,0K авг 5 2025 .

drwxr-xr-x 24 root root 4,0K дек 6 11:04 ..

drwxr-xr-x 2 estorozhenko root 36K фев 15 12:04 bin

drwxr-xr-x 2 estorozhenko root 4,0K апр 22 2024 games

drwxr-xr-x 37 estorozhenko root 16K фев 15 12:04 include

drwxr-xr-x 90 estorozhenko root 4,0K фев 15 12:04 lib

drwxr-xr-x 2 estorozhenko root 4,0K фев 4 06:29 lib64

drwxr-xr-x 13 estorozhenko root 4,0K янв 4 17:32 libexec

drwxr-xr-x 11 estorozhenko root 4,0K ноя 22 09:21 local

drwxr-xr-x 2 estorozhenko root 20K фев 10 06:27 sbin

drwxr-xr-x 152 estorozhenko root 4,0K янв 18 09:52 share

drwxr-xr-x 8 estorozhenko root 4,0K фев 10 06:28 src

Собственно в Ubuntu, в котором root не имеет пароля и заблокирован это становится ОЧЕНЬ серьезной проблемой. ведь для любой административной команды нужна sudo, а при её запуске ты получишь:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

Но, как правильно отмеnтил мудрый русский народ, клин клином вышибают. На сервере установлен Докер и мой пользователь добавлен в группу docker что позволяет без sudo выполнять любые docker-команды. И тут проблема того? что сервис Докер работает из под root, и позволяет мне решить проблему.

Мы просто:

- запускаем контейнер,

- монтируем к нему всю файловую систему,

- в контейнере я уже рут,

- меняем права,

- PROFIT.

Теперь подробней. Запускаем контейнер с монтированием корневой ФС хоста

docker run --rm -it \

-v /:/host \

--privileged \

alpine sh

Флаг --privileged даёт контейнеру полный доступ к хосту. Попадаем внутрь контейнера и там уже чиним права и setuid бит:

chown root:root /host/usr/bin/sudo

chmod 4755 /host/usr/bin/sudo

exit

Теперь sudo должен работать, проверяем:

sudo whoami # должно вернуть "root"

Я такой умница! Я прям не могу себя перестать по голове гладить, как я ловко-то обошёл проблему и без загрузки в recovery mode. Естественно, я не первый до такого додумался :) Но сразу нагуглить такое решение не получилось, а тут БАЦ! и додумался. Вот что сон послеобеденный делает!

Но всё равно полдня за консолью прошли не зря... И главное ничего не сломалось необратимо. :)

P.S.

setuid биты кстати слетели на бинарниках в /usr, так что наверное сразу стоит добавить:

chmod 4755 /host/usr/bin/sudo

chmod 4755 /host/usr/bin/passwd

chmod 4755 /host/usr/bin/chfn

chmod 4755 /host/usr/bin/chsh

chmod 4755 /host/usr/bin/gpasswd

chmod 4755 /host/usr/bin/newgrp

chmod 4755 /host/usr/bin/pkexec

chmod 4755 /host/usr/libexec/dbus-1/dbus-daemon-launch-helper

надо рассказать что такое setuid и зачем он нужен? без него кстати sudo не работает с правильными правами.

P.P.S.

Как восстановил sudo я сразу же поменял рекурсивно все права на подкатологи и файлы в /usr/

chown -R root:root /usr/

и опять сломал setuid и пришлось опять через Докер их чинить.