Linux общая папка отказано в доступе

Обновлено: 28.06.2024

Пытаюсь сделать это:

sudo echo no > /etc/pure-ftpd/conf/someparam

На что мне отвечают:

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

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

У меня была проблема с Wi-Fi, которая до сих пор не решена из-за проблемы, которая возникла, когда я пытался ее решить.

Я нашел это решение для Wi-Fi, поэтому попробовал его:

Вставьте в конфиг этот текст

Я заметил, что у меня не было разрешения на запись или выполнение файла, поэтому я попытался использовать chmod решить проблему. Это упорядоченный список всех операций, которые я сделал и которые привели к проблеме этого вопроса:

После третьей или четвертой команды (я не уверен, какая из них) я потерял свои права администратора; на самом деле, если я пытаюсь использовать команду sudo он выводит 3 строки, которые я переведу как можно лучше:

На терминале отображается

Теперь, когда я открываю терминал, он выводит мне строку bash /etc/profile: Permission denied, которую я никогда раньше не видел, и пропущенная часть имени необычна, потому что вместо нее следует писать zenoraiser.

Что вы предлагаете мне сделать?

2 ответа

Там нет необходимости выполнять chmod вообще при использовании sudo редактировать файл, хотя вы не должны использовать sudo gedit (скорее sudo -H gedit например)

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

В реальной среде определите (поврежденный) корневой раздел на диске, используя sudo fdisk -l

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

Хотел сделать одну папку общедоступной в локальной сети через интерфейс Ubuntu (я не работал с Linux прежде, поэтому, не стал делать это через терминал), но гостевой доступ почему-то стоит серым цветом (неактивен), а мне как раз нужно разрешить гостевой доступ. Что делать?

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

методом проб и ошибок я на федоре тоже сделал в наутилусе простое расшаривание. Кстати этого плагина в репах федоры нет. Я взял плагин nautilus-share у opensuse

юзер sambs должен входить в группу sambashare у которой в свою очередь должны быть права на /var/lib/samba/usershares. У этой директории должен быть доступ для всех

должны быть запущены само собой сервисы nmb и smb

в конфиге самбы должны присутствовать эти строки (хотя насчет guest я не уверен)

после шаманства в наутилусе расшаривается любая директория

ps юзер самбы имел виду. Я не могу редактировать свой собственный комментарий

Делаю общею сетевую папку на Ubuntu 20.04.2 Но при копировании файлов с винды, приходится переделывать права Как сделать так, что бы сразу права задавались с полным доступом?

sudo apt -y install samba sudo nano /etc/samba/smb.conf

Такие настройки [global]

workgroup = WORKGROUP netbios name = trd security = user map to guest = bad user usershare allow guests = yes

interfaces = 127.0.0.0/8 eno5

[1c] path = /home/1c comment = 1c browseable = yes guest ok = yes create mask = 777 directory mask = 777 writable = yes force user = nobody

sudo systemctl restart smbd

sudo mkdir /home/1c

После копирования файлов, приходится делать команду sudo chmod -R 777 /home/1c


На какой Ubuntu надо настроить общую папку? Посмотреть так

В терминале ничего страшного нет, попробуйте

Если после этого не получается меняться файлами, покажите вывод этой команды

E: Невозможно найти пакет system-config-samba

Установил Webmin Настроил новую папку Часть файлов копируется нормально, часть файлов с кривым правами Почему так, не понимаю

Мне кажется, что то не так с правами делаю

вроде разобрался я копировал директории из папки C:\Program Files\1cv8

перенёс папку 1cv8 в корень и скопировал из корня в сетевую шару, тогда зашло с нормальными правами в общем винда и линукс дружат условно

rusmuzhik а ты кто такой? Тему создал вроде некто galaev ss



А это что выдает?


$ inxi -S System: Host: trd Kernel: 5.4.0-73-generic x86_64 bits: 64 Console: tty 0 Distro: Ubuntu 20.04.2 LTS (Focal Fossa)

[global] max log size = 1000 usershare owner only = yes obey pam restrictions = yes passwd chat = Enter\snew\s\spassword:* %n\n Retype\snew\s\spassword: * %n\n password\supdated\ssuccessfully . netbios name = trd panic action = /usr/share/samba/panic-action %d server string = %h server (Samba, Ubuntu) pam password change = yes log file = /var/log/samba/log.%m usershare max shares = 100 unix password sync = yes interfaces = 127.0.0.0/8 eno5 map to guest = bad user os level = 20 server role = standalone server passwd program = /usr/bin/passwd %u usershare allow guests = yes logging = file workgroup = WORKGROUP

; bind interfaces only = yes

; logon path = \%N\profiles%U ; logon drive = H: ; logon script = logon.cmd ; add user script = /usr/sbin/adduser –quiet –disabled-password –gecos "" %u

