Невозможно создать отказ в доступе к каталогу в Ubuntu
Обновлено: 21.11.2024
Невозможно создать каталог с помощью mkdir, хотя touch , rm , rmdir , mv работают нормально.
Microsoft Windows [версия 10.0.19546.1000]
Дистрибутив Arch Linux, созданный с помощью
wsl --export Arch D:\arch.tar
wsl --import Arch2 D:\WSL\Arch2 D:\arch.tar --version 2 р>
cd /mnt/d/
mkdir a
выдает
mkdir: невозможно создать каталог ‘a’: Отказано в доступе
В домашнем каталоге работает нормально, хотя
cd /mnt/c/Users/user
mkdir
здесь проблем нет.
С чего мне начать искать решение этой проблемы?
Текст был успешно обновлен, но возникли следующие ошибки:
xzn прокомментировал 16 февраля 2020 г.
sirredbeard прокомментировал 18 февраля 2020 г.
Откуда вы взяли изображение Arch?
xzn прокомментировал 18 февраля 2020 г.
WSL работает нормально, я экспортирую его в WSL2, и у меня проблемы с mkdir .
Попробую сейчас вашу ссылку.
sirredbeard прокомментировал 18 февраля 2020 г.
Попробуйте другое изображение Arch, я знаю, что это хорошее изображение.
Какие права доступа к папке, которую вы пытаетесь создать?
Вы пробовали чаун?
xzn прокомментировал 18 февраля 2020 г.
chown, chmod работают вместе с touch, rm, rmdir, mv и т. д. Я только что заметил, что mkdir не работает, когда git clone дает мне отказ в разрешении.
Спасибо за помощь! Попробую чистое изображение вместо того, чтобы экспортировать из того, что у меня сейчас есть.
ikastro прокомментировал 3 марта 2020 г.
У меня та же проблема, я пытаюсь создать каталог, чтобы смонтировать диск
wwlwww прокомментировал 8 мая 2020 г.
Я удаляю git dict в проводнике Windows, затем ошибка mkdir в терминале WSL.
kudaba прокомментировал 1 июня 2020 г.
Я только что обновился до Ubuntu версии 2 и столкнулся с той же проблемой. Я не могу mkdir на своих дисках в /mnt/c и /mnt/d, но он отлично работает в моей домашней папке и других областях. Все остальные операции работают нормально. Даже запуск через sudo не помогает. Мое приложение, над которым я работаю, также не может создавать папки.
kudaba прокомментировал 25 сентября 2020 г.
sudo umount /mnt/c && sudo mount -t drvfs C: /mnt/c -o метаданные
Неясно, но команда кажется постоянной. Я не уверен, что произошло во время обновления с WSL 1 до 2, что повлияло на это.
stu85010 прокомментировал 15 октября 2020 г.
Говорят, я создал каталог в /c/src и пытался работать там, но группа "Пользователь" не имеет разрешения Полный доступ для этого пути, поэтому создание папки в моем случае не работает в WSL.
Затем мне было добавлено разрешение на полный доступ к моей учетной записи Windows в этой папке, и mkdir отлично работал в этом каталоге.
kudaba прокомментировал 4 декабря 2020 г.
Оказалось, что мое решение для монтирования не выдержало перезагрузки, но Полный доступ для пользователей исправил это, спасибо @stu85010.
Прокомментировал EmilySeville7cfg 16 апреля 2021 г. •
У меня такая же проблема с Ubuntu 20.04.2 LTS. Кроме того, другие команды, такие как касание и перенаправление ввода-вывода, завершаются с той же ошибкой. Почему это происходит?
Перевод: Ошибка mkdir не может создать каталог
Новые пользователи Linux часто бывают озадачены ошибками «mkdir: невозможно создать каталог», когда делают первые шаги и пытаются изучить основы работы с файлами и каталогами. В этом коротком посте я покажу два наиболее распространенных типа этой ошибки mkdir, а также объясню, как исправить ситуацию, чтобы вы больше не получали эти ошибки.
mkdir: невозможно создать каталог — файл существует
Это должно быть понятно после нескольких недель использования таких команд, как mkdir, но когда вы впервые видите это, это может сбивать с толку.
Файл существует? Как это может быть, когда вы просто пытаетесь создать каталог? И почему он говорит «Файл существует», когда вы пытаетесь создать каталог, а не файл?
Эта ошибка предполагает, что используемое вами имя каталога (/tmp/try в моем примере, показанном на скриншоте) уже занято — существует файл или каталог с таким же именем, поэтому другой не может быть создан.
Рассмотрите следующий сценарий:
Вы можете использовать замечательную команду ls, чтобы проверить, что происходит:
Конечно же, у нас уже есть каталог с именем /tmp/try!
Причина, по которой там написано «Файл существует», заключается в том, что почти все в Unix является файлом. Даже каталог!
Возможные решения mkdir: невозможно создать каталог — сценарий существует
Переименовать (переместить) существующий каталог
Используйте команду mv, чтобы переместить /tmp/try в новое место (или дать ему новое имя). Вот как переименовать /tmp/try в /tmp/oldtry:
Давайте снова запустим команду mkdir:
… и поскольку на этот раз ошибок нет, мы, вероятно, только что создали каталог /tmp/try, как и хотели. Давайте проверим и /tmp/try, и /tmp/oldtry с помощью ls:
Удалить существующий файл
Еще один вариант, который у вас всегда есть, — просто удалить файл, который блокирует вашу команду mkdir.
Во-первых, давайте создадим пустой файл с именем /tmp/newtry и подтвердим, что это файл, а не каталог, используя команду ng ls:
Теперь, если мы попробуем mkdir с тем же именем, это не удастся:
Итак, чтобы устранить проблему, мы удаляем файл и снова пытаемся запустить mkdir:
На этот раз ошибок не было, и команда ls может показать вам, что у вас действительно есть каталог с именем /tmp/newtry:
mkdir: невозможно создать каталог — доступ запрещен
Это еще одна очень распространенная ошибка при создании каталогов с помощью команды mkdir.
Причина этой ошибки в том, что пользователь, от имени которого вы запускаете mkdir, не имеет прав на создание нового каталога в указанном вами местоположении.
Вы должны использовать команду ls в каталоге более высокого уровня для подтверждения разрешений.
Давайте рассмотрим пример:
Все эти команды выполнены успешно, потому что я сначала создал новый каталог с именем try2018, а затем еще один подкаталог внутри него. Команда ls подтвердила, что у меня есть права доступа 775 для каталога try2018, то есть у меня есть права на чтение, запись и выполнение.
Теперь давайте удалим права на запись для всех для каталога try2018:
Если я попытаюсь создать подкаталог сейчас, я получу сообщение mkdir: невозможно создать каталог — ошибка разрешений запрещена:
Чтобы решить эту проблему, давайте снова добавим права на запись:
Как видите, каталог try2018/yetanotherone успешно создан:
На сегодня все! Надеюсь, вам понравилось это руководство. Обязательно изучите другие основные руководства по Unix в моем блоге.
См. также Основные команды Unix Команда mkdir в Unix Типы файлов в Unix chmod и руководство по командам chown Unix
При работе с Linux часто возникает ошибка «Отказано в доступе». Это, вероятно, самая распространенная ошибка, с которой можно столкнуться при запуске в Linux. В этом модуле мы узнаем, как исправить эту ошибку несколькими способами.
Оглавление
Шаги по исправлению ошибки отказа в доступе в Ubuntu/Debian Linux
Давайте рассмотрим шаги по исправлению ошибки отказа в доступе в наших системах на основе Ubuntu или Debian здесь.
Способ 1. Используйте команду Sudo
Некоторые файлы принадлежат пользователю root, и доступ к ним может получить только пользователь root или команда sudo. Не рекомендуется изменять разрешения или владельца этих файлов. Однако при необходимости их можно изменить с правами суперпользователя. Примеры таких файлов:
Чтобы получить доступ к таким файлам, нам нужно использовать sudo или быть пользователем root как таковым:
Способ 2. Установка правильных системных разрешений
Это наиболее распространенный способ исправить эту операцию. Часто нам не хватает необходимых разрешений для доступа к файлу. Чтобы проверить наши доступные разрешения, мы можем использовать команду ls:
Предположим, что это приводит к следующему результату:
Здесь мы видим, что только пользователь-владелец имеет права на чтение и запись. Таким образом, если другой пользователь попытается прочитать этот файл, он получит сообщение об ошибке:
Следовательно, чтобы исправить это, мы будем использовать команду chmod. Мы можем предоставить доступ чтение всем (владельцу, членам группы и другим) с помощью следующей команды:
Проверка прав доступа к файлу сейчас должна дать что-то вроде следующего:
То же самое можно сделать с разрешениями на запись и выполнение. Если мы хотим ограничить доступ пользователям одной и той же группы, мы можем использовать следующую команду:
Это позволит пользователям из той же группы, что и владелец, получить доступ к файлу, а разрешения будут выглядеть примерно так:
Теперь мы наконец можем прочитать файл от имени другого пользователя.
ПРИМЕЧАНИЕ. Если файл принадлежит пользователю root, а наш текущий пользователь входит в группу sudoer, мы можем сами изменить права доступа к файлу, поставив перед нашими командами префикс sudo. Чтобы узнать больше об использовании команды chmod, ознакомьтесь с этим модулем!
Способ 3. Изменение владельца файла
Последний метод в нашем списке, хотя и менее традиционный, может помочь исправить ошибку «Отказано в доступе». Вместо того, чтобы менять права доступа к файлу, здесь мы изменим его владельца. Для этого нам понадобится команда chown. Сначала давайте проверим право собственности на файл, используя:
Как мы видим, файл принадлежит пользователю, помеченному как «пользователь», а также группе с таким же именем. Кроме того, обратите внимание, что только у владельца есть разрешения на чтение и запись (их можно изменить, как обсуждалось ранее). Однако в настоящее время мы не можем получить доступ к файлу. Но мы изменим владельца (и группу) файла с помощью:
Если мы проверим детали нашего файла сейчас, мы обнаружим, что он изменен на:
Как мы видим, права доступа к файлам сохранены, но изменены группы, которые могут получить доступ к файлу. Поскольку у владельца есть права на чтение (если это не так, мы всегда можем использовать chmod), теперь мы можем прочитать содержимое файла:
Заключение
Здесь мы увидели, как решить проблемы с разрешениями. Каждый из описанных здесь методов применим по-своему в зависимости от сценариев, и каждый из них должен использоваться осторожно по мере необходимости.
Как следует из вывода об ошибке, эта проблема связана с отсутствием прав доступа к файлу или каталогу. Как правило, у вас по-прежнему будет доступ к SFTP-серверу через SSH, но вы не сможете изменить определенный файл или каталог. Другое похожее сообщение об ошибке — «Отказано в доступе к SFTP (открытый ключ)», когда вы даже не сможете получить доступ к серверу через SFTP или SSH.
В этом посте мы рассмотрим два случая. Во-первых, мы научимся проверять и обновлять права доступа к файлу/папке пользователя/группы, а во-вторых, выясним, почему мы получаем отказ в доступе/аутентификации из-за открытого ключа.
Чтобы проиллюстрировать более четкую картину сценария ошибки «Отказано в доступе к sftp», мы будем использовать AWS EC2, Ubuntu (Focal-20.04-amd64-server). Мы будем использовать пользователя по умолчанию «ubuntu» и добавим нового пользователя sftp01. По умолчанию AWS не предоставляет root-доступ по SSH к инстансам EC2 в соответствии с рекомендациями по обеспечению безопасности.
1. Ошибка «Отказано в доступе к SFTP»
Независимо от того, какой SFTP-клиент вы используете, когда вы подключаетесь по SFTP к серверу и пытаетесь заменить, отредактировать, удалить или перезаписать файл или каталог, вы получите сообщение об ошибке «Отказано в доступе к SFTP».
Невозможно создать удаленный файл 'ver'. |
Отказано в доступе. |
Код ошибки: 3 |
Сообщение об ошибке от сервера: Отказано в доступе |
В Windows при использовании SFTP-клиента, такого как WinSCP или FileZilla, сообщение выглядит следующим образом:
Как правило, вы успешно подключаетесь через SFTP или SSH к тому же пользователю, но не можете изменять, изменять или перезаписывать файл через SFTP. Но если вы даже не можете подключиться через SFTP или SSH, вы можете получить похожее сообщение об ошибке, которое гласит: «Отказано в доступе к SFTP (открытый ключ)».
Причина этих сообщений об ошибках обычно связана с неправильными разрешениями или их отсутствием. Например, у вас могут быть разрешения на чтение, запись и выполнение для вашего локального файла (или папки), но удаленная папка (или файл) может не принимать ваши действия (чтение, запись или выполнение).
Права доступа к файлу 101
Поскольку эта ошибка, скорее всего, связана с неправильными разрешениями, вам придется выяснить, почему у вас нет прав на редактирование, изменение или загрузку файла или каталога.
- Войдите на SFTP-сервер с помощью SSH и введите команду «$ whoami», чтобы увидеть свое имя пользователя.
- Предположим, что у пользователя, вошедшего в систему на SFTP-сервере, нет необходимых разрешений (таких как команда чтения «ls») для определенного каталога или файла. В этом случае вы получите сообщение вроде: «ls: невозможно открыть каталог ‘/root’: разрешение отклонено».
Из соображений безопасности некоторые облачные провайдеры, такие как AWS, отделяют корневой доступ от других пользователей. В этом случае мой пользователь «ubuntu» не имеет доступа к папке корневого пользователя. Это просто потому, что оба пользователя принадлежат к разным группам с разными разрешениями.
- Используйте «$ls -l», чтобы получить длинный подробный список файлов, каталогов и разрешений. Эта команда поможет вам увидеть, есть ли у вашего пользователя (в группе) правильные права доступа к файлу. На приведенном ниже снимке экрана показаны выходные данные этой команды.
Итак, из вывода мы можем получить, что файл (-) «test.txt» принадлежит пользователю/группе (ubuntu/ubuntu). Что касается уровня разрешений, «-rw-rw-r—» «пользователь» и «группа» могут как читать, так и писать, а все остальные могут только читать.
- Чтобы устранить неполадку, связанную с отказом в доступе к SFTP, необходимо определить, принадлежит ли ваш «другой» пользователь к группе с разрешениями на чтение и запись (rw) (например, в данном случае «ubuntu»).
- Используйте команду «$ groups», чтобы увидеть группу, с которой связан ваш текущий пользователь.Итак, в этом примере пользователь «ubuntu» не принадлежит к группе «root», поэтому у него нет доступа к папке /root, как было заявлено изначально. Группа «sudo» предоставляет повышенные привилегии.
Решения: как исправить отказ в разрешении SFTP?
Итак, теперь, когда мы знаем, как проверять пользователей, группы и их права доступа к файлам/папкам, давайте решим ошибку «Отказано в доступе SFTP». Имейте в виду, что для выполнения большинства команд здесь требуются более высокие привилегии.
Команда (ls -l) удобна для просмотра прав доступа к целевому каталогу или файлу. Если файл или каталог принадлежит другому пользователю, группе или не разрешает запись (например, drwxr-xr-x) для группы и других пользователей, вам необходимо предоставить правильный набор разрешений.
Решение 1. Назначить пользователя без разрешения в группу с разрешениями на файл или каталог
Используйте команду (ls-l), чтобы увидеть владельца и группу, к которой принадлежит файл. Если он принадлежит к другой группе, к которой не принадлежит ваш пользователь, вам нужно будет добавить своего пользователя в эту группу.
Используйте следующую команду, чтобы назначить своему пользователю групповое разрешение вместо чтения и записи (rw). После этого снова попробуйте SFTP.
Решение 2. Используйте команду (chown), чтобы изменить владельца отдельного файла или каталога
Вместо того, чтобы назначать новую группу своему пользователю, вы можете изменить владельца файла или каталога. Например, предположим, что пользователь «sftp01» получает отказ в разрешении SFTP каждый раз, когда он хочет отредактировать или перезаписать файл «test01.txt». Чтобы узнать, кому принадлежит этот конкретный файл, перейдите в папку, в которой вы получаете отказ в разрешении sftp, и выполните (ls -l), а затем используйте (chown), чтобы изменить владельца.
Команда
ПРИМЕЧАНИЕ. Если вы работаете в роли администратора или root, будьте осторожны, чтобы не изменить полное право собственности на каталог и подкаталог с рекурсивным владением -R, так как это может повлиять на доступ и аутентификацию на SFTP-сервере ( мы вернемся к этому позже).
Решение 3. Предоставьте соответствующее разрешение
Используйте команду «chmod», чтобы изменить права доступа к файлу или каталогу. Предлагаемые уровни разрешений при использовании chmod: 755 для файла и 644 для разрешения каталога.
- chmod 755: Доступ для чтения и выполнения для всех. Доступ для чтения, записи и выполнения для владельца файла. Например, когда вы делаете «файл примера $chmod 755», вы разрешаете всем читать и выполнять файл, в то время как только владелец имеет право читать, записывать и выполнять файл.
- chmod 777: используйте chmod 777 (-rwxrwxrwx), если вы хотите разрешить всем, включая владельца, группу и других, читать, писать и выполнять. Предоставление этого уровня «открытости» не является хорошей практикой безопасности, но вы можете использовать его в целях тестирования.
- chmod 644: пользователь (или владелец) может читать и писать, но не может выполнять. Группа и другие могут читать, но не могут писать и выполнять. Эта команда рекомендуется для каталогов.
Команда «$sudo chmod 775 [имя файла]» изменит структуру разрешений файла. Как упоминалось выше, с (-rwxrwxr-x) (775) файл будет доступен для чтения и выполнения всеми (r-x) «другими».
Используйте Recursive для добавления подкаталогов разрешений
Вы можете использовать «sudo chmod -R [режим] [файл или каталог]». [-R] изменяет файлы и каталоги рекурсивно, поэтому используйте это с осторожностью. Он позволяет пользователю читать, записывать или выполнять все подкаталоги и файлы.
Решение 4. Отказано в доступе из-за неудачной аутентификации
Еще один вариант отказа в разрешении SFTP связан с проверкой подлинности. Вы даже не можете получить доступ к своему SFTP-серверу из SFTP-клиента. Если вы получите сообщение «Отказано в доступе (открытый ключ)», вы не сможете получить доступ и пройти аутентификацию на сервере через SSH.
Чтобы решить эту проблему, попробуйте следующее:
- Проверьте свое имя пользователя. Возможно, вы используете неправильное имя пользователя, но правильный открытый ключ и, таким образом, получаете сообщение об отказе в доступе. Проверьте, используете ли вы правильное имя пользователя в своем SFTP-клиенте. Но тем не менее, если имя пользователя правильное, но он не авторизован для использования ключа, вы также получите отказ в разрешении (открытый ключ).
- Разрешения на сервере неверны. Это связано с изменением прав доступа к файлам в домашнем каталоге. Пользователи могут быть заблокированы, если права доступа или владельца файла «authorized_keys» (в /.ssh/authorized_keys для Linux Ubuntu) изменились. Администратор должен войти в систему с корневым доступом или подключиться через последовательную консоль, чтобы настроить права доступа к файлам домашнего каталога. Как упоминалось ранее, неправильное применение «chmod -R» может повлиять на все подкаталоги домашнего каталога, включая файлы .ssh и author_keys.
- Проверьте открытый ключ SSH (.pub) на локальном компьютере. Убедитесь, что вы используете правильный открытый ключ в файле author_keys. Чтобы добавить новый открытый ключ к SFTP-клиенту с помощью FileZilla. Перейдите в «Настройки» > «Подключение» > «SFTP» > нажмите «Добавить файл ключа…». Просмотрите локальные файлы и импортируйте нужный ключ.
Настройка разрешений с помощью альтернативных инструментов сервера SFTP
1. SFTP/SCP-сервер SolarWinds — БЕСПЛАТНЫЙ ИНСТРУМЕНТ
Сервер Solarwinds SFTP/SCP — это бесплатный инструмент для надежной и безопасной передачи файлов. Он прост в использовании, легок и работает как служба Windows. Кроме того, SFTP предоставляет расширенные функции SFTP, такие как одновременная передача данных с нескольких устройств или ограничение доступа путем авторизации определенного или диапазона IP-адресов.
Этот инструмент отправляет образы ОС, файлы конфигурации, обновления, файлы резервных копий или файлы размером до 4 ГБ. Кроме того, этот SFTP-сервер обеспечивает первичный аутентификационный доступ к серверу и разрешает доступ только к одной папке для всех пользователей.
2. Сервер FTP/MFT SolarWinds Serv-U — БЕСПЛАТНАЯ ПРОБНАЯ ВЕРСИЯ
SolarWinds Serv-U FTP/MFT-сервер — это более продвинутый SFTP-сервер, который позволяет обрабатывать большие и множественные передачи файлов. Он поддерживает до 250 пользователей, 100 одновременных сеансов, до 3 доменов и позволяет точно контролировать доступ к этим ресурсам.
С помощью Serv-U вы можете легко изменять и обновлять права доступа и разрешения для пользователей и папок. Кроме того, он обеспечивает управление доступом к каталогу на основе правил, позволяющее изменять права доступа к файлам и каталогам.
Заключительные слова
Сообщение об ошибке «Отказано в доступе к SFTP» появляется, когда ваш SFTP-сервер не позволяет вашему пользователю (в группе) изменять или перезаписывать файл или каталог. Чтобы решить эту проблему, вам нужно подключиться по SSH к SFTP-серверу, найти файл/каталог и определить его текущий режим разрешений и владельца. Затем вам нужно будет изменить разрешения, как указано в этом сообщении. Второе сообщение об отказе в доступе к SFTP (открытый ключ) появляется, когда вы регистрируетесь с неправильным пользователем, открытым ключом или у пользователя нет необходимого разрешения для доступа к файлу ключа на сервере.
Кроме того, вы можете использовать SFTP-сервер, например сервер FTP/MFT SolarWinds Serv-U, который обеспечивает большую гибкость при настройке разрешений. Этот инструмент поможет вам избежать ошибки «Отказано в доступе к SFTP» и исправить ее для всех пользователей SFTP.
Читайте также: