Как команда 'passwd' получает разрешения пользователя root?

Я сомневаюсь, что Вы собираетесь найти столь же интересный ответ относительно вопроса о тильде!

Я не был там, но.. похож на замещающий знак (...), который имеет смысл в контекстах как cd ../../../there. Кроме того, и особенно смотря на Вас olde клавиатура терминала от случая тильды, с этой целью нет многих имеющих право символов. Вы не должны смещаться для ., также. Это прекрасно.

То, что точечный префикс используется для скрытых файлов, могло бы быть другой причиной. Скрытые файлы не перечислены по умолчанию инструментами такой как ls, таким образом, ни один не чрезвычайно избыточное . и ... Избыточный в том смысле, что нет никакого смысла, рассматривая их наряду с другими файлами - они, конечно, полезны иначе.

Как оказалось, у меня может быть он назад... из Википедии:

Понятие, что имена файлов, которым предшествует a'.', должны быть скрыты, является результатом программной ошибки в первые годы Unix. Когда специальное предложение '.' и '..' записи каталога были добавлены к файловой системе, было решено, чтобы команда ls не отображала их. Однако ls программа была по ошибке записана для исключения любого файла чье имя, запущенное с a'.', а не только названных '.' файлов или '..'.

Это действительно оказывается полезным при программировании; так как система действительно включает. и.. в ответ на readdir() введите команды (и окружите шарики), игнорируя их, и скрытые файлы могут быть выполнены тот же путь.

Другое мнение о том значении использования находится в ссылке для кавычки Википедии. Конечно, целая история могла быть недостоверной..., немного трудно полагать, что, например, Dennis Ritchie, изображенный, просто проверив на первый символ, был бы хорошо.

Я не соглашаюсь с автором vis, было бы лучше поместить скрытые конфигурационные файлы в их собственный каталог, а не дать им универсальный префикс. Префикс намного более гибок, допуская директивы в дереве как .gitignore и .htaccess. Свидетель, что файлы того вида также появляются вместе при лексикографической сортировке - поэтому, возможно, это было нарочно, в конце концов.

6
08.12.2014, 15:58
2 ответа

passwd программа имеет setuid набор битов, с которым Вы видите ls -l:

-rwsr-xr-x 1 root root 39104 2009-12-06 05:35 /usr/bin/passwd

Это s (четвертый символ строки).

Все программы, которые имеют этот набор бита полномочий, выполненный как владелец той программы. В этом примере пользователь root (третье слово строки).

Эти setuid программы должны удостовериться, что они ничего не повреждают, так как каждый пользователь системы может выполнить их с эффективными полномочиями пользователя root. Вот почему можно только изменить собственный пароль. Linux и другие подобные операционные системы все еще безопасны, потому что авторы этих setuid программ проявляют большую заботу.

Посмотрите, например, suexec.c от веб-сервера Apache, который является популярной setuid программой. В том исходном коде существует необычно много комментариев.

11
27.01.2020, 20:23

В качестве дополнения к ответу Роланда Иллига, вполне возможно написать программу, которая, получив права root'а, различными способами повреждает системные файлы и/или компрометирует вашу систему.

Проблема в том, что просто пишет , но это не значит, что она автоматически запускается от имени root - ей нужно, чтобы ее владелец установил root, и тогда бит setuid, на который ссылается Роланд, должен быть установлен - и только root имеет на это право.

Вкратце: Да, каждый двоичный файл с установленным битом setuid, по крайней мере, потенциально представляет собой риск для безопасности. Использование недостатка в бинарном файле с множеством битов setuid для получения привилегий root является наиболее распространенным источником так называемых Privilege Escalation атак, и они, как правило, имеют большое значение, когда они происходят. Из-за этого, существует относительно немного программ, которые используют setuid, и те, которые существуют, как правило, находятся под пристальным вниманием.

3
27.01.2020, 20:23

Теги

Похожие вопросы