причина добавления прав execute к сценарию shell

Посмотрите на определения menuentry в /boot/grub/grub.cfg; именно там определяется текст пункта меню. Однако вполне вероятно, что при обновлении пакета GRUB конфигурация регенерируется из осколков, расположенных в /etc/grub.d/; обратитесь к файлу README в нем, чтобы узнать, как отредактировать их по своему вкусу.

6
14.03.2017, 02:25
2 ответа

Функция безопасности заключается в комбинации с битом suid / sgid, но читайте дальше .

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

  • при вводе команд файлы без exec не запускаются в текущем каталоге, если у вас есть "." в вашем PATH
  • автозаполнение TAB может предлагать только файлы с битом exec, если оно видит, что вы вводите имя команды
  • , пользователи могут лучше видеть, какие файлы должны быть выполнены
  • , оно сообщает ядру, что файл, имя которого user typed - это команда, и ядро ​​должно потрудиться, чтобы открыть ее и выяснить, что это за загрузчик / исполнитель.

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

Загвоздка в том, что когда вы можете обойти (отсутствие) бита exec при запуске файла с явным загрузчиком, вы также не используете его бит suid / sgid, поэтому вы не получите повышенных привилегий.

Давайте в / bin

 -rwsr--r-- root root some_privileged_command

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

 $ /lib/ld-linux.so.2 /bin/some_privileged_command

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

 -rwsr-xr-x root root other_privileged_command

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

 $ /bin/other_privileged_command

Тем не менее, в любом случае это спорно для команд shebang, потому что они не будут выполняться с корневыми perms даже с установленным suid - для этого самому исполняемому файлу оболочки потребуется этот бит (и было бы очень, очень плохо это делать).

2
27.01.2020, 20:24

Да, вы можете использовать bash / путь / к / сценарию , но сценарии могут иметь разные интерпретаторы. Возможно, ваш сценарий был написан для работы с ksh , zsh или, может быть, даже awk или expect . Таким образом, вы должны знать, какой интерпретатор использовать для вызова сценария. Вместо того, чтобы создать сценарий со строкой shebang (это #! / Bin / bash вверху) исполняемым файлом, пользователю больше не нужно знать, какой интерпретатор использовать. Это также позволяет вам поместить сценарий в $ PATH и вызвать его как обычную программу.

9
27.01.2020, 20:24

Теги

Похожие вопросы