Sublime Text 3 вопрос аутентификации при сохранении документа

11

Я использую Sublime Text для веб-разработки. Каждый раз, когда я пытаюсь сохранить изменения (Ctrl + S), появляется окно аутентификации:

Аутентификация необходима для запуска / bin / cp от имени суперпользователя

Очевидно, что когда я ввожу пароль, Sublime сохраняет изменения правильно. Но когда я нажимаю Отмена , появляется другое окно с ошибкой:

Ошибка: ошибка administrator_copy_file (/tmp/.Some_File_Here, / var / www / Rest_Of_Path_Here): авторизация не удалась

Поскольку я новичок в Ubuntu, я не знаю, как избавиться от этой авторизации. У меня есть все разрешения для папки / var / www .

Songe
источник
Вы уверены, что у вашего пользователя есть права на запись, /var/wwwне становясь пользователем root (например, используя sudo)?
Дэвид Бэйли
@DavidBailey У меня есть права на запись, /var/wwwно не на подпапки. Я сделал chownна /var/wwwно когда я проверил разрешения на вложенные папки, напр. /var/www/First_Siteэто принадлежит www-data. Я думал, что chownна основной папке мне дадут разрешения также на все вложенные папки / файлы в ней.
ПЕСНЯ

Ответы:

6

У вас нет разрешения на запись в /var/www/Rest_Of_Path_Here. ST3 пытается повысить свой UID для записи в качестве правильного пользователя (отсюда и приглашение sudo). Я не знал, что это могло бы сделать это, но я проверил это, и это работает, так что вы идете.

Есть несколько способов исправить это:

  1. Позвольте вашему пользователю писать файлы напрямую . Здесь так много вариантов:

    • chownфайлы, так что вы владеете ими. Это может расстроить работу других пользователей, которые также могут нуждаться в написании, например, веб-сервер, работающий как www-пользователь. Возможно, вам придется изменить то, что они запускают как.
    • Добавьте своего пользователя в www-dataгруппу и измените маску файла, 774чтобы члены группы могли писать / выполнять.
    • Измените маску файла, чтобы другие пользователи могли писать (например, 777) ... Но это довольно рискованно, если на сервере уже есть что-то вредоносное.
    • Используйте списки ACL, чтобы позволить вашему пользователю писать без нарушения стандартной структуры разрешений.
  2. Измените ваш рабочий процесс, чтобы записать в систему управления версиями (например, git) в качестве ваших пользователей, а затем запустите скрипт, когда другой пользователь проверит его. Это несет в себе другие преимущества.

  3. Запустите ST3 как пользователь, который может написать там:

    sudo -u www-data subl /var/www/Rest_Of_Path_Here
    

    Это намного страшнее, чем просто исправление файлов.

Оли
источник
Вы правы. У меня есть только права на папку / var / www , но не на все подпапки в ней, которые принадлежат www-data. Я думаю, что лучшим решением будет добавление моего пользователя в www-dataгруппу.
ПЕСНЯ
Просто чтобы кто-нибудь знал. Добавление моего пользователя в www-dataгруппу решило проблему. Я просто должен был перезагрузить систему после этого. Спасибо @ Оли.
ПЕСНЯ
4

У меня была та же проблема, и я смог ее решить, предоставив пользователю право на конкретную папку, которую мне пришлось редактировать в Sublime text 3. Я использовал следующие команды:

sudo chmod 775 -R projectname/   
sudo chown username -R projectname/

Я думаю, что это может быть полезно для других в будущем.

Исаак Шреста
источник
Большое спасибо
:)
0

Добавьте своего пользователя в группу администраторов одним из следующих способов в зависимости от используемой версии Ubuntu. Попробуйте оба:

sudo usermod -a -G admin username

ИЛИ

sudo usermod -a -G sudo username

Если вы уже в группе администраторов, попробуйте chownв папке.

Шарад Гаутам
источник
Почему? Есть предположение, что они уже входят в группу sudo / admin (это работает, когда они вводят свой пароль).
Оли
Может быть chown, сделаем @Oli
Sharad Gautam
0

У меня та же проблема: я пытаюсь отредактировать файл моего сервера apache с помощью sublime-text, и я не хочу портить разрешение моего веб-сервера. Изменение ваших файлов g + w и помещение вашего пользователя в группу www-data - не очень безопасная идея.

Я бы посоветовал использовать плагин SFTP для возвышенного текста:

  • скопируйте файл вашего веб-сервера в папку, принадлежащую вашему собственному пользователю
  • настроить плагин SFTP с:
"upload_on_save": true,
"host": "localhost",
"user": "www-data",

Не указывайте пароль в конфигурации, так как это тоже серьезная дыра в безопасности.

Sublime-text попросит вас ввести пароль один раз, а затем запомнит его для сеанса. После каждого сохранения файла он открывает сеанс sftp для localhost и записывает файл на диск с соответствующим пользователем.

Паскаль Фурнье
источник
0

Выполните следующие действия в вашем терминале Linux / Unix:

sudo chmod -R 777 project-name
sudo chown user-name project-name

Попробовал -R 775и не сработало, так и -R 777получилось, хотя я дал разрешения на запись для всего проекта

Хосе Мхланга
источник