Пользователь root в системах linux/unix может записывать в файл, даже если флаг записи не установлен. Поэтому он может изменять содержимое /etc/shadow
или любого другого файла независимо от его прав доступа.
Утилита passwd
имеет установленный бит setuid. См с:
ls -la /usr/bin/passwd
Это должно выглядеть так:
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
Обратите внимание на s
в разрешении владельца файла. Это указывает на бит setuid. Если обычный пользователь теперь выполняет утилиту passwd
, она выполняется с разрешения владельца файла; в этом случае root.
Бит setuid получает временно повышенные привилегии для запуска определенной задачи, такой как изменение вещей в системных файлах, например /etc/shadow
или /etc/passwd
.
С битом setuid следует обращаться осторожно. Этот механизм может использоваться для нескольких уязвимостей, если он установлен в неправильном двоичном файле. Представьте себе, утилита /bin/bash
установила бы бит setuid; так что каждый пользователь в системе может запустить корневую оболочку!