; add machine script = /usr/sbin/useradd -g machines -c «%u machine account» -d /var/lib/samba -s /bin/false %u

; add group script = /usr/sbin/addgroup –force-badname %g

; idmap config * : backend = tdb ; idmap config * : range = 3000-7999 ; idmap config YOURDOMAINHERE : backend = tdb ; idmap config YOURDOMAINHERE : range = 100000-999999 ; template shell = /bin/bash

[1c] path = /home/1c comment = 1c browseable = yes guest ok = yes create mask = 777 directory mask = 777 writable = yes force user = nobody

[print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no ; write list = root, @lpadmin


Понятно, дебилы мейнтейнеры убрали хороший пакет.

Тогда придется руками настроить.

Если файлы положить на шару с другого компа, кто у них владелец? Посмотреть: ls -l /my/shara

Я использую Ubuntu в Virtual Box, и у меня есть папка, которая является общей для хоста (Windows) и виртуальной машины (Ubuntu). Когда я открываю какой-либо файл в папке общего доступа в Ubuntu, я не могу изменить его, так как его владелец имеет права root.

Как я могу изменить право собственности на себя?

Опции в VM - это автомонтирование, и readoly не проверяется.

Пробовал использовать /media/sf_Ubuntu , но получаю ошибку разрешения:

Обратите внимание, что я в группе vboxsf :

Как вы смонтировали общую папку? Вы разрешаете автоматическое монтирование гостевых утилит VirtualBox (т.е. / media / sf_something) или вы монтировали его вручную с помощью команды mount? Кроме того, можете ли вы описать, как вы настроили общий ресурс в VirtualBox в Windows? Есть три варианта для общего ресурса, только для чтения, автомонтирование и постоянный, какие опции вы отметили. Пожалуйста, публикуйте обновления на свой вопрос, а не комментарии. Пожалуйста, включите вывод df и команду, которую вы использовали для ручного монтирования файловой системы. Спасибо - вы увидите, что есть файловая система / media / sf_Ubuntu. Это ваша общая папка, вам не нужно монтировать ее вручную. Я предлагаю вам отключить / home / m / Desktop и просто использовать / media / sf_Ubuntu, который работает согласно моему ответу ниже. @ Тони: я не могу получить доступ к этой папке. Пожалуйста, смотрите мой оригинальный вопрос, который я добавляю больше информации

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

поэтому vboxsf группа имеет полный доступ. Добавив своего пользователя в эту группу, вы получите полный доступ. Таким образом, вы не будете беспокоиться об изменении их разрешений (что не имеет смысла на хосте Windows), вы просто дадите себе доступ.

В данном конкретном случае это автоматически подключаемая общая папка,

и именно этот каталог следует использовать для доступа к общей папке, поместив локального пользователя в vboxsf группу. Если вам нужна «лучшая» ссылка в домашнем каталоге вашего пользователя, вы всегда можете создать символическую ссылку.

Если вы вручную монтируете общую папку, то вам нужно использовать соответствующие параметры в mount команде, чтобы установить папку с нужным владельцем (т. Е. Параметры gid, uid и umask mount ). Это связано с тем, что хост-операционная система не поддерживает ту же систему разрешений, что и Linux, поэтому VirtualBox не может знать, кто должен владеть файлами.

Тем не менее, я настоятельно рекомендую просто настроить общую папку для автоматического монтирования (это настройка конфигурации общей папки в самом VirtualBox).

Во избежание сомнений, я не верю, что вы в любом случае можете нормально изменять разрешения для этой файловой системы, если она монтируется обычным образом,

Данная статья в первую очередь касается новичков, которые только начали изучать Linux системы. И так вы установили Samba сервер, создали общею папку настроили к ней доступ. Но пользователи не могут записать в неё файлы папки. Мы сейчас говорим о самом простом доступе к общему ресурсу без настройки учетных данных. Т.е у них нет прав на запись. Решить эту проблему достаточно просто.

Если вы совсем недавно начали изучать Linux системы, то рекомендую прочитать вот эти статьи.

Вообще можете перейти в раздел Linux и почитать статьи там достаточно много всего интересного.

Почему пользователь не может создать файл или папку

Вам необходимо разрешение на выполнение этой операции.

Другими словами у пользователей нет прав на запись в эту папку.

Samba нет прав на запись

Первое что нужно проверить это настройки Samba.

Почему пользователь не может создать файл или папку

Вот минимальный набор который должен у вас быть.

Samba нет доступа на запись

Samba разрешить запись в расшареную папку

Samba как дать пользователям права на запись

Настраиваем эти права и пробуем создать папку.

Как задаются права создаваемым файлам/каталогам в общей папке Samba

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

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