Linux отказано в доступе bash

Permission denied when running .sh scripts

program exited with code: 126 . This problem always occur when I try to execute my code. What might be the solution?

When I do that it tells me this chmod: cannot access `geany_run_script.sh’: No such file or directory. Should I run it from the terminal or what?

5 Answers 5

If you want to skip these (for now of course), you can create a directory/folder in your user-home directory and work on your C programmes (or others) there.

You can open the terminal (press Ctrl + Alt + T ) and cd to the target directory:

To give the file «the_file_name» execute permission (if the file-system allows you with the RW rights):

..what’s your working directory ie. what’s the location of your source code file? ..do you have some experience with windows CLI?

@wkhwilo-012, please copy your executable file Area_circumference and paste it (the file path will be pasted) to update your question’s body.

You need to give execute and read permissions. Follow this:

chmod u+r+x filename.sh ./filename.sh 

When we make a new script file then by default it has read and write permission. But if we want to execute them, then we should give execute permission as shown above.

Execution bit alone is not enough for shell scripts, one must be able to read the file as well to execute it (contrary to binaries which only need the execute permission bit)

Open your terminal application by pressing CTRL + ALT + T or with the apposite shortcut on the graphical enviroment (like Terminal or xTerm ).
In the uniform window which appears on the screen you’ll see a blinking character, it’s the terminal cursor : simply click on the window and write to enter text (typically commands) and press ENTER to confirm the input.
Before the cursor there is always listed your current position on the file system from the root directory («/») and your home (where your personal files are) is called «~».
To change directory/folder use cd EXISTENTFOLDER (replace EXISTENTFOLDER with the folder name); if you feel lost, simply type cd to return to your home directory in a blink!
Now let’s solve your problem:

  1. Use the cd command to find the directory with your source code. Use TAB to help you. If you execute ls -lh , you’ll see a list of possible paths to follow and files to execute.
  2. When you’ve find the blocked file execute chmod +x FILENAME (replace FILENAME with the name of your source code file).
  3. If you have multiple blocked files execute chmod +x * to unlock all files in the current directory. Never chmod +x dangerous or insecure files.
  4. Execute ./FILENAME YOUREVENTUALARGUMENTS to execute your executable file.
  5. Remember that if your compiled program tries to read/write outside your home directory you’ll need to execute it as root by using sudo ./FILENAME YOUREVENTUALARGUMENTS .
Читайте также:  Разрешение экрана линукс команда

If you want to have a manual for a command execute man COMMAND (replace COMMAND with the exact command name, Linux is case sensitive).

Some shells have an Open terminal here command to simplify your life, search for it in the future and remember that the command shell can be your best friend, if you use it well. 😀

It’s all. If you need more help comment under here.
If I’m helping you press the UP arrow on the left; if you solve mark this answer as best answer.

Have a nice experience on Linux & Ubuntu.

Источник

Почему не запускается скрипт, ошибка «bash: ./….sh: Отказано в доступе» (РЕШЕНО)

Иногда при запуске .sh файла, который представляет собой Bash скрипт, может возникнуть ошибка. К примеру, запускается скрипт в файле check-aur.sh:

bash: ./check-aur.sh: Отказано в доступе

Подобную ошибку можно исправить, если перед запускаемым скриптом указать желаемый интерпретатор, то есть bash:

Почему возникает ошибка «bash: ./….sh: Отказано в доступе»

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

  • в разрешения файла должно быть разрешение на выполнение
  • в самом файле вверху должен быть шебанг

Проверить, есть ли разрешения на исполнение файла можно командой ls:

Должно быть что-то вроде такого (должны быть x):

-rwxr-xr-x 1 root root 415 Apr 26 2018 /root/bin/vpn_route.sh

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

Ещё одна возможная причина, в начале файла *.sh пропущен шебанг:

Строка шебанга имеет следующий формат:

interpreter должен быть абсолютным путём к исполняемому файлу программы (если интерпретатором является скрипт, он тоже должен начинаться с шебанга). Необязательный optional-arg должен иметь формат единственного аргумента (по причинам переносимости он не должен содержать пробелы). Пробел после #! является опциональным.

Связанные статьи:

Источник

Ошибка отказано в доступе Linux

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

В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.

Ошибка отказано в доступе Linux

Наиболее часто такая ошибка встречается, в таких случаях:

  • Вы пытаетесь выполнить команду в терминале;
  • Вы пытаетесь примонтировать внешний носитель с помощью файлового менеджера;
  • Вы пытаетесь запустить системный сервис и находите такую ошибку в логе.
Читайте также:  Mdf to iso linux

В операционной системе Linux действует сложная система полномочий. Настройки доступа для каждого файла настраиваются тремя параметрами — чтение, запись и выполнение. Эти параметры устанавливаются для трех категорий — владелец файла, группа файла и все остальные пользователи.

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

Многие программы проверяют после запуска от какого пользователя они запущены и говорят, что их нужно запускать от имени суперпользователя, но так ведут себя не все. Например, команда ls вернет ошибку отказано в доступе linux если вы попытаетесь посмотреть содержимое каталога суперпользователя:

Но эта же команда нормально отработает нормально при использовании команды sudo:

Другой случай, это если вы обнаруживаете проблему в логах какого-либо системного сервиса, например, веб-сервера Apache. Казалось бы, должно было быть все верно, потому что запуск и так выполняется от имени суперпользователя.

Но нет, сервисы не только запускаются от имени суперпользователя, но потом, для увеличения безопасности они меняют пользователя на обычного, не привелигированного. Например, Apache работает от имени пользователя apache или www-data. Уже от имени этого пользователя программа пытается получить доступ к файловой системе.

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

Вам просто нужно поменять на него права с помощью утилиты chmod или изменить владельца chown. Причем, нужно чтобы ко всем подкаталогам на пути к целевому каталогу был доступ у программы. Например, нельзя так чтобы права на чтение /home/ не было, а на /home/user/ было. Так не пройдет.

Права разрешающие чтение и запись владельцу и только чтение для группы и остальных вставляются командой:

sudo chmod 755 /путь/к/файлу

Или для смены прав для всех файлов в каталоге и самого каталога:

sudo chmod -R 755 /путь/к/каталогу

Или вы можете изменить владельца, обычно, это более безопасная и распространенная практика:

sudo chown пользователь /путь/к/файлу
$ sudo chown -R пользователь /путь/к/каталогу

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

sudo ps aux | grep имя_сервиса

После того как вы установите правильные права, ошибка отказано в доступе linux больше не будет встречаться.

Читайте также:  Системный монитор astra linux

Выводы

В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Running my program says «bash: ./program Permission denied» [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.

I am running Ubuntu on computer 1 and computer 2. I compiled a C++ program on computer 1, and I can execute it from the terminal using ./program_name . It runs fine. However, when I try to do this on computer 2, it says: bash: ./program_name: permission denied What’s wrong and what can I do about it?

How did you get the program from computer 1 to computer 2? Did you copy the executable or recompile the source code? What is the output of the command “ls -l program_name”?

This seems to be off topic for SO, because it is not about programming but rights management on Linux

I wrote a .sh file. It refused to execute with this error message. I would say this is definitely on-topic for StackOverflow. I’ve nominated for re-opening.

3 Answers 3

chmod u+x program_name . Then execute it.

If that does not work, copy the program from the USB device to a native volume on the system. Then chmod u+x program_name on the local copy and execute that.

Unix and Unix-like systems generally will not execute a program unless it is marked with permission to execute. The way you copied the file from one system to another (or mounted an external volume) may have turned off execute permission (as a safety feature). The command chmod u+x name adds permission for the user that owns the file to execute it.

That command only changes the permissions associated with the file; it does not change the security controls associated with the entire volume. If it is security controls on the volume that are interfering with execution (for example, a noexec option may be specified for a volume in the Unix fstab file, which says not to allow execute permission for files on the volume), then you can remount the volume with options to allow execution. However, copying the file to a local volume may be a quicker and easier solution.

Источник

Оцените статью
Adblock
detector