LINUX.ORG.RU

Как бы так автоматически добавлять sudo если редактируешь конфиги рута.

 ,


1

5

В стуле прожжена дырка от попыток долго и вдумчиво, с чтением документации, редактировать конфиги в /etc без sudo перед nano *ненависть*. Хотелось бы предупреждение хоть какое ПЕРЕД редактированием или алиас на sudo $EDITOR для файлов владельца root:root.


Сиди в шелле под рутом.

xtraeft ★★☆☆
()

|| (сиди под рутом
юзай вим, там есть ридонли индикация
научись прописывать sudo когда нужно)

anonymous
()

Для $EDITOR давно существует https://github.com/chrisbra/SudoEdit.vim и является плугином номер 1 (часто бывает хочется бьстро файлик внутри /etc поправить в том же инстансе, причём как правило уже после ознакомления с содержимым, а не до). UPD: Ну или сразу sudo tee, что видимо то же самое, только без silent и няшной справки.

Ну и авторы всяких доморощенных десктопных эдиторов могли бы проверять режим доступа и дёргать суидный хелпер через polkit с авторизацией и политиками, но видимо они про это не знают, или знают но им не надо (так как сами они используют $EDITOR).

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от d_a

Не, vim не вариант. Я знаю, что вы захватили планету, но внедрите тогда землянам ген щупалец. Diakonos хочу с такой фичей.

Шутки в сторону. Я думал можно скриптом с проверкой владельца любой редактор запустить.

TepakoT
() автор топика
Ответ на: комментарий от TepakoT

Я думал можно скриптом с проверкой владельца любой редактор запустить.

Можно конечно. TIMTOWTDI. Но запускать редактор от имени другой учётки во первых неудобно, так как слетает вся кастомизация, во вторых просто бессмысленно, так как повышенных привилегий требует всего 1 (один) системный вызов (на запись).

d_a ★★★★★
()

алиас на sudo $EDITOR для файлов владельца root:root

Не всякий файл, принадлежащий сверхпользователю, не может быть записан вами. Не всякий файл, что не может быть записан вами, принадлежит сверхпользователю.

Сейчас извлеку из подшивки старый скриптик. Вот, по-моему, она даже когда-то работал:

#!/bin/bash

USAGE=$"Usage: trysudo { view | edit } <file>

View or edit a <file> resorting to sudo if necessary."

# if the script is started from GUI
if [[ ! -t 1 && -v DISPLAY ]]; then
    msg() { kdialog --title "$SCRIPTNAME" --error "$*"; }
    sudo='kdesudo'
    editor='gvim'
    viewer='gview'
# if from terminal
elif [[ -t 1 ]]; then
    msg() { printf >&2 "$SCRIPTNAME: $*\n"; }
    sudo='sudo'
    editor='vim'
    viewer='view'
else
    exit 1
fi

err() {
    msg "$*"
    exit 1
}

ftype() {
    stat --dereference -c '%F' "$1"
}

(($# == 2)) || err "$USAGE"
ACTION="$1"
FILE="$2"

[[ -e $FILE ]] || err $"$FILE does not exist"
FTYPE="$(ftype "$FILE")"
[[ $FTYPE == 'regular file' ]] || err $"$FILE is $FTYPE, not a regular file"

case "$ACTION" in
    'edit')
	if [[ -w $FILE ]]; then
	    exec $editor "$FILE"
	else
	    exec $sudo $editor "$FILE"
	fi
	;;
    'view')
	if [[ -r $FILE ]]; then
	    exec $viewer "$FILE"
	else
	    exec $sudo $viewer "$FILE"
	fi
	;;
    *)
	err "$USAGE"
esac

Вим и ка-дэ-ешные приблуды заменить по вкусу, разумеется.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)

Для редактирование конфигов в /etc и прочей админской работы существует su - (вход под рутом, кто не в курсе).
sudo существует лишь для точечных изменений. Используйте инструменты по назначению. Тогда и стул будет цел.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от ashot

И что? У программы может быть разное поведение в зависимости от того, как ее вызывают.

deadNightTiger ★★★★★
()
Ответ на: комментарий от anonymous

Пурф или sudo -i

Что есть пурф?
Да, sudo -i хорош, не знал про него.

Kroz ★★★★★
()

Хотелось бы предупреждение хоть какое ПЕРЕД редактированием

Вообще-то у nano такое предупреждение есть, есличо. Просто в глазки пороться не надо.

[ Read 16 lines (Warning: No write permission) ]

Valkeru ★★★★
()
Последнее исправление: Valkeru (всего исправлений: 1)
Ответ на: комментарий от Valkeru

Может человек имел ввиду что-нибудь более видимое. Например изменение цвета интерфейса nano.

Сам тоже пару раз влипал в такое, но выходить из редактора с потерей изменений не обязательно - достаточно сохранить конфиг куда-нибудь в /tmp и перебросить его на оригинальное место(не забыв свериться с правами на оригинальный файл)

Pinkbyte ★★★★★
()

Развивай память. Обычно все конфиги в некоем каталоге либо root либо user.

Ну а насчёт автоматизации... Я биндил на клавишу офтопика вставку последовательности «sudo » в screen. Очень удобно.

anonymous
()
Ответ на: комментарий от ashot

Мне ман процитировать?

Уже не надо, сам прочитал. Но вообще-то да.

Ну хорошо, вы правы, для других надо процитировать:

When invoked as sudoedit, the -e option (described below), is implied.

...

-e, --edit Edit one or more files instead of running a command. In lieu of a path name, the string «sudoedit» is used when consulting the security policy. If the user is authorized by the pol‐ icy, the following steps are taken:

1. Temporary copies are made of the files to be edited with the owner set to the invoking user.

2. The editor specified by the policy is run to edit the temporary files. The sudoers policy uses the SUDO_EDITOR, VISUAL and EDITOR environment variables (in that order). If none of SUDO_EDITOR, VISUAL or EDITOR are set, the first program listed in the editor sudoers(5) option is used.

3. If they have been modified, the temporary files are copied back to their original location and the temporary versions are removed.

Unless explicitly allowed by the security policy, symbolic links will not be opened. This helps prevent the editing of unauthorized files when the file is located in a user- writable directory. Versions of sudo prior to 1.8.10p3-1+deb8u3 do not have this restriction. Users are never allowed to edit device special files.

If the specified file does not exist, it will be created. Note that unlike most commands run by sudo, the editor is run with the invoking user's environment unmodified. If, for some reason, sudo is unable to update a file with its edited version, the user will receive a warning and the edited copy will remain in a temporary file.

Zmicier ★★★★★
()
export EDITOR=<твой любимый редактор>
function edit() { if [[ -f "$1" && ! -w "$1" ]]; then sudo -e "$1"; else $EDITOR "$1"; fi; }

Можешь запихнуть в *.desktop-файл, добавить ему text/plain в поддерживаемые MIME-типы и проассоциировать его в своей DE с текстовыми файлами (можно и руками, через ~/.local/share/applications/mimeapps.list). В этом случае нужно заменить sudo на pkexec или поставить графический ask-password к sudo.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)
Ответ на: комментарий от intelfx

Кажись работает. А в гуях я конфиги не правлю. Впихнул в .bashrc. Спасибо.

TepakoT
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.