


Выставление бита SUID в системе Linux.
Здравствуйте. Подскажите пожалуйста щарящие добрые люди, по данному биту в уровне прав. Вот читаю мануал, но не могу понять. Вот вырезка текста что собственно не понятно:
"У команды passwd в Linux установлен бит SUID.
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 23420 Aug 3 2010 /usr/bin/passwd
Это можно увидеть в третьем поле прав доступа. ‘S’ вместо ‘x’ указывает, что установлен бит SUID.
С установленным битом SUID, когда обычный пользователь (скажем, student) запускает команду passwd, команда запускается с владельцем «root», а не с учетной записью student, поскольку root является владельцем этого файла.
Это необходимо, потому что пароли хранятся в файле /etc/shadow, который не имеет разрешения на групповом или другом уровне.
$ ls -l /etc/shadow
-r-------- 1 root root 1027 Jul 13 21:56 /etc/shadow
Вы должны понимать, что все пользователи не могут получить разрешение на чтение или запись этого файла по соображениям безопасности; в противном случае они будут читать / изменять пароли других пользователей.
Таким образом, это вызывает проблему: если у пользователей нет прав доступа к этому файлу, как они будут изменять свои собственные пароли?
SUID немного решает проблему.
У команды passwd установлен бит SUID, поэтому, когда обычные пользователи выполняют эту команду, они запускают ее под владельцем root, то есть владельцем команды passwd."
Как я понял из данного описания, сам процесс usr/bin/passwd запускается от имени root. Но ведь запуск от этого пользователя должен позволять и запись в файл паролей /etc/shadow ?
Как происходит разграничение? Не пойму логику, объясните пж. Если процесс запущен от админа пользователь может поменять только свой пароль или всё таки все? Если только свой то почему остальных не может ведь записывает он в этот файл от имени root? Или нет?......Чет не едут у меня лыжи.....
Да, вы правильно поняли, что процесс /usr/bin/passwd запускается от имени root благодаря установленному SUID биту. Однако, даже если процесс запущен от имени root, он не может прочитать или изменить пароли других пользователей, потому что файл /etc/shadow имеет права доступа только для пользователя root.
Каждый пользователь имеет свой уникальный идентификатор пользователя (UID), который определяет его права доступа к файлам и каталогам в системе. Когда обычный пользователь запускает команду passwd под управлением процесса root, процесс использует UID пользователя, который запустил команду passwd, чтобы определить, какие записи паролей в файле /etc/shadow можно читать или изменять.
Также следует учитывать, что, даже если пользователь может изменять свой собственный пароль, это не означает, что он может иметь доступ к файлу /etc/shadow или прочитывать пароли других пользователей. Система предоставляет только те права доступа, которые были назначены каждому пользователю, чтобы обеспечить безопасность и соблюдать конфиденциальность данных.