Поскольку я читал вокруг из нескольких потоков здесь. Я не должен выполнять VSCode как корень, потому что это опасно. Но каждый раз, когда я поразил CTRL+S, я должен спуститься до нижнего правого выполнения и выполнения щелчка как администратор и ввести мой пароль. Не только однажды, но и каждый раз я сохранил файл. Даже тот же файл, который я уже просто сохранил 2 секунды назад.
Я сохраняю файлы в папке на своем рабочем столе: ~/Desktop/github
.
Почему это происходит и как я могу избежать его?
Вы не владеете каталогом "GitHub"
Откройте терминал
cd Desktop
chown $USER:$USER github
... и можно сохранить файлы в том каталоге. Но действительно имейте думание об этом 1-м: кто или что создало его? Возможно, Вы, как предполагается, не используете тот каталог? Это называют GitHub по определенной причине? Я предположил бы, что VSCode будет использовать "Документы".
проверьте владение и полномочия для того файла.
ls -l
это даст Вам список файла, разрешение и владение. Вот пример, снимок экрана списка файлов. Если у Вашего пользователя нет владения, можно изменить его использование
sudo chown -R $USER:$USER FOLDER_NAME
или если Вы находитесь в группе пользователей (как www-данные) и Вашей группе пользователей собственные файлы, но Вы не можете сделать изменений, необходимо изменить уровень разрешения на 775 путем выполнения этого.
sudo chmod 775 FILE_NAME
Если Ваш дистрибутив использует Уэйленд, а не X11, чем выполнение vscode, поскольку sudo не будет работать.
Единственное решение, в которое я приехал после маленького исследования, состояло в том, чтобы создать сценарий удара, который использует известное и принятое обходное решение xhost корень.
Сохраните следующий сценарий в/home/your-username/bin (создайте, если не существует), также удостоверьтесь, чтобы Вы добавили что папка к своему пути. Я назвал файл, содержащий сценарий wsudocode
Примечание: Этот сценарий предполагает, что Ваш пользовательский dir данных для корня vscode /home/your-username/.vscode-root
#!/bin/bash
#small script to enable root access to x-windows system
xhost +SI:localuser:root
sudo code --user-data-dir=/home/$USER/.vscode-root --verbose $1 > /dev/null 2>&1
#disable root access after application terminates
xhost -SI:localuser:root
#print access status to allow verification that root access was removed
xhost
wsudocode [target file or directory path]
По некоторым причинам это кажется смешным, я мог только заставить vscode работать как sudo этот путь с - подробная опция, следовательно почему это находится в сценарии.
Также помните, что VSCode сохранит все файлы с корневыми полномочиями, когда выполнено как корень, это может быть непреднамеренно, и таким образом необходимо было бы изменить владение и вероятные полномочия сохраненных файлов, если это верно.
Адаптированный из универсального решения jeepr здесь https://www.reddit.com/r/Fedora/comments/5eb633/solution_running_graphical_app_with_sudo_in/
Вам необходимо удалить разрешения только на чтение из папки приложения следующим образом:
sudo chmod -R 7777 <project_folder_name>
Если у кого-то по-прежнему возникают проблемы с этим после выполнения некоторых из описанных выше шагов, дважды проверьте свои расширения VSCode. Для меня действительно не VSCode имел дело с ошибками разрешений, а скорее расширение SFTP VSCode, которое я установил.