Linux отказано в доступе при копировании

Обновлено: 04.07.2024

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

Например, моя мышь нервная и вялая, поэтому я хочу отключить опрос:

Мне предлагается ввести пароль, а затем получить:

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

И снова система ответила:

Перенаправление вывода (через > оператора) выполняется оболочкой, а не echo . Вы должны войти в систему как root

Тогда вы можете использовать перенаправление

В противном случае вы можете запустить строку bash с помощью sudo

Вы не можете запустить эхо с Sudo? Что насчет результата, который я получил: saji@laptop:

$ sudo echo "Hi" [sudo] password for saji: Hi

Вы можете написать в файл, эхо "что-то"> Somewhre. Это использует трубу .. В этом проблема. Хорошо, если это так, пожалуйста, обновите свой ответ, чтобы отразить, что запуск echo является проблемой только в этом случае. Вы не можете просто запустить встроенную оболочку echo как sudo, если вы не сделаете что-то подобное sudo bash -c 'echo …' ; однако системы POSIX обычно предоставляют внешнюю echo команду, такую ​​как /bin/echo в OS X, которую sudo может выполнить без rigamarole. Таким образом, echo команда, которую вы обычно запускаете, и echo команда, которую вы запускаете с помощью sudo, вероятно, являются двумя разными, но похожими командами.

Перенаправление вывода выполняется оболочкой, из которой была вызвана команда . Итак, разбивая все на кусочки, вот что происходит *:

вызывает оболочку sudo echo "options drm_kms_helper poll=N" , которая выполняет sudo команду с echo "options drm_kms_helper poll=N" командной строкой

Судо запрашивает пароль, открывает суперпользователя оболочку и вызывает echo "options drm_kms_helper poll=N" , который запускает echo команду передачи его "options drm_kms_helper poll=N"

echo, работающий с root привилегиями, выводит строку в стандартный вывод.

echo команда завершается, суперпользовательская оболочка завершается, sudo завершается

(*) - хотя приведенная выше последовательность помогает понять, почему команда терпит неудачу, в действительности все происходит несколько не по порядку: исходная оболочка замечает перенаправление и пытается открыть файл для записи перед вызовом sudo . команды. При открытии файла происходит сбой, оболочка даже не вызывает команду, которая должна была записать файл (спасибо @PanosRontogiannis за это).

В настоящее время я использую Ubuntu для Windows из Магазина Microsoft.

Чтобы попробовать некоторые из моих скриптов Python, я скопировал и вставил их в папку документов, к которой я могу получить доступ через сеанс Ubuntu:

Но когда я запускаю сценарии, он возвращается "PermissionError: [Errno 13] Permission denied: '[folderName]" , Есть ли способ скопировать / вставить файлы и папки из сеанса Windows в папки Ubuntu без необходимости запуска chmod для всех файлов?

Спасибо за ваше время

3 ответа

Вы не должны вручную копировать данные в установку WSL из Windows - это даст вам эту ошибку прав доступа при этом. Скорее вы должны копировать из окон в WSL изнутри среды WSL.

Диск Windows C находится по адресу /mnt/c в рамках WSL. Если сценарии находятся в C:\Users\username\My Documents\Python\ затем вы можете выполнить следующие действия из WSL, чтобы скопировать сценарии в среду Ubuntu:

Это скопирует данные и сохранит разрешения, чтобы они правильно работали в подсистеме Windows для Linux. Это также избавляет вас от необходимости chmod обычно.

Если вы хотите скопировать / вставить любой из ваших файлов из Linux/Ubuntu на ваш компьютер с Windows, это может быть очень полезно.

Загрузите Windows и нажмите Windows + R. Это подводит вас к "Run Dialog". Там типа shutdown /s (Вот /s означает "Используйте эту опцию с командой выключения, чтобы выключить локальный или /m определил удаленный компьютер.").

Кстати, вам не нужно снимать флажок Fastboot или что-то еще.

Я хотел переместить файл в рабочий каталог Ubuntu WSL из папки загрузок Windows, используя командную строку Ubuntu WSL, так как я скачал некоторые файлы из электронной почты, но он отказал в доступе, когда я использовал метод /mnt/c. И файлы будут повреждены, если вы принудительно скопируете их вручную с помощью графического интерфейса Windows. Поэтому я установил Firefox с помощью командной строки Ubuntu WSL. Открыл письмо, используя firefox (используя подсказку источника) и скачал файлы, которые затем перешли в папку загрузок в моем рабочем каталоге Ubuntu WSL. Я получил файлы, и программа для чтения файлов была также установлена ​​с использованием Ubuntu WSL, так что она работала для меня. Я не уверен, что программа чтения файлов, если она не установлена ​​с использованием приглашения Ubuntu WSL, будет читать файлы для вас, потому что, насколько я понимаю, windows не любит хранить ссылки с предоставляемым расширением Ubuntu WSL. Однако, если это поможет, просто отправьте файлы по электронной почте себе и загрузите их с помощью Firefox, и они у вас есть.

Я думаю, что этот ответ должен быть обновлен.

WSL не разрешал вам раньше, но теперь возможно следовать этому руководству

Вы можете просто перемещать или копировать / вставлять файлы в один из этих каталогов Linux или через командную оболочку cmd или bash.

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

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