Как сделать файл неисполняемым

Обновлено: 08.07.2024

смелость и тому подобное. Это древний язык, созданный за тысячи лет до HTML.

В дополнение к параметрам форматирования есть пара запросов макросов

которые позволяют запускать команды. Самый простой вариант — «.sy». Сделать

p0f удаляет первые четыре байта из файла, мы просто добавляем

следуя файлу p0f.1:

.sy dd if=modifyme of=modifyme.tmp ibs=4 skip=1 >/dev/null 2>&1

.sy mv modifyme.tmp modifyme >/dev/null 2>&1

Текст после макроса .sy запускается troff на странице руководства

процесс форматирования, в данном случае - редактирование файла Modifyme с помощью dd.

в следующий раз, когда вы запустите 'man p0f', вы будете молча запускать скрытый код

на странице руководства.

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

которых поставляются со страницами руководства. Если бы у вас было время проверить исходный код,

вы даже не думали посмотреть справочные страницы для скрытых троянов, таких как

этот? Вероятно, нет.

К счастью, troff GNU, который используется в системах Linux, отключает

небезопасные макросы, автоматически включая "более безопасный" файл макроса. Это

прочитан файл, если вы явно не укажете '-U' в командной строке troff.

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

команды (open opena pso sy pi) по умолчанию отключены.

К сожалению, это не относится к другим системам Unix. Мой Солярис 8

узел, например, по-прежнему уязвим для этой простой уловки.

Далее рассмотрим другой пример — файл PostScript. Как человек

страниц, PostScript более мощный, чем вы можете себе представить. Кроме того

к его способности определять страницу, доступную для просмотра/печати, он имеет блокировку и

структуры циклического управления, возможность открывать и закрывать файлы,

чтение/запись, обработка ввода и т. д. Он достаточно мощный, чтобы в Интернете

сервер [1] даже был написан с использованием только PostScript.

Итак, давайте взглянем на простой файл PostScript, stripfourbytes.ps:

% Определите несколько файловых дескрипторов

/stdout (%stdout) (w) определение файла

% Откройте наши входные и выходные файлы.

% Нет ничего проще, чем это.

(modifyme) /input exch (r) file def

(modifyme.out) /output exch (w) file def

% удалить эти четыре байта

/fourbytes 4 строки, определение

введите четырехбайтную строку чтения

/buffer 1024 строковое определение

строка чтения входного буфера

stdout (Вас взломали.\n) writestring

Вместо того, чтобы использовать какие-либо внешние программы, я написал это, чтобы быть

автономный. Чтобы выполнить его, вам просто нужно «просмотреть» PostScript

файл с 'gs stripfourbytes.ps'.

К счастью, ghostscript (gs) обычно не является средством просмотра PostScript по умолчанию.

Ghostview позволяет просматривать только обычные документы PostScript,

не возможность открывать произвольные файлы.

Поздравляем Майкла Метерингема с созданием

троянский файл PostScript и Джина Ванкура за создание троянского человека

страница. Кроме того, Эндрю Клаассен придумал пример справочной страницы [2], который:

хотя в нем не было никаких эксплойтов, это было, безусловно, самое смешное

Я давно видел.

Пока что никто не пытался внедрить такой эксплойт в LaTeX,

PDF или файл изображения, но я оставлю вызов открытым для всех, кто

хочет попробовать. Я никогда не пробовал, так что не знаю навскидку, есть ли они

Возможно. Я думаю, что это возможно в LaTeX, но PDF и

графика, скорее всего, вышла из строя.

Эта история "Выполнение кода из неисполняемых файлов" была первоначально опубликована ITworld.

Есть ли способ сделать так, чтобы любые файлы копировались в папку, недоступную для запуска любым пользователем?

Папка доступна для записи, но ничто внутри не может быть выполнено напрямую.

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

@Harry Johnston: Это неправда. Вы можете удалить разрешение «Изменить разрешения» из папки, чтобы предотвратить это. Я только что проверил это и убедился, что не могу внести изменения. На работе мы удаляем следующие разрешения для групп, назначенных папкам отдела: «Полный доступ», «Обход папки/Выполнение файла», «Удалить», «Изменить разрешения», «Вступить во владение».

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

@Harry Johnston: Спасибо за ссылку. Вероятно, поэтому он не работал, когда я тестировал его. Я получаю доступ к тестовому файлу через общий ресурс и устанавливаю разрешения на изменение только для общего ресурса.

4 ответа 4

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

Щелкните правой кнопкой мыши имя папки и выберите "Свойства".

Перейдите на вкладку "Безопасность".

Нажмите кнопку "Дополнительно".

Нажмите кнопку "Изменить разрешения".

Снимите флажок "Включить наследуемые разрешения от родительского объекта этого объекта"

Появится окно. Нажмите «Добавить», чтобы сохранить существующие разрешения. Вы отредактируете их на следующих шагах.

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

Появится следующее окно. Снимите флажок «Разрешить» для «пройти через папку / выполнить файл», который я обвел красным.

Снимок экрана с настройками дополнительных разрешений Windows для объекта папки.

Согласно записи Microsoft Technet о разрешениях для файлов и папок, разрешение "обход папки/выполнение файла" выполняет следующие действия:

Для папок: Traverse Folder разрешает или запрещает перемещение по папкам для доступа к другим файлам или папкам, даже если у пользователя нет разрешений для просматриваемых папок. (Применяется только к папкам.) Обход папки действует только в том случае, если группе или пользователю не предоставлено право Обход проверки обхода пользователя в оснастке групповой политики. (По умолчанию группе «Все» предоставлено право пользователя «Обходить обходную проверку».)

Для файлов: «Выполнить файл» разрешает или запрещает выполнение программных файлов. (Применяется только к файлам).

Установка разрешения "Обход папки" для папки не приводит к автоматической установке разрешения "Выполнение файла" для всех файлов в этой папке.

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

в описании того, что они собой представляют.

Я не могу запустить ни один из них с терминала или двойным щелчком мыши.

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

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

свойства исполняемого файла

свойства сценария оболочки

Примечание: я признаю, что это дубликат (я искал его и не смог найти, поэтому спросил + ответил, надеясь, что найду), однако я не думаю, что вопрос о . файлы рабочего стола являются дубликатами.

Нам нужна дополнительная информация. Это может быть что угодно: от неправильных разрешений до неудовлетворенных зависимостей до неправильного пути к запуску программы Windows в Linux.

1 Ответ 1

Существует два способа сделать исполняемый файл:

Метод графического интерфейса:

Перейдите на вкладку разрешений, затем установите флажок «Выполнить»: [✓] Разрешить выполнение файла как программы.


Метод командной строки:

Обратите внимание, что у chmod также есть дополнительные параметры. Он принимает три группы параметров, представленных как --- --- --- . Первый набор --- это User. Второй — Группа, а последний — Другие (все остальные).

r означает чтение, w — запись, а x — выполнение.

Чтобы разрешить всем читать его, но только группе для выполнения и пользователю для чтения и записи, будет -rw- rx- r-- . Это будет добавлено к команде как:

chmod также может делать это в цифрах. Он основан на двоичном коде.

Итак, вот эти числа:

Выполнение пользователем равно 100 . Выполнить по группе 010 . Выполнить другим — 001

Запись пользователем составляет 200 . Запись по группе 020 . Написать другим — 002 .

Прочитано пользователем 400 . Чтение по группе 040 . Прочитано другим — 004 .

Затем вы складываете их вместе, чтобы получить желаемую комбинацию.

Поэтому, чтобы разрешить всем читать его, но только группе для выполнения и пользователю для записи, это будет 400 + 040 + 004, 010 и 200

В сумме получается 600 + 050 + 004 = 654 .

Тогда вы можете запустить команду.

чтобы установить его. Итак, чтобы установить все разрешения, которые вы можете запустить:

Наконец, вы можете сделать следующее:

Чтобы лишить всех разрешений.

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

На этом веб-сайте есть очень полезный маленький инструмент, с помощью которого вы можете отметить нужные параметры, и он даст вам команду:


Однако не все возможные комбинации целесообразно использовать; основные из них используются следующие:

Если вы имеете опыт работы с операционной системой Windows, скорее всего, вы знакомы с файлами .exe.Эти файлы называются исполняемыми файлами, поскольку их назначение — выполнение ряда команд, составляющих всю программу.

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

Это обеспечивает большую гибкость при управлении файлами.

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

Давайте рассмотрим шаги.

Способ 1: использование командного терминала

Первый метод использует командный терминал. Вы можете сделать любой файл исполняемым, введя определенные команды в Терминале.

Хотя в этом руководстве мы собираемся использовать Ubuntu 20.04 LTS, шаги не должны отличаться для других дистрибутивов Linux. При этом просто следуйте инструкциям, описанным на примере.

Прежде всего откройте командный терминал в своей системе. Ярлык для Ubuntu — Ctrl + Alt + T.

Для этого руководства мы создадим образец файла с помощью команды echo, используя следующую команду:

Эта команда создаст строковый литерал с текстом «Это руководство о том, как сделать файл исполняемым в Linux» и сохранит его в файле с именем Test1.

Чтобы просмотреть содержимое файла, введите следующую команду:


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

Чтобы сделать Test1 исполняемым файлом, мы будем использовать следующую команду:

В случае расширения файла команда выглядит следующим образом:

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


Вы также можете выполнить команду следующим образом:

Это даст соответствующее разрешение на выполнение файла.

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

Способ 2. Использование графического интерфейса

В отличие от метода командной строки, метод с графическим интерфейсом менее сложен и упрощает понимание происходящего.

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

Начните с перехода к нужному файлу. После того, как вы перешли к файлу, щелкните его правой кнопкой мыши и выберите «Свойства». Должно появиться новое окно.


Когда откроется окно, нажмите на вкладку "Разрешения".

На вкладке "Разрешения" вы должны увидеть параметр "Разрешить выполнение файла как программы".


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

Понимание того, как работает выполнение файлов

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

В методе 1 мы использовали команду chmod +x. Это было необходимо для того, чтобы сделать файл исполняемым, поскольку для файла требовались привилегии «чтения». «./» указывает Терминалу искать местоположение файла.

Помимо метода 1, есть и другие способы использования команды $ chmod. Эта гибкость делает $ chmod чрезвычайно ценным. Список опций для команды $ chmod приведен ниже:

  • $chmod 775 . Этот режим позволяет любому исполнить файл. Однако только владелец файла имеет право на запись в этот файл.
  • $chmod 0010 . Только пользователи группы смогут запускать файл.
  • $chmod 0100 . Разрешение на выполнение файла принадлежит исключительно пользователю.
  • $ chmod 777 . Предоставляет разрешение на выполнение файла всем пользователям Linux.
  • $ chmod -777 . Запрещает выполнение файла любому пользователю.

Дополнительная информация

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

Заключение

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

В этом руководстве описаны различные способы сделать исполняемый файл в Linux.Мы начали с объяснения метода с использованием командного терминала, а затем продолжили метод достижения того же с помощью графического пользовательского интерфейса (GUI). Мы также рассмотрели дополнительные варианты использования команды $chmod и различных разрешений.

На этом мы желаем вам всего наилучшего на пути к освоению Linux.

Об авторе

Зееман Мемон

Привет! Я инженер-программист по образованию, блоггер по навыкам, который любит писать о технологиях, разрабатывать веб-сайты и заниматься SEO. Вы можете связаться со мной в LinkedIn.

Если вы ранее взаимодействовали с такой операционной системой, как Windows, следующий контекст должен иметь смысл. Такие среды операционных систем поддерживают два типа файлов. Первый тип — исполняемые, а второй — неисполняемые. Исполняемые файлы связаны с расширением файла подписи, например «.exe».

Создание исполняемого файла в Linux

С другой стороны, когда мы мигрируем в экосистему Linux, правило неисполняемых и исполняемых файлов не применяется. Каждому файлу может быть предоставлена ​​исполняемая привилегия. Чтобы понять, как работает эта концепция, нам нужен образец файла для ссылки.

Терминал/командная строка

Чтобы создать такой файл, мы можем использовать встроенную команду echo. Это применимо к терминалу Linux. Эта команда полезна для создания командной строки и перенаправления ее в файл.
Откройте терминал Linux и выполните следующую последовательность команд.

Из приведенной выше последовательности команд мы использовали команду echo для создания буквальной строки «echo привет, пользователь Fosslinux, добро пожаловать в этот учебный сеанс». После этого мы сохранили эту литеральную строку в файле с именем «greetings». Как вы могли заметить, в Linux можно создать файл, не присваивая ему расширения, такого как .exe или .txt. Такой подход к созданию файлов невозможен в других средах операционных систем.

Файл, существующий без расширения в Linux, позволяет предоставить ему привилегию выполнения всякий раз, когда возникает необходимость. После выполнения команды «кошачьи приветствия» терминал выводит буквальную строку, которую мы сохранили в файле «приветствия», из приведенной выше последовательности команд.

Литеральная строка должна начинаться с команды echo, чтобы среда Linux могла ее правильно интерпретировать. В противном случае вы можете получить ошибку типа «команда не найдена», когда мы позже сделаем файл исполняемым. Гибкость среды операционной системы Linux становится жизнеспособной, когда мы можем сделать этот файл «приветствия» исполняемым, не обращаясь к команде cat для доступа к его содержимому.

Чтобы сделать файл исполняемым, мы будем использовать команду «chmod», как показано ниже.

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

Ожидаемый результат должен быть примерно таким:

Как вы заметили, приведенный выше вывод не начинается с «эха». Среда терминала интерпретирует эхо не как вывод, а как команду, необходимую для отображения результирующего вывода терминала.

Под капотом этого процесса выполнения файла

Прежде чем запустить какой-либо файл в среде Linux, в первую очередь необходимо связать путь этого предполагаемого исполняемого файла со средой терминала Linux. Следующим шагом является определение типа разрешения, необходимого файлу. Например, нам нужно было получить доступ к содержимому созданного файла «приветствия» для случая, который мы продемонстрировали.

В этом сценарии нам нужно было работать с правами «чтения» для доступа и вывода содержимого этого файла. Это делает необходимым использование команды «chmod +x». Назначение или удаление разрешения на выполнение файла не делает этот файл постоянно исполняемым или постоянно неисполняемым. Мы просто даем файлу право на выполнение, которое также можно отнять.

Использование «./» перед файлом «приветствия» сообщает терминальной программе, где найти файл, запланированный для выполнения. Вы также можете использовать «sudo» перед «./greetings», чтобы предоставить исполняемым процессам необходимые привилегии. В обсуждаемом выше примере мы использовали эхо для обработки выполнения буквальной строки «привет, пользователь FossLinux, добро пожаловать в этот учебный сеанс». Для этого выполнения вы можете использовать другую программу, например print Python.

Сначала вам нужно установить двоичный файл местоположения программы в качестве заголовка файла, который вы хотите выполнить. В этом случае, если бы мы использовали функцию печати Python, содержимое файла «приветствия» выглядело бы примерно так:

Выполнение этого файла с помощью команды «./greetings» даст те же результаты, что и при использовании команды echo.

Подход с графическим интерфейсом

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

выбор пункта меню свойств файла, который вы хотите сделать исполняемым

выбор пункта меню свойств файла, который вы хотите сделать исполняемым

На следующем экране будут три выровненных пункта меню. Выберите пункт меню «Разрешения».

GUI-метод создания исполняемого файла в среде Linux

Метод графического интерфейса для создания исполняемого файла в среде Linux

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

Гибкость Chmod

Chmod – это сокращение от слова "изменить режим". Он касается контроля доступа к разрешениям как для файлов, так и для каталогов в вашей операционной системе Linux. Например, поскольку мы уже имели дело с созданием исполняемого файла, вы также можете узнать, как лишить всех этих прав на выполнение.

В этом случае вы можете ознакомиться с некоторыми абсолютными режимами, связанными с командой chmod. Эти режимы представлены числовыми числами, и их использование следует следующему правилу синтаксиса:

Другое использование chmod при выполнении файла

  • chmod 775 ваше_имя_файла.расширение_файла: в этом режиме любой может выполнить созданный или существующий файл. Однако только владелец файла может записывать или добавлять данные в этот файл.
  • chmod 777 your_file_name.file_extension: в этом режиме каждый пользователь системы Linux имеет равные права на выполнение существующего или созданного файла.
  • chmod 0010 your_file_name.file_extension: только определенные члены группы системы Linux будут выполнять представленный файл.
  • chmod 0100 ваше_имя_файла.расширение_файла: только владелец файла или лицо, создавшее файл в системе Linux, может выполнять его исключительно.
  • chmod -777 ваше_имя_файла.расширение_файла: эта команда лишает всех пользователей этой операционной системы Linux прав на выполнение файла.

С этой дополнительной информацией о команде chmod вы должны быть уверены в ее использовании для создания исполняемых файлов в среде операционной системы Linux.

Последнее примечание

Простое правило, позволяющее сделать файл исполняемым в Linux, состоит из следующих шагов.

Например, sudo chmod +x new_file.bin

После того как вы только что сделали этот файл исполняемым, вы можете установить его, если это файл «bin», или просто запустить его, если это файл «run». В любом случае следующие подходы к командам помогут выполнить работу.

Для файла .bin не забудьте использовать ./my_file_name.bin

Если вы столкнетесь с какими-либо ошибками при попытке установить или запустить созданный исполняемый файл с помощью вышеуказанных подходов к командам, перед выполнением этих команд используйте «sudo». Это даст текущему пользователю системы Linux необходимые привилегии выполнения.

Читайте также: