По умолчанию SSHFS разрешает символические ссылки локально, и вместо этого требуется опция follow_symlinks
, чтобы разрешать ссылки в системе удаления. Удаление его из параметров монтирования должно быть достаточно.
Я здесь, чтобы представить свое неуклюжее решение. Я использую zsh, и это виджет zsh (плагин командной строки ).
Если текущим каталогом является sudoders.d
или в командной строке содержится sudoers
, zsh выдаст предупреждение, если только команда не является "cd" или "visudo".
Код охватывает варианты vim, nano, cp, rm, cat >.
Я полагаю, что вы можете сделать его лучше, но это основная идея.
#! /usr/bin/zsh
function catchEditSudoers {
if ([[ $BUFFER =~.*sudoers.* ]] && [[ ! $BUFFER =~.*visudo.* ]] && [[ ! $BUFFER =~ "cd.*" ]]) ||
([[ $PWD =~ ".*/sudoers.d" ]] && [[ ! $BUFFER =~.*visudo.* ]] && [[ ! $BUFFER =~ "cd.*" ]]); then
zle -R "It's recommanded to use visudo to edit sudoers. Continue anyway? (y/n)"
read -k reply
if [[ $reply == y ]]; then
zle accept-line
else
zle send-break
fi
else
zle accept-line
fi
}
zle -N catchEditSudoers_widget catchEditSudoers
bindkey '^M' catchEditSudoers_widget
Источник файла в вашем.zshrc.
Примечание. :Я бы не стал делать следующее. Это небезопасно, а также есть достаточно других возможностей разрушить вашу систему. Почему именно этот?
С большими sudo
правами приходит и большая ответственность.
Однако, чтобы даже root
не редактировал файл sudoers
, вы можете сделать его неизменяемым, запустив:
sudo chattr +i /etc/sudoers
Затем добавьте следующие псевдонимы в ваш файл .rc
или .profile
, например..bashrc
:
alias visudo="sudo chattr -i /etc/sudoers; sudo visudo; sudo chattr +i /etc/sudoers;"
alias sudo='sudo '
Он изменит команду visudo
на сброс неизменяемого флага, затем запустит visudo
, в конце повторит immutable
. См. здесь , зачем нам нужен второй псевдоним.
После выделения файла или перезапуска оболочки вы можете использовать sudo visudo
как обычно, но не редактировать его иначе.
Это всего лишь общая идея, ее необходимо улучшить, чтобы включить другие аргументы visudo
и файлы ниже /etc/sudoers.d/
. Вместо псевдонима вы также можете использовать функцию или скрипт.
Заметьте, это не совсем безопасно:
visudo
работаете, файл не является неизменным sudo
пользователь может запустить chattr -i
, чтобы снять неизменяемый флаг в любое время