Getting access denied when trying to copy & paste files
I am new to Ubuntu so please forgive my inexperience. I am running Ubuntu Desktop 16.04.1 and I am set up as an administrator, I am the only user so I believe therefore I should be a root user. However, when I try to copy a file from the root /var/www/html and paste it in /var/www/ directory, using any file management software (i.e. File manager, Files, Dolphin, etc.), I get the error message: Access denied. Could not write to. Why can I not write to these directories? Could this be because I have the automatic login option turned on?
2 Answers 2
You’re not the root user. In some Linux distros, you are root by default and have to set up other users (because being root is bad practice for security reasons) yourself. In Ubuntu, the user you create during installation is a user with rights to run all commands using the sudo program.
This means you can do pretty much anything you want, but you need to use sudo to elevate permissions temporarily when you want to do something that requires root permission, such as writing to system directories of which your user is not the owner. The sudo program allows you to run commands as root
Therefore, to copy a file to a directory you don’t own and that does not have permission for you to write to, you could run (in a terminal, open one with Ctrl + Alt + T )
sudo cp /path/to/file /path/to/destination
(To copy a directory, use cp -r )
Or to use a graphical browser:
sudo -i # to open a root shell nautilus # or caja or dolphin or whatever program you use
do your thing, and when done, enter
in the terminal, to drop privileges.
Ошибка «Permission denied» в Linux
Все операционные системы семейства Linux имеют четко разграниченные права доступа. В своей домашней директории пользователь может делать все, что ему угодно, до тех пор, пока укладывается в отведенные рамки. Попытка выйти за них приводит к появлению ошибки «Permission Denied».
Изменение прав в терминале
Рассмотрим вариант, в котором необходимо прочесть текстовый документ, созданный другим пользователем. Файлы TXT в Linux можно просматривать непосредственно в терминале с помощью команды «cat».
- Заходим в каталог с интересующим нас документом. Набираем команду «cat filename», подставляя вместо «filename» имя нужного файла. На скриншоте показана ошибка «Permission Denied», выглядящая в русской локализации как «Отказано в доступе».
Получаем ошибку «Permission Denied» при попытке просмотреть содержимое файла
Проверяем права доступа к документу используя команду «ls -l»
Используем команду «chmod» и административные права для получения доступа
Просматриваем содержимое текстового документа командой «cat»
Изменение прав в файловом менеджере
Разберемся, как выполнить рассмотренную выше операцию в графическом интерфейсе, используя файловый менеджер из дистрибутива.
- Как видно на скриншоте, значок файла изначально имеет дополнительные символы, указывающие на то, что доступ у нему ограничен. При попытке посмотреть содержимое получаем графический вариант ошибки «Permission Denied».
При попытке открыть текстовый документ получаем ошибку «Permission Denied»
Открываем меню «Файл» и перезапускаем файловый менеджер от имени root
Набираем пароль root в окне аутентификации
Открываем параметры файла с помощью контекстного меню
На вкладке «Права» разрешаем доступ для группы root и остальных пользователей
Открываем ранее недоступный файл в режиме чтения и изучаем содержимое
В заключение
Как видим, избавиться от ошибки Permission Denied достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.
Ошибка отказано в доступе 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, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Access denied to delete file
I moved my files from Windows 7 PC to another Ubuntu 16.1 PC over LAN cable. Now when I try to delete my files in the Ubuntu PC it says access denied?
total 28 -rwxr--r-- 1 nobody nogroup 889 Jun 16 2016 Android Book Links.txt -rwxr--r-- 1 nobody nogroup 0 Mar 7 2009 AUTOEXEC.BAT drwxr-xr-x 2 nobody nogroup 4096 Mar 11 03:22 Book -rwxr--r-- 1 nobody nogroup 0 Mar 7 2009 CONFIG.SYS drwxr-xr-x 6 nobody nogroup 4096 Mar 11 03:33 Documents and Settings drwxr-xr-x 2 nobody nogroup 4096 Mar 11 03:33 i386 drwxr-xr-x 13 nobody nogroup 4096 Mar 12 09:59 My Documents drwxr-xr-x 11 nobody nogroup 4096 Mar 11 23:25 TCWIN45 drwxr-xr-x 3 nobody nogroup 4096 Mar 11 23:25 VALUEADD
Can you open a terminal in the folder with the files and post the result of ls -l ? How did you copy the files? They probably have the wrong owner.
If you didn’t understand @SethosII comment, go to the folder which contains the files you want to delete, right click and select open in terminal option, then type ls -l in terminal and you’ll get an output, update your question with that output
@Sethos I selected my files from my Windows PC, then I CUT them and open the folder of the Ubuntu PC from the Windows PC using Windows file explorer and paste it into the drive of the Ubuntu PC by the help of LAN cable. It has some kind of Owner issue
2 Answers 2
Linux’s permissions system is very different from that of Windows. For a crash course, each permission has a few facets assigned to it. Namely, there are three octal bits ( u , g , and o ) that control who can access the file and to what degree. There is also a concept called a file «owner», which is a pair of a user and a group that has control over a single file (and are controlled by the u and g bits). For a more detailed look into how Linux permissions work, check out this excellent writeup over on the Arch Wiki.
In your case, the files are owned by the nobody user and the nogroup group, and the permissions are set such that the nobody user can read, write, and execute files while the nogroup group can only read and execute. Similarly, everyone else can only read or execute the files.
That said, there are about three solutions to this problem. You can become the nobody user, you can become root , or you can change ownership of these files. The first one is really not recommended, as the nobody user is a special account that shouldn’t really get used.
If you just want to delete the files and be done with it, you’re going to need to use the terminal. Just run the below command to delete any specific file:
sudo rm /path/to/file/you/want/gone
If you want to delete a folder, you need to use a different command:
sudo rm -rf /path/to/the/folder/you/want/gone
Before pressing ENTER , make sure your command is free of typos or other errors. These commands are very dangerous, and can have unintended side effects if a command is typed improperly.
Alternatively (and probably the better way), you can take ownership of the files, giving you full control over them. Linux has something called the chown command for exactly this purpose. I’d assume you want to change the ownership of everything, so use this command:
sudo chown -R $USER:$USER /path/to/your/folder
If you only want to change the ownership of a single file, it’s this command:
sudo chown $USER:$USER /path/to/your/file
For more information into how chown works, run the man chown command in your terminal to pull up its manual. Once again, be very careful with typographical errors — they can and will bite you in unexpected ways.