Пользователь 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; так что каждый пользователь в системе может запустить корневую оболочку!