Как стать автором
Обновить
3085.1
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Кунг-фу стиля Linux: sudo и поворот двух ключей

Время на прочтение5 мин
Количество просмотров15K
Автор оригинала: Al Williams
Если вы работали в современных Linux-системах, включая большинство ОС для Raspberry Pi, то вы, возможно, знакомы с командой sudo. Обычно она позволяет авторизованному пользователю повышать свои полномочия до уровня суперпользователя и решать в таком режиме различные задачи, требующие соответствующих привилегий.

Правда, тут есть одна проблема. Если у вас есть sudo-доступ к системе, то это значит, что вы сможете сделать с ней всё что угодно — по крайней мере, всё, что вам позволено в файле sudoers. А как насчёт операций, ошибка при выполнении которых способна серьёзно нарушить работу системы? Все видели фильмы, в которых для запуска ядерной ракеты нужен одновременный поворот двух ключей, за которым следует нажатие на кнопку «Пуск». Есть ли нечто подобное в Linux?



В Linux есть похожий механизм, но это, на самом деле, не совсем «поворот двух ключей». Речь идёт о проекте sudo_pair, работой над которым занимается компания Square. Это — плагин для sudo, который даёт нам похожие возможности. А именно, речь идёт о том, что один пользователь запрашивает выполнение некоего действия, требующего повышенных привилегий, а другой пользователь авторизует запрос. Причём этот второй пользователь может не только одобрить выполнение операции, но и понаблюдать за тем, что происходит, и даже отменить операцию в том случае, если увидит, что происходит что-то неправильное.

Все переводы серии
Кунг-фу стиля Linux: удобная работа с файлами по SSH
Кунг-фу стиля Linux: мониторинг дисковой подсистемы
Кунг-фу стиля Linux: глобальный поиск и замена строк с помощью ripgrep
Кунг-фу стиля Linux: упрощение работы с awk
Кунг-фу стиля Linux: наблюдение за файловой системой
Кунг-фу стиля Linux: наблюдение за файлами
Кунг-фу стиля Linux: удобный доступ к справке при работе с bash
Кунг-фу стиля Linux: великая сила make
Кунг-фу стиля Linux: устранение неполадок в работе incron
Кунг-фу стиля Linux: расшаривание терминала в браузере
Кунг-фу стиля Linux: синхронизация настроек
Кунг-фу стиля Linux: бесплатный VPN по SSH
Кунг-фу стиля Linux: превращение веб-приложений в полноценные программы
Кунг-фу стиля Linux: утилита marker и меню для командной строки
Кунг-фу стиля Linux: sudo и поворот двух ключей
Кунг-фу стиля Linux: программное управление окнами
Кунг-фу стиля Linux: организация работы программ после выхода из системы
Кунг-фу стиля Linux: регулярные выражения
Кунг-фу стиля Linux: запуск команд
Кунг-фу стиля Linux: разбираемся с последовательными портами
Кунг-фу стиля Linux: базы данных — это файловые системы нового уровня
Кунг-фу стиля Linux: о повторении кое-каких событий сетевой истории
Кунг-фу стиля Linux: PDF для пингвинов

Команда sudo, на самом деле, устроена сложнее, чем полагает большинство Linux-пользователей. Если вы читали справку по ней, то вы знаете о том, что можно настроить её так, чтобы у неких пользователей или групп пользователей были бы права лишь на выполнение определённых операций. Причина того, что о возможностях настройки sudo знают немногие, заключается в том, что этими возможностями пользуются нечасто. Например, можно сделать так, чтобы некая программа всегда, запущенная любым пользователем (или любым пользователем из некоей группы), выполнялась бы с root-привилегиями. При этом всем пользователям необязательно давать полный доступ к другим возможностям системы. Это значит, что sudo-pair необязательно использовать для организации полного root-доступа к системе. Утилиту можно использовать для наблюдения за использованием особых, очень важных, приложений.

Легче всего разобраться в том, что происходит, можно, посмотрев на следующее анимированное изображение, на котором представлены экраны двух пользователей. Один запрашивает выполнение sudo-операции, а второй этот запрос одобряет (чтобы лучше всё увидеть — откройте изображение в отдельной вкладке).


Экраны двух пользователей, один из которых запрашивает выполнение операции, а второй — одобряет запрос

Это — очень гибкая система, но она пока находится в процессе разработки, поэтому перед её настройкой стоит почитать README. Скрипт следит за тем, чтобы пользователь не мог бы сам одобрять собственные sudo-запросы, он поддерживает и другие возможности. Это ведёт к известной проблеме курицы и яйца. Скрипт нужно защитить, но у пользователей обязательно должна быть возможность его выполнять. Система позволяет запускать скрипт в текущем сеансе без привлечения второго пользователя. Есть различные подходы к работе с пользователями, на которых не накладываются ограничения по работе с sudo. Например, от ограничений могут быть избавлены пользователи, входящие в группу дежурных администраторов. Кроме того, ограничения никогда не налагаются на пользователя root. Но при этом надо следить за тем, чтобы в системе было бы не слишком много пользователей с полным root-доступом к ней. Это, конечно, справедливо для тех случаев, когда речь идёт о системе, в которой такие ограничения оправданы.

Код sudo_pair написан на Rust, там пока нет никаких предустановок. Это подходит для случаев, когда есть некая рабочая среда, пользователи, имеющиеся в которой, заняты какими-то очень важными делами. Но полагаю, что для продакшн-использования этот проект пока не готов. В частности, как предупреждают разработчики проекта, неправильная настройка sudo может привести к невозможности входа в систему. Поэтому действуйте осторожно (и я надеюсь на то, что у вас есть свежая резервная копия ваших данных).

Если ваша система решает какие-то очень важные задачи, то вам необходимо в деталях разобраться с sudo и научиться настраивать эту команду с использованием или без использования sudo-pair. Можно ограничить выполнение неких операций на уровне отдельных пользователей или групп. Но почти ни у кого не должно быть полного root-доступа к системе. Это справедливо даже в том случае, если речь идёт о системе, основанной на Raspberry Pi, в которой вы — единственный пользователь. Если такая система управляет чем-то важным, то вам нужно сделать так, чтобы хакеру, который, возможно, её взломает, пришлось бы пробиться через несколько паролей для того чтобы получить над ней контроль. В подобной ситуации можно даже подумать о многофакторной аутентификации. Нечто похожее, хоть кому-то это и может показаться странным, можно сделать и для Arduino.

Приходилось ли вам настраивать sudo?

Все переводы серии
Кунг-фу стиля Linux: удобная работа с файлами по SSH
Кунг-фу стиля Linux: мониторинг дисковой подсистемы
Кунг-фу стиля Linux: глобальный поиск и замена строк с помощью ripgrep
Кунг-фу стиля Linux: упрощение работы с awk
Кунг-фу стиля Linux: наблюдение за файловой системой
Кунг-фу стиля Linux: наблюдение за файлами
Кунг-фу стиля Linux: удобный доступ к справке при работе с bash
Кунг-фу стиля Linux: великая сила make
Кунг-фу стиля Linux: устранение неполадок в работе incron
Кунг-фу стиля Linux: расшаривание терминала в браузере
Кунг-фу стиля Linux: синхронизация настроек
Кунг-фу стиля Linux: бесплатный VPN по SSH
Кунг-фу стиля Linux: превращение веб-приложений в полноценные программы
Кунг-фу стиля Linux: утилита marker и меню для командной строки
Кунг-фу стиля Linux: sudo и поворот двух ключей
Кунг-фу стиля Linux: программное управление окнами
Кунг-фу стиля Linux: организация работы программ после выхода из системы
Кунг-фу стиля Linux: регулярные выражения
Кунг-фу стиля Linux: запуск команд
Кунг-фу стиля Linux: разбираемся с последовательными портами
Кунг-фу стиля Linux: базы данных — это файловые системы нового уровня
Кунг-фу стиля Linux: о повторении кое-каких событий сетевой истории
Кунг-фу стиля Linux: PDF для пингвинов



Теги:
Хабы:
Всего голосов 32: ↑32 и ↓0+32
Комментарии9

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds