Почему не запускается скрипт, ошибка «bash: ./….sh: Отказано в доступе» (РЕШЕНО)
Иногда при запуске .sh файла, который представляет собой Bash скрипт, может возникнуть ошибка. К примеру, запускается скрипт в файле check-aur.sh:
Подобную ошибку можно исправить, если перед запускаемым скриптом указать желаемый интерпретатор, то есть bash:
Почему возникает ошибка «bash: ./….sh: Отказано в доступе»
Вы могли заметить, что некоторые файлы можно запустить и без указания bash в начале команды. Для этого необходимо соблюдение двух условий:
- в разрешения файла должно быть разрешение на выполнение
- в самом файле вверху должен быть шебанг
Проверить, есть ли разрешения на исполнение файла можно командой ls:
Должно быть что-то вроде такого (должны быть x):
Чтобы установить права на выполнение файла выполните команду вида:
Ещё одна возможная причина, в начале файла *.sh пропущен шебанг:
Строка шебанга имеет следующий формат:
interpreter должен быть абсолютным путём к исполняемому файлу программы (если интерпретатором является скрипт, он тоже должен начинаться с шебанга). Необязательный optional-arg должен иметь формат единственного аргумента (по причинам переносимости он не должен содержать пробелы). Пробел после #! является опциональным.
Ошибка отказано в доступе Linux
Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе Linux. Если вы только что перешли с Windows, то можете еще не знать всех особенностей операционной системы Linux и почему возникает такая проблема.
В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.
Ошибка отказано в доступе 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 больше не будет встречаться.
Выводы
В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!
unixforum.org
Форум для пользователей UNIX-подобных систем
Решено: Консоль. Отказано в доступе
Решено: Консоль. Отказано в доступе
Сообщение KALIBR-10 » 19.02.2008 11:39
Привет всем, помогите чем можите!
В линухе я не спец, вот у меня какая проблема:
в консоли не могу получить права рута, ввожу su- а он мне bash: /bin/su: отказано в доступе
И ещё вопросик
У нас локальная сеть, через самба подключаюсь к домену, выхожу на сервер, и так долго он пытается отобразить содержимое. Так и должно быть.
Re: Решено: Консоль. Отказано в доступе
Сообщение Alexei_VM » 19.02.2008 12:15
Переключиться в текстовую консоль, войти рутом, и выполнить команду control su public
Re: Решено: Консоль. Отказано в доступе
Сообщение KALIBR-10 » 20.02.2008 11:14
Re: Решено: Консоль. Отказано в доступе
Сообщение romuil » 20.02.2008 11:20
Re: Решено: Консоль. Отказано в доступе
Сообщение KALIBR-10 » 20.02.2008 11:38
su-
щтказано в доступе
control su public
command not found
Re: Решено: Консоль. Отказано в доступе
Сообщение romuil » 20.02.2008 11:45
Re: Решено: Консоль. Отказано в доступе
Сообщение KALIBR-10 » 20.02.2008 12:16
Спасибо! Сработало.
А почему такое случилось что в доступе было отказано и что значит команда control su public?
Re: Решено: Консоль. Отказано в доступе
Сообщение Alexei_VM » 20.02.2008 12:34
Случилось это потому, что пользователю (в настройках по умолчанию) доступны далеко не все команды. Например, команда su (у вас дистрибутив Server не иначе?).
Множество команд, доступ к которым разумно ограничить, в системе ALT Linux снабжены специальными комментариями для программы control, в которых содержится описание «уровней доступа» к командам, например public, relaxed, wheelonly и т.п. Соответственно, команда control может менять права (правила) доступа к этим командам.
В данном случае с помощью команды control для программы su было установлено поведение, описанное правилом public, то есть доступ для этой программы стал открыт для всех пользователей.
Отказано в доступе
Установил через Synaptic: Fotoxx и Shotwell. И удалил затем все их компоненты там же. Установил затем
sudo add-apt-repository ppa:damien-moore/ppa
sudo apt-get update
sudo apt-get install picty
Но ее не удалял(опробывать даже не успел), так как в меню — графика значок ShotWell не исчез после удаления сей программы. Я подумал что это глюк системы и перезагрузил линукс. После черный экран при загрузке. Nomodeset при загрузке не помог. В Рековери меню попытался восстановить все библиотеки и обновить загрузчик(но какое то действие не позволяло сделать писало что read only что то там должно быть). Сейчас пишу с диска линукс. Мне нужно папки с файлами перед переустановкой скопировать на другой диск. При попытке открыть некоторые файлы и папки пишет отказано в доступе. Что делать? Заранее благодарен.
Processor : 4x AMD Athlon(tm) II X4 631 Quad-Core Processor
Memory : 8167MB (1789MB used)
Operating System : Ubuntu 13.04
-Display- Resolution : 1920×1080 pixels
OpenGL Renderer : GeForce GTX 660/PCIe/SSE2
X11 Vendor : The X.Org Foundation
-Multimedia- Audio Adapter : HDA-Intel — HD-Audio Generic
Audio Adapter : HDA-Intel — HDA NVidia
Audio Adapter : USB-Audio — Microsoft® LifeCam HD-3000
Линукс может чуть новее но тот же лубунту
драйвер стоит(ял) припроеритарный от нвидии.
Начни с использования smartmontool, а то может у тебя винт помер.
Посмотри в dmesg что пишется при попытке монтирования разделов с этого винта.
Можно для полного чайника пожалуйста. Я установил smartmontool, но она походу как и dmesg запускается из консоли? я просто думал что можно получить к папкам и файлам доступ зная пароль. Или нелзя уже?
gsmartcontrol если хочешь гуй, но гуй очень ограничивает, в том числе в венде — так что тебе лучше пересмотреть приоритеты прямо сейчас.
GParted 0.18.0 —enable-libparted-dmraid —enable-online-resize
Libparted 2.3
Проверить на наличие ошибок и восстановить файловую систему
(ext4) на /dev/sda1 00:00:07 ( УСПЕШНО )
калибровать /dev/sda1 00:00:00 ( УСПЕШНО )
путь: /dev/sda1
начало: 2048
конец: 100476927
размер: 100474880 (47.91 ГиБ)
проверить на ошибки файловую систему /dev/sda1 и устранить их, если это возможно 00:00:07 ( УСПЕШНО )
e2fsck -f -y -v -C 0 /dev/sda1
Проход 1: Проверка inodes, блокs, а также размеров
Pass 2: Checking каталог structure
Pass 3: Checking каталог connectivity
Pass 4: Checking reference counts
Pass 5: Checking группа summary information
767245 inodes used (24.39%, out of 3145728)
5406 non-contiguous files (0.7%)
852 non-contiguous directories (0.1%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 720165/2082/1
12033042 blocks used (95.81%, out of 12559360)
0 bad blocks
1 large file
623927 regular files
89690 directories
57 character device files
25 block device files
0 fifos
34 links
53537 symbolic links (44907 fast symbolic links)
0 sockets
————
767270 files
e2fsck 1.42.9 (4-Feb-2014)
увеличить размер файловой системы, заполнив весь раздел
00:00:00 ( УСПЕШНО )
resize2fs -p /dev/sda1
resize2fs 1.42.9 (4-Feb-2014)
The filesystem is already 12559360 blocks long. Nothing to do!