Если вы работали в современных Linux-системах, включая большинство ОС для Raspberry Pi, то вы, возможно, знакомы с командой
Правда, тут есть одна проблема. Если у вас есть sudo-доступ к системе, то это значит, что вы сможете сделать с ней всё что угодно — по крайней мере, всё, что вам позволено в файле
![](https://habrastorage.org/r/w780q1/webt/-m/bo/gi/-mbogielinkquwyxgyneys-mzwi.jpeg)
В Linux есть похожий механизм, но это, на самом деле, не совсем «поворот двух ключей». Речь идёт о проекте sudo_pair, работой над которым занимается компания Square. Это — плагин для
Команда
Легче всего разобраться в том, что происходит, можно, посмотрев на следующее анимированное изображение, на котором представлены экраны двух пользователей. Один запрашивает выполнение sudo-операции, а второй этот запрос одобряет (чтобы лучше всё увидеть — откройте изображение в отдельной вкладке).
![](https://hackaday.com/wp-content/uploads/2018/05/demo.gif)
Экраны двух пользователей, один из которых запрашивает выполнение операции, а второй — одобряет запрос
Это — очень гибкая система, но она пока находится в процессе разработки, поэтому перед её настройкой стоит почитать
Код sudo_pair написан на Rust, там пока нет никаких предустановок. Это подходит для случаев, когда есть некая рабочая среда, пользователи, имеющиеся в которой, заняты какими-то очень важными делами. Но полагаю, что для продакшн-использования этот проект пока не готов. В частности, как предупреждают разработчики проекта, неправильная настройка sudo может привести к невозможности входа в систему. Поэтому действуйте осторожно (и я надеюсь на то, что у вас есть свежая резервная копия ваших данных).
Если ваша система решает какие-то очень важные задачи, то вам необходимо в деталях разобраться с
Приходилось ли вам настраивать sudo?
![](https://habrastorage.org/r/w1560/webt/8x/zq/bh/8xzqbhb0at3_pjylb5c4366w_t8.png)
![](https://habrastorage.org/r/w1560/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
sudo
. Обычно она позволяет авторизованному пользователю повышать свои полномочия до уровня суперпользователя и решать в таком режиме различные задачи, требующие соответствующих привилегий.Правда, тут есть одна проблема. Если у вас есть sudo-доступ к системе, то это значит, что вы сможете сделать с ней всё что угодно — по крайней мере, всё, что вам позволено в файле
sudoers
. А как насчёт операций, ошибка при выполнении которых способна серьёзно нарушить работу системы? Все видели фильмы, в которых для запуска ядерной ракеты нужен одновременный поворот двух ключей, за которым следует нажатие на кнопку «Пуск». Есть ли нечто подобное в Linux?![](https://habrastorage.org/webt/-m/bo/gi/-mbogielinkquwyxgyneys-mzwi.jpeg)
В 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 для пингвинов
Кунг-фу стиля 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-операции, а второй этот запрос одобряет (чтобы лучше всё увидеть — откройте изображение в отдельной вкладке).
![](https://hackaday.com/wp-content/uploads/2018/05/demo.gif)
Экраны двух пользователей, один из которых запрашивает выполнение операции, а второй — одобряет запрос
Это — очень гибкая система, но она пока находится в процессе разработки, поэтому перед её настройкой стоит почитать
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 для пингвинов
Кунг-фу стиля 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 для пингвинов
![](https://habrastorage.org/webt/8x/zq/bh/8xzqbhb0at3_pjylb5c4366w_t8.png)
![](https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)