Сценарии оболочки требуют выполнения разрешения на чтение, но двоичные файлы этого не делают:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Отображение содержимого файла и его выполнение - это две разные вещи. С сценариями оболочки эти вещи связаны, потому что они «выполняются» путем «чтения» их в новую оболочку (или текущую), если вы простите упрощение. Вот почему вы должны иметь возможность читать их. Двоичные файлы не используют этот механизм.
Для каталогов разрешение на выполнение немного отличается; это означает, что вы можете делать что-то с файлами в этом каталоге (например, читать или выполнять их). Допустим, у вас есть набор инструментов, /tools
которые вы хотите, чтобы люди могли использовать, но только если они знают о них. chmod 711 /tools
, Тогда исполняемые файлы /tools
могут быть запущены явно (например /tools/mytool
), но ls /tools/
будут отклонены. Точно так же могут храниться документы, /private-docs
которые можно прочитать, если и только если известны имена файлов.
cd
это сделать.stdio.h
здесь. Я предлагаю удалить это.ls
и завершение табуляции делает работу по обслуживанию раздражающей, и это дает мало фактических преимуществ безопасности. Большинство файлов, которые могут заинтересовать злоумышленника, в любом случае находятся в известных стандартных местоположениях, или их местоположения могут быть обнаружены косвенно из данных в других файлах (иначе как программы, которые законно используют эти файлы, узнают, где их найти?).В Gentoo исполняемым программам, для которых установлен setuid (настроен на запуск с разрешениями их владельца, а не их вызывающего), доступ к чтению запрещен (режим 4711). Это должно добавить слой защиты от эксплуатации ошибок, чтобы помочь в повышении привилегий.
Если непривилегированный злоумышленник может прочитать файл setuid и знает об ошибке, которая допускает атаку в стиле возврата к libc , он может использовать содержимое файла, чтобы предсказать, где могут оказаться определенные полезные функции или библиотеки. помещается в память при вызове программы.
Современные системы часто включают дополнительные более эффективные средства защиты, такие как ASLR , но ограничения, существующие в 32-разрядных платформах, могут сделать их более легкими в использовании.
источник
Похоже, что значение «выполнить только» не имеет большого значения для файла, но его можно использовать, чтобы предотвратить чтение содержимого каталога.
источник
Вы должны иметь права на чтение и выполнение, чтобы выполнить скрипт. Чтение содержимого скрипта - это то, что позволяет ему выполняться, поэтому вам нужно уметь это делать
read and execute
. В противном случае вы не сможете запустить скрипт без него.Безопасность. Некоторые могут захотеть защитить свои файлы и помешать другим запускать или использовать их.
источник
chmod 000
Будут рассматривать разрешения никому, кромеroot
. Иногда вам не нужно заходить так сильно только для защиты - это зависит от намерений пользователя. Для того, чтобы, скажем, «повторно смоделировать» файл обратно с правами на чтение и запись, вы должны сделать это черезroot
. Если вы не можете получить доступroot
, это будет трудно./tools
которые вы хотите, чтобы люди могли использовать, но только если они знают о них.chmod 711 /tools
, Затем выполнимые вещи в/tools
могут быть запущены в явном виде, ноls /tools/
будет отказано.