4

Когда я получил исполняемый файл с правами только для чтения (чтение и выполнение с правами root), я всегда могу скопировать его в свой домашний каталог, где у меня есть разрешение на полный доступ. Затем я установил новый файл для чтения и выполнения. Хорошо, я могу выполнить это.

Это действительно необходимо для файлового режима? Я знаю, что для каталогов это означает другое.

6 ответов6

11

Потому что * nix недостаточно поврежден, чтобы сделать файл "исполняемым двоичным файлом", если вы назовете его ".exe" или "исполняемым файлом", если вы назовете его ".bat".

В Linux имя файла не имеет значения.

И разрешения, которые вы даете файлу , имеют значение.

Какой вид имеет смысл. ПО МОЕМУ МНЕНИЮ...

4

Бит выполнения несколько путается между разрешением и идентификатором типа объекта.

И нет, вы не можете "всегда копировать" файл в свой домашний каталог: только если он доступен для чтения.

Файлы могут быть исполняемыми для вас, но не читаемыми.

Вы правы в том, что если файл доступен для чтения, но не является исполняемым для вас, вы можете скопировать его, перевернуть бит выполнения и использовать его. Может быть. Но это может не сработать. Исполняемый файл может быть чувствительным к тому, где он установлен. Или файл может зависеть от его корневого бита setuid.

Я бы не стал разрабатывать систему разрешений таким образом, начиная с чистого листа; это не совсем имеет смысл. Разрешение на выполнение будет отделено от атрибута исполняемого типа, и разрешение на выполнение не будет перегружено разрешением поиска (даже если оно было сохранено таким образом; API не будет раскрывать его на уровне битовой маски).

1

Я удивлен, что никто не упомянул двоичные файлы, которые работают со специальными привилегиями. Wireshark имеет реальный пример использования: одна из его основных функций - захват сетевого трафика, что обычно может делать только root. Имеет смысл, что вы можете разрешить определенным пользователям перехватывать трафик с помощью Wireshark, не предоставляя им полный root-доступ, поэтому Wireshark поставляется с двоичным файлом с именем dumpcap котором включены необходимые функции (CAP_NET_RAW и CAP_NET_ADMIN). Этот двоичный файл - 0754 (rwxr-xr--), а связанный с ним GID - это специальная группа, которую устанавливает Wireshark. Таким образом, любой пользователь в группе может запустить двоичный файл (обычно через Wireshark) для захвата трафика, и он будет работать с необходимыми для этого привилегиями, но пользователь, не входящий в эту группу, не сможет, потому что он не сможет не иметь разрешения на исполнение. Они по-прежнему могут копировать его в свой домашний каталог, но тогда в их копии не будут установлены необходимые возможности, поэтому он фактически не сможет захватывать трафик.

1

Существует множество причин, по которым вы можете пометить файл как читаемый, но не исполняемый, особенно некоторыми пользователями или группами. Учтите следующее:

# /usr/local/sbin/foo.sh
-rwxr--r-- 1 root root 890 2012-02-17 21:09 /usr/local/sbin/foo.sh

# ~/bin/foo.sh
-rwxr-xr-x 1 user user 890 2012-02-17 21:09 /home/bin/foo.sh

Это может иметь смысл, если:

  1. Файлы разные - возможно, вы заменили каждый экземпляр "root" на "user" в скрипте - но ваш путь содержит /usr/local/sbin:/home/user/bin . Разрешения гарантируют, что при запуске foo.sh будет запущена измененная копия пользователя, даже если копия root будет первой в пути поиска, если будет установлен его бит выполнения.
  2. Файлы идентичны, но делают что-то другое во время выполнения в зависимости от базового имени, родительского каталога, домашнего каталога вызывающего пользователя или какого-то другого хитрого программирования. В таких случаях вы хотите , чтобы пользователи скопировали файл в другое место, прежде чем запускать его. Многие примеры сценариев удаляют бит выполнения, чтобы заставить пользователей копировать и настраивать.

В конечном счете, ничто не мешает вам скопировать любой файл, который вы можете прочитать, или даже просто запустить его напрямую с помощью sh /path/to/file . Отсутствующий бит выполнения для вашего пользователя или группы просто не позволяет вам сделать это случайно . Это не мера безопасности, и не следует принимать за нее.

1

Это хороший момент, и я думаю, что вижу, куда вы направляетесь.

Чтобы переосмыслить ваш вопрос: верно ли следующее утверждение - «Установка исполняемого файла в неисполняемый режим для пользователя не ограничивает возможности пользователя».

Я думаю, что это правда.

  1. Скопируйте файл в другой каталог.
  2. Измените exec Пермь.
  3. Запустите из любого pwd (в частности, из исходного каталога), указав полный путь к новой копии исполняемого файла с любыми аргументами командной строки.

Я не думаю, что чего-то еще не хватает, чего бы вы хотели, если бы была установлена exec perm исходного файла.

Под pwd я подразумеваю настоящий рабочий каталог.

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .