Permission denied при копировании файлов ubuntu

Обновлено: 03.07.2024

$ cat permissions.txt
cat: permissions.txt: Permission denied

Для того чтобы понять что и кому можно делать с файлом и вообще что это за объёкт нужно ввести команду:
ls -l filename
Или просто ls -l и вам покажут все файлы в текущем каталоге (в том каталоге где вы находитесь).
Например, в моём домашнем каталоге:
alexander@srv-ubuntu:

$ ls -l
total 64
drwxrwxr-x 2 alexander alexander 4096 May 8 08:30 backups
-rwxrwxr-- 1 alexander alexander 39 Jun 4 17:43 helloworld.sh
-rw------- 1 alexander alexander 33838 Jun 3 18:37 it-inside_logo.jpg
-rw------- 2 alexander alexander 233 Jun 3 18:47 my_vs_info.txt
-rwxrwxrwx 1 alexander alexander 37 Jun 4 18:20 permissions_all.txt
--w-rw-r-- 1 alexander alexander 37 Jun 4 18:00 permissions.txt
drwxrwxr-x 2 alexander alexander 4096 May 8 08:34 recovers
lrwxrwxrwx 1 alexander alexander 14 Jun 3 18:46 soft_link_my_vs_info.txt -> my_vs_info.txt
-rw------- 2 alexander alexander 233 Jun 3 18:47 test_ln_my_vs_info.txt_

В левой колонке отображаются права доступа (-rwxrwxrwx). Так же вы видите кому принадлежит файл (alexander alexander).
В блоке (alexander alexander) первым указывается имя пользователя кому принадлежит файл, вторым группа которой принадлежит файл. Они могут быть одинаковыми или разными.

Например, в данной директории пользователи не входящие в группу alexander не могут создавать файлы, но могут просмотреть её содержимое и перейти в неё.

Если директория будет иметь следующие права:
alexander@srv-ubuntu:

$ ls -l | grep dir_permissions
dr--r--r-- 2 alexander alexander 4096 Jun 4 18:39 dir_permissions

То владелец сможет посмотерть её содержимое(но не увидет права доступа, просто файлы), но не сможет в неё перейти:
alexander@srv-ubuntu:

$ ls -l dir_permissions/
ls: cannot access dir_permissions/testfile.txt: Permission denied
total 0
-. ? ? ? ? ? testfile.txt

Перейти в директорию нельзя:
alexander@srv-ubuntu:

$ cd dir_permissions/
-bash: cd: dir_permissions/: Permission denied

При полном запрете будет просто отказ в доступе:
alexander@srv-ubuntu:

$ ls -l dir_permissions/
ls: cannot open directory dir_permissions/: Permission denied

Теперь Вы сможете понять причину по которой у Вас не получается что-то сделать с файлом =)

Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе 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, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

Ошибка «Permission denied» в LinuxОшибка «Permission denied» в Linux

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

Изменение прав в терминале

Рассмотрим вариант, в котором необходимо прочесть текстовый документ, созданный другим пользователем. Файлы TXT в Linux можно просматривать непосредственно в терминале с помощью команды «cat».

    Заходим в каталог с интересующим нас документом. Набираем команду «cat filename», подставляя вместо «filename» имя нужного файла. На скриншоте показана ошибка «Permission Denied», выглядящая в русской локализации как «Отказано в доступе».

Ошибка «Permission Denied»

Получаем ошибку «Permission Denied» при попытке просмотреть содержимое файла

Просмотр прав доступа командой «ls»

Проверяем права доступа к документу используя команду «ls -l»

Изменение прав доступа командой «chmod»

Используем команду «chmod» и административные права для получения доступа

Просмотр текстового файла командой «cat»

Просматриваем содержимое текстового документа командой «cat»

Изменение прав в файловом менеджере

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

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

Графический вариант ошибки «Permission Denied»

При попытке открыть текстовый документ получаем ошибку «Permission Denied»

Переключение файлового менеджера в режим root

Открываем меню «Файл» и перезапускаем файловый менеджер от имени root

Окно аутентификации root

Набираем пароль root в окне аутентификации

Контекстное меню файлового менеджера

Открываем параметры файла с помощью контекстного меню

Вкладка «Права» в свойствах файла

На вкладке «Права» разрешаем доступ для группы root и остальных пользователей

Файл, открытый в режиме чтения

Открываем ранее недоступный файл в режиме чтения и изучаем содержимое

В заключение

Как видим, избавиться от ошибки Permission Denied достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Ошибка SSH в Linux. Исправление разрешения denied (publickey)

(1 оценок, среднее: 5,00 из 5)

Ошибка SSH в Linux. Исправление разрешения denied (publickey)

Е сли вы пытаетесь подключиться к удаленному серверу через SSH, вы можете столкнуться с ошибкой, отказано в доступе. Эта ошибка может произойти по ряду причин. И исправление этой проблемы зависит от причины ошибки.

В нашем случае у нас были общедоступные и закрытые ключи, хранящиеся на рабочем столе Ubuntu 16.04. После выпуска Ubuntu 18.04 мы решили перейти на эту новую версию. Мы предпочитаем новую установку поверх обновлений дистрибутива.

Итак, мы сделали резервную копию основных папок моего домашнего каталога, включая папку .ssh, на которой были открытые и закрытые ключи на внешнем диске. После установки Ubuntu 18.04 мы восстановили все, включая ключи SSH.

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

Но это не сработало. SSH выдал эту ошибку:

Ошибка исправления отказа от прав (publicickey)

Поэтому проблема заключается в разрешении файлов. Видите ли, когда мы копировали файлы, USB флешка была в формате файла FAT Microsoft. Этот файл не поддерживает разрешения файлов UNIX/Linux.

И, следовательно, разрешения на скопированные ключи ssh были изменены на 777.

Для SSH права доступа к файлу слишком открыты. Просто не разрешено иметь 777 для открытых или закрытых ключей. И вот почему SSH отказался от подключения.

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

Вы должны изменить разрешение, используя команду CHMOD:

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

Теперь, когда вы установили правильные разрешения, вы можете снова подключиться к ssh. Он попросит пароль администратора чтобы разблокировать ключи. Введите пароль администратора.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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