Я хочу изменить файлы с помощью KomodoEdit, которым нужны sudo
разрешения. Я не могу запустить KomodoEdit с помощью sudo
, хотя (по какой-то причине). Могу ли я как-то предоставить Komodo разрешение на редактирование этих файлов (в частности, я говорю о файлах apache2 и /etc/hosts
)?
решение1
Использовать sudoedit <file>
. Он создает локальную копию файла, редактирует его с правами пользователя и копирует обратно в исходное местоположение. Преимущество в том, что редактор работает как обычный пользователь.
Чтобы указать редактор, отличный от редактора по умолчанию, вы можете EDITOR
временно задать:
EDITOR=/usr/bin/someeditor sudoedit /etc/hosts
Для этого необходимо sudo
установить пакет и добавить пользователя в sudo
группу.
решение2
Теоретически это можно сделать, установив бит suid на komodoedit и изменив его владельца на root.
sudo chown root:root /path/to/komodoedit
sudo chmod u+s /path/to/komodoedit
Что оно делает:
chown
устанавливает владельца на rootchmod u+s
предоставляет любому, кто запускает файл, те же права (на выполнение), что и владелец.
Поскольку мы назначили владельцем root, фактическим владельцем выполнения становится root.
Вероятно, это НЕ тот ответ, который вы ищете, поскольку он предоставит всем пользователям эффективный корневой редактор.
sudoedit, как упомянул marco, вероятно, более правильный вариант с точки зрения безопасности.
решение3
Относительно простой способ — предоставить вашему идентификатору пользователя разрешения на доступ к определенному файлу с помощьюсписки контроля доступа. Вам, вероятно, понадобится установить acl
пакет, чтобы иметь команды getfacl
и setfacl
. Затем для пользователя "myname" и файла /etc/hosts
вы можете дать команду:
sudo setfacl -m 'u:myname:rw' /etc/hosts
и тогда вы сможете читать/писать этот файл. Когда вы ls -l
на файле, вы увидите +
знак, показывающий, что для файла есть acl:
-rw-r--r--+ 1 root root 221 Nov 5 16:55 /etc/hosts
и вы можете перечислить acl с getfacl
в файле. Чтобы удалить acl позже используйте
sudo setfacl -x 'u:myname' /etc/hosts
или setfacl -b
удалить все списки контроля доступа (acls). (Ваша файловая система должна поддерживать списки контроля доступа).