Проблема с разрешениями при создании каталога из WSL2

Вопрос или проблема

Я перекрестно публикую это из Emacs stack exchange по предложению кого-то оттуда. Emacs создает директорию в Windows 10 (Pro) из WSL2, которая имеет странные проблемы с правами доступа. Я вижу директорию в Проводнике и с помощью ls из родительского каталога, но не могу просмотреть содержимое или изменить директорию. Она либо сообщает, что у меня нет прав доступа, либо утверждает, что такой директории не существует. Однако некоторые исполнимые файлы имеют доступ, в частности 7-Zip.

Это мой домашний компьютер, поэтому я могу делать с ним все, что захочу. Я попытался изменить права доступа к папке, но это, кажется, не помогло. Я могу удалить папку из WSL2, но Emacs просто воссоздает ее с той же проблемой.

Права доступа Windows

Я посмотрел на права доступа нескольких директорий. Они, по-видимому, все такие же, как eln-cache, за исключением aux.

aux (каталог с проблемой)

Вкладка Общие: Только для чтения и Скрытый не выбраны. Вкладка Безопасность пользователя, Группа или имена пользователей:

  • Все: (специальные разрешения)
  • Ограниченные: (специальные разрешения)
  • Система: (специальные разрешения)
  • <Мой пользователь>: (все, кроме специальных разрешений)
  • Администраторы: (специальные разрешения)

eln-cache (работает как ожидалось)

Вкладка Общие: Только для чтения выбрана (черный квадрат, не галочка), но Скрытый нет. Вкладка Безопасность пользователя, Группа или имена пользователей:

  • Аутентифицированные пользователи: (модификация, чтение и выполнение, список содержимого папки, чтение, запись)
  • Система: (все, кроме специальных разрешений)
  • Администраторы: (все, кроме специальных разрешений)
  • <Мой пользователь>: (чтение и выполнение, список содержимого папки, чтение)

Права доступа Linux

drwxrwxrwx 1 <my user> <my user>  512 Feb 20 21:45 .
drwxrwxrwx 1 <my user> <my user>  512 Feb 20 16:07 ..
drwxrwxrwx 1 <my user> <my user>  512 Feb 21 14:56 aux

Сообщения об ошибках

ls : Не удается найти путь ‘C:\Development\.emacs.d\aux’, потому что он не существует.

Из Проводника (обратите внимание, что нажатие кнопки Продолжить ничего не делает):

У вас в данный момент нет разрешения на доступ к этой папке. Нажмите
«Продолжить», чтобы получить постоянный доступ к этой папке.

Ответ или решение

Конечно, вопрос, связанный с проблемами доступа к директориям при использовании WSL2 на Windows 10, может быть достаточно сложным, учитывая промежуточный слой, который представляет собой Windows Subsystem for Linux. В данном случае у вас возникла уникальная ситуация, где Emacs создает директорию, к которой потом невозможно получить доступ ни из Windows, ни из других программ, работающих под WSL.

Теория

Когда WSL2 создает файлы или директории в файловой системе Windows, он задействует механизм совместимости, который позволяет Linux-программам работать с NTFS-файловой системой Windows. Однако этот процесс не всегда совершенный, и могут возникать проблемы, связанные с несовпадением прав доступа или конфигураций между двумя системами. В данной ситуации, возможность доступа к директории варьируется в зависимости от инструментов, используемых для ее просмотра или изменения. Это может быть вызвано различиями в интерпретации прав доступа Windows и Linux.

Пример

Как видно из вашего описания, структура прав доступа продемонстрирована двумя разделами: Windows и Linux правами. В Windows для проблемной директории aux все группы, включая Everyone, Restricted, System, <My user>, и Administrators имеют только особые права доступа. Это контрастирует с работающей директорией eln-cache, где Authenticated Users имеют стандартный набор прав на модификацию, чтение и запись.

Из примера видно, что для директории aux Windows может применять более строгие ограничения, обусловленные "особыми правами", что может влиять на возможность ее просмотра и модификации.

Применение

Чтобы устранить проблему, можно выполнить следующие шаги:

  1. Проверка имени директории: Имя aux является специальным в Windows. Дело в том, что Windows зарезервировала определенные имена, такие как aux, con, nul и другие устройства DOS, для использования системой. Замена имени директории на другое, не зарезервированное, может решить проблему.

  2. Настройки прав доступа в Windows:

    • Откройте свойства директории из проводника и перейдите на вкладку "Безопасность".
    • Нажмите "Изменить", чтобы открыть меню редактирования прав.
    • Добавьте вашу учетную запись пользователя или группу Authenticated Users.
    • Предоставьте необходимые права, такие как "Чтение и исполнение", "Список содержимого папки" и "Чтение". Если необходимо, можно также добавить право на запись.
  3. Проверка прав в Linux:

    • Разрешения, показанные как drwxrwxrwx, означают, что все пользователи могут читать, писать и исполнять файлы внутри. Это может быть проблемой с точки зрения безопасности. Однако, для устранения текущей проблемы, убедитесь, что Linux пользователь, под которым вы работаете, имеет полный доступ.
  4. Тестирование доступности:

    • После изменения имени и прав доступа, протестируйте доступ к директории и возможность в ней работать как из проводника Windows, так и через WSL.
  5. Тактические шаги в Emacs:

    • Настройки Emacs могут быть важными для предотвращения повторного создания директории с проблемами. Убедитесь, что Emacs сконфигурирован использовать новое имя директории. Это можно сделать через конфигурационные файлы Emacs.

Эти действия должны помочь вам решить проблему с доступом к директории, созданной из WSL через Emacs. И наконец, всегда стоит иметь в виду, что работа между двумя различными операционными системами требует особого внимания к вопросу совместимости и управления правами доступа. Надеюсь, что эти советы помогут наладить корректное взаимодействие между Windows и WSL в вашем случае.

Оцените материал
Добавить комментарий

Капча загружается...