Мне нужно создать скрипт bash, чтобы создать и смонтировать диск. Итак, две простые команды. Оба «работают» при вводе в командной строке.
Сценарий создается и выполняется каждый раз, когда обычный пользователь входит в систему, поэтому мне нужен метод, чтобы сделать этот сценарий исполняемым в это время. Пока я не могу заставить это работать. Например, первая часть mkdir /vvv/gggg
не продолжается, потому что скрипт не является исполняемым (я предполагаю).
Надеюсь, это имеет смысл. Это возможно? Любые мысли о том, как сделать эту работу, будут оценены.
Обновление :
Спасибо за ваши ответы. Я, вероятно, должен добавить некоторую дополнительную информацию, кроме того, что я новичок в Linux.
Я использую приложение с открытым исходным кодом виртуального рабочего стола под названием Ulteo. Это приложение работает поверх Ubuntu и имеет очень небольшую поддержку - вот почему я здесь. В основном я учусь на огне.
Итак, в приложении есть функция управления сценарием входа в систему, где я могу связать сценарий с пользователем. Простой Windows-скрипт с использованием сети прекрасно работает. Однако, когда я пытаюсь применить скрипт bash для Linux, ничего не происходит.
Я думаю, что из-за того, что мне нужно chmod +x
сначала выполнить сценарий против сценария, чтобы сделать сценарий исполняемым, вот почему он терпит неудачу. Кстати, Ulteo работает в тюрьме chroot. Я создал скрипт, сохранил его и не смог найти скрипт. Я искал как внутри, так и снаружи тюрьмы.
Мне нравится подход dan08, чтобы исходный скрипт ссылался на другой скрипт, который я могу найти и сделать исполняемым вручную. Я столкнулся бы с той же самой проблемой?
Эта дополнительная информация проясняет ситуацию? Заранее спасибо.
Фотографии прилагаются.
! [консоль управления логином scipt] [1]
! [скрипты Windows, которые работают] [2]
! [простой скрипт Linux, который не работает] [3]
Извините, я пока не могу опубликовать изображения
источник
ls -l scriptname
. Вы также должны уточнить, как именно создается скрипт, и почему вы не просто создаете его один раз и оставляете его в покое. Наконец, ваш обычный пользователь не должен иметь права на запись в него/var
и поэтому не сможет создавать там каталоги.Ответы:
Есть две вещи, которые вам нужно сделать:
Ссылка на интерпретатор сценария в начале сценария:
Установите разрешения, чтобы сделать его исполняемым:
источник
Вместо того, чтобы сделать ваш скрипт исполняемым, вы можете использовать другой подход и изменить способ вызова скрипта.
script.sh
достаточно для запуска исполняемого скрипта.тем не мение
Можно запустить невыполнимый скрипт, если указать программу для его запуска.
Так
/bin/bash script.sh
илиbash script.sh
илиpython script.py
все будут запускать неисполняемые сценарии.Поэтому я предлагаю изменить способ вызова сценария и указать двоичный файл, используемый для его запуска.
источник
os.execv(__file__, sys.argv)
не будет работать, и наверняка есть и другие подобные ситуации. Если целью является безопасность, просто используйте ее из root / sudo, вместо этого позвольте пользователям запускать двоичные файлы. Кроме того, если целью является безопасность, вы не хотите, чтобы они могли запускать сценарии, потому что вы можете нанести вред системе в любом случае ... исполняемый или нет. Поэтому я не понимаю, почему важно избегать превращения их в исполняемые файлы.Создайте программу на C, C ++ или Python и т. Д. И используйте системную команду для выполнения сценария bash.
Например, программа на С будет выглядеть так:
Для запуска программы при запуске добавьте ее в список запускаемых программ. Откройте Startup Applications из вашего dash и добавьте скомпилированный исполняемый файл в список, нажав кнопку add.
источник
bash path/yourbashscript.sh
.bash path/yourbashscript.sh
напрямую вместо компиляции и запуска этой программы на C?Вы можете сделать исполняемый скрипт bash запуском следующего в командной строке.
Затем выполнить его при запуске можно, добавив его в список запускаемых программ, как сказал @akabhirav.
источник
SHC - это универсальный компилятор сценариев оболочки. Он принимает скрипт, который указан в командной строке и создает исходный код на языке C. Сгенерированный исходный код затем компилируется и связывается для создания раздельного двоичного файла.
Скомпилированный двоичный файл все еще будет зависеть от оболочки, указанной в первой строке кода оболочки (shebang:
#!/bin/sh
или что-то подобное), поэтому SHC не создает полностью независимые двоичные файлы.Сама SHC не является компилятором типа
cc
. Скорее кодирует и шифрует сценарий оболочки и генерирует исходный код C с добавленной возможностью истечения срока действия. Затем он использует системный компилятор для компиляции раздвоенного двоичного файла, который ведет себя точно так же, как и оригинальный скрипт. После выполнения скомпилированный двоичный файл расшифрует и выполнит код с-c
опцией оболочки .источник
#!
иchmod +x
?