Не могли бы вы объяснить, почему двоичный скомпилированный файл (например, в /usr/sbin
) имеет разрешение на запись для root
пользователя?
Для меня это составлено. Это означает, что прямая запись не имеет смысла и может как-то подвергнуть файл какой-либо проблеме безопасности.
Сценарий (например, bash
файл) может быть доступен для записи, потому что это в основном текстовый файл, но почему он одинаков для скомпилированного файла, где, насколько я знаю, запись не нужна?
Заранее благодарю за отзыв.
linux
files
permissions
root
t1m0th33
источник
источник
root
есть разрешение на запись в двоичный файл? Если ничего другого, это поможет при обновлении этого пакета.memmove()
чтобы переместить последнюю часть в конец и открыть отверстие, а затем вставьте новый текст в отверстие. Или вы можете использовать сериюpread()
/,pwrite()
чтобы сделать то же самое.ETXTBSY
). Вместо этого старый двоичный файл удаляется , а новый двоичный файл записывается в новый файл с тем же именем. Удаление файлов не требует разрешения на запись в них, просто в каталог, в котором они находятся (т. Е./usr/sbin/
).Ответы:
На самом деле не имеет значения, являются ли файлы в
/bin
(или любом другом стандартном каталоге, где хранятся исполняемые файлы) доступными для записи пользователем root или нет. На сервере Linux, который я использую, они доступны для записи root, но на моей машине с OpenBSD это не так.Пока они не доступны для записи ни группой, ни «другим»!
Нет проблем с безопасностью, например,
Если кто-то хочет перезаписать его, он должен быть пользователем root, а если он
root
и перезаписать его, то он либоЕще одна вещь, которую следует учитывать, - это то, что root может записывать в файл независимо от того, защищен он от записи или нет, потому что ... root.
Также обратите внимание, что «скрипт» является исполняемым файлом настолько же, насколько и двоичный файл. Скрипт не должен быть доступным для записи «потому что это текстовый файл». Во всяком случае, он должен иметь такое же разрешение, как и другие исполняемые файлы в том же каталоге.
Не изменяйте права доступа ко всему сейчас! Это может привести к разного рода хаосам и может привести к путанице в работе менеджеров пакетов, которые могут проверить правильность установки разрешений. Это также может сделать систему уязвимой, если вы случайно неверно измените разрешения для критически важного приложения.
Просто предположите, что права доступа к исполняемым файлам установлены правильно, если только вы не найдете что-то, что выглядит действительно странно, и в этом случае вам, вероятно, следует обратиться к соответствующему сопровождающему пакета, чтобы проверить, а не начать что-то менять.
Из комментариев и в чате , был звонок для некоторой истории.
История разрешений для двоичных файлов в Linux - это не то, о чем я ничего не знаю. Можно предположить, что они просто унаследовали разрешения от каталога или просто от
umask
Linux по умолчанию , но я действительно не знаю.Что я знаю, так это то, что OpenBSD устанавливает двоичные файлы в базовой системе 1 с режимом разрешений 555 по умолчанию (
-r-xr-xr-x
). Это указывается во фрагменте Makefile, в/usr/share/mk/bsd.own.mk
котором установленоBINMODE
значение 555 (если оно уже не установлено). Это позже используется при установке исполняемых файлов во времяmake build
в/usr/src
.Я просмотрел аннотированный журнал CVS для этого файла и обнаружил, что эта строка в файле не изменилась, поскольку она была импортирована из NetBSD в 1995 году.
В NetBSD файл был впервые помещен в CVS в 1993 году с
BINMODE
значением 555.Похоже, что в проекте FreeBSD использовался тот же файл, что и в NetBSD, по крайней мере с 1994 года , и при последующей фиксации в сообщении о фиксации добавляется подсказка о том, что старые файлы были из версии 4.4BSD дистрибутива программного обеспечения Berkeley.
Кроме того, CSRG в Беркли хранил источники в SCCS, но их хранилище доступно в форме Git на GitHub 2 . Файл , который мы даем на forencic здесь для пропитки , кажется, было совершено по Keith Бостик (или кто - то в непосредственной близости от него) в 1990 году.
Вот такая история. Если вы хотите почему , тогда, я полагаю, нам придется спросить Кейта. Я как бы надеялся увидеть сообщение о фиксации изменений, говорящее « это должно быть 555, потому что ... », но нет.
1 Системы BSD более строго разделены на «базовую систему» и «сторонние пакеты» (порты / пакеты), чем Linux. Базовая система представляет собой единое целое, которое предоставляет полный набор средств для запуска операционной системы, в то время как порты или пакеты рассматриваются как «локальное программное обеспечение» и устанавливаются под ним
/usr/local
.2 Также доступно более полное GitHub-хранилище версий Unix, начиная с 70-х годов .
источник
root
.chmod -R
на/usr
или/var
, и удивление - ихsudo
не работает , или еще что - то не работает.