Как уменьшить вероятность редактирования sudoers другими редакторами?

По умолчанию SSHFS разрешает символические ссылки локально, и вместо этого требуется опция follow_symlinks, чтобы разрешать ссылки в системе удаления. Удаление его из параметров монтирования должно быть достаточно.

0
05.05.2021, 11:56
2 ответа

Я здесь, чтобы представить свое неуклюжее решение. Я использую 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.

0
28.07.2021, 11:34

Примечание. :Я бы не стал делать следующее. Это небезопасно, а также есть достаточно других возможностей разрушить вашу систему. Почему именно этот?

С большими 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, чтобы снять неизменяемый флаг в любое время
  • вы приучаете себя не думать, прежде чем что-то делать
3
28.07.2021, 11:34

Теги

Похожие вопросы