4

Я пытаюсь изменить содержимое файла /etc /shadow, но понимаю, что он доступен только для чтения

sghk1> ls -l /etc/shadow
-r--------   1 root     sys         4045 Aug 19 16:13 /etc/shadow

Разрешение файла /etc /shadow доступно только для чтения. в таком случае как /usr /bin /passwd меняет свое содержимое?

e.g. passwd -x 30 username

1 ответ1

5

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .