Linux отказано в доступе при копировании
Когда я использую 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.
Все операционные системы семейства 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 достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.
Читайте также: