В линуксе есть система прав доступа, на каждом файле висят флаги read-write-execute, последовательно для владельца файла, для группы и для всех прочих.
Как технически происходило разделение execute от read? Если ты можешь прочитать файл, ты можешь загрузить его и передать ему управление, не так ли?
Здравствуйте, Слава, Вы писали:
С>Как технически происходило разделение execute от read? Если ты можешь прочитать файл, ты можешь загрузить его и передать ему управление, не так ли?
Можешь. Но не обязательно хочешь.
Вот и ядро. Могло бы и исполнить файл без битика x. Но не хотело. А поэтому, не исполняло.
P.S. r без x — это защита, скорее, не от того, чтобы что-то ужасно-вредное нельзя было исполнить, даже если его можно прочитать, а чтобы случайно всякая муть, не предназначенная для исполнения, и не исполнялась.
Здравствуйте, Слава, Вы писали:
С> Как технически происходило разделение execute от read? Если ты можешь прочитать файл, ты можешь загрузить его и передать ему управление, не так ли?
В дополнение к предыдущему. Есть еще SUID / SGID / sticky биты (sudo, passwd и т.д.)
Здравствуйте, Anton Batenev, Вы писали:
AB>В дополнение к предыдущему. Есть еще SUID / SGID / sticky биты (sudo, passwd и т.д.)
Я к курсе о них. Более полно мой вопрос звучит примерно как "о чём думали те дураки, кто это сделал, такую опциональную безопасность, и не потому ли до сих пор оно всё дырявое, (см. замечательный язык Си и сопутствующее), что отцы-основатели не соображали?".
Здравствуйте, Слава, Вы писали:
С> Я к курсе о них. Более полно мой вопрос звучит примерно как "о чём думали те дураки, кто это сделал, такую опциональную безопасность
Ну это было так давно, когда все люди были братьями и сестрами и о безопасности особо никто не думал.
Однако, справедливости ради, данное инженерное решение оказалось настолько хорошим, что живет и по сей день несмотря на наличие всяких xattr acl, sssd и им подобных, которыми пользуются очень и очень редко (просто за ненадобностью).
Здравствуйте, Anton Batenev, Вы писали:
AB>Однако, справедливости ради, данное инженерное решение оказалось настолько хорошим, что живет и по сей день несмотря на наличие всяких xattr acl, sssd и им подобных, которыми пользуются очень и очень редко (просто за ненадобностью).
Данное инженерное решение до сих пор живёт потому же, почему в мейкфайлах до сих пор путаница с табами и пробелами. Легаси. Не было фашиста с железной палкой, надзорного органа, который сказал бы "так делайте, а так — не делайте".
У acl возможно очень ограниченное применение, я сейчас точно не вспомню, но что-то вроде "acl работают только в рамках уже имеющихся rwx", сталкивался я с этим больше 10 лет назад и сильно удивился кривизне.
Здравствуйте, Слава, Вы писали:
С> Данное инженерное решение до сих пор живёт потому же, почему в мейкфайлах до сих пор путаница с табами и пробелами.
Так нет же никакой путаницы. TAB и все.
С> У acl возможно очень ограниченное применение, я сейчас точно не вспомню, но что-то вроде "acl работают только в рамках уже имеющихся rwx", сталкивался я с этим больше 10 лет назад и сильно удивился кривизне.
Да пофиг на самом деле — этим почти никто не пользуется, т.к. для типичных домашних кейсов более чем хватает стандартных прав. А в промышленности и подавно при текущей изоляции можно работать хоть под root (который давно не root и никаких особых прав не дает).
Здравствуйте, Слава, Вы писали:
С>Как технически происходило разделение execute от read? Если ты можешь прочитать файл, ты можешь загрузить его и передать ему управление, не так ли?
Если ты уже исполняешь какой-то произвольный код, то там не до битов x. Исполняй сразу любой код, хоть сам компилируй на лету. Зачем тебе какие-то левые бинари?
Это в общем-то не про защиту, а про признак исполняемости. Чтобы, например, в PATH не запускались файлы, которые не должны так запускаться.
С другой стороны, на файл может стоять x, но отсутствовать r, и ты сможешь его исполнить. Вот тебе и разделение.
Ну и про setuid уже упоминали. Даже если ты можешь прочитать какой-нибудь /bin/passwordless_sudo, толку от этого ноль, если у тебя прав на исполнение оригинала нет.