sudo
не может считаться универсальным:
Red Hat Enterprise Linux : sudo
по умолчанию устанавливается в Red Hat Enterprise Linux и его производных 1, но он устанавливается только в RHEL 7 и более новых версиях, готовых к использованию.
Red Hat Enterprise Linux 7 добавила новую опцию на экран установки, где вы создаете первого пользователя без полномочий root , флажок «Сделать этого пользователя администратором». Его назначение не задокументировано на этой странице руководства по установке, но один из его эффектов - позволить этому пользователю выполнить любую команду sudo
. Это делается путем добавления этого пользователя в wheel
группу, которая может выполнить любую команду в стандартной sudo
конфигурации пакета.
Red Hat Enterprise Linux с 3 по 6 также установлен sudo
по умолчанию 2, но до RHEL 7 он поставлялся настроенным так, что root
через него могли запускаться только команды. Самый простой способ исправить это - добавить одного или нескольких пользователей в wheel
группу, затем запустить visudo
от имени пользователя root и раскомментировать %wheel ALL=(ALL)...
строку.
Debian : Начиная с Debian 9, минимальная установка включает sudo
.
В Debian 7 и 8 вам нужно было выбрать пакет « Стандартные системные утилиты » во время установки, чтобы получить его sudo
. Если вы установите sudo
этот способ, установщик ОС автоматически добавит неадминистративного пользователя, которого вы создали ранее в процессе установки, в sudo
группу, у которой есть разрешение на выполнение всех команд.
В Debian 6 и более ранних версиях вам приходилось устанавливать с sudo
помощью via apt-get
после установки и настраивать его вручную, чтобы предоставить пользователям без полномочий root возможность использовать его.
FreeBSD : sudo
не устанавливается по умолчанию во FreeBSD. Вы должны построить его из портов.
NetBSD : то же, что и FreeBSD.
OpenBSD : sudo
используется для установки по умолчанию в OpenBSD, но они перешли к doas
состоянию на 5.8, выпущенный в октябре 2015 года . doas
корабли отключены по умолчанию.
Чтобы получить sudo
текущие версии, вы должны установить его из репозитория пакетов. sudo
Пакет OpenBSD настроен так же, как в RHEL 3–6, так что только root
через него можно запускать команды, что скорее противоречит цели sudo
. Если вы добавили не root
пользователя во время установки, он был добавлен в wheel
группу, поэтому самый простой способ сделать его sudo
полезным в системе OpenBSD - это раскомментировать %wheel ALL=(ALL)...
строку через visudo
.
Solaris : sudo
по умолчанию устанавливается в Solaris 11, но Solaris 10 и более ранние версии используют аналогичное, но не совсем то же самое pfexec
.
Вы можете получить sudo
для старых систем, но значения по умолчанию. Solaris 10 и старше будет с нами долгие годы, поэтому, если в вашей среде есть Solaris, и вы лично не контролируете эти системы и можете быть уверены sudo
, что вы есть, вы не можете на это рассчитывать.
Чем старше система, тем больше у нее шансов sudo
. Хотя sudo
он очень старый , он не стал популярным до середины 2000-х годов. Системы более старые, чем это, вряд ли будут иметь sudo
. Unix-боксы, как правило, живут долго, поэтому не исключено, что вы все равно столкнетесь с такой системой сегодня.
Я рассчитываю только sudo
на системы, которыми лично управляю, или на такие, как Ubuntu, macOS или openSuSE, где по умолчанию это единственный способ получить привилегии root.
su
ближе к универсальной команде «get me superuser привилегии», чем sudo
, но тогда у вас есть системы, такие как Ubuntu и macOS, где корневая учетная запись по умолчанию заблокирована специально, чтобы заставить вас использовать sudo
вместо su
. Таким образом, вы также не можете назвать su
универсальным.
Сноски :
CentOS, Oracle Linux, Научный Linux ...
Да, даже в минимальной установке.
sudo
может поставляться в большинстве дистрибутивов, но не все из них настраивают каждого пользователя как способного его запустить.Наиболее широко используемый дистрибутив, Ubuntu, использует
sudo
в качестве рекомендуемого метода для получения прав root (при использовании командной строки - пользователи, которые придерживаются GUI, получат запрос пароля, не понимая и не заботясь о том, что происходит под капотом). Другие дистрибутивы могут или не могут поощрять настройку sudo и могут даже не отправлять его. С другой стороны,su
доступно везде и может использоваться на большинстве систем, кроме тех, гдеsudo
доступно только потому, что у пользователя не будет пароля root.Между
su
иsudo
вы покроете почти всех ваших пользователей. Немного экзотики, которым нужноcalife
илиop
или которые ужеpfexec
знают, что делать. Даже если они этого не делают, система, которая не использует ни,su
ниsudo
вероятно, будет иметь файлы в незнакомых местах и достаточно вещей, о которых вы даже не думали, что ваши инструкции, вероятно, все равно не будут работать.источник
Чтобы ответить на ваш вопрос, наиболее точно,
sudo
не считается универсальным. По правде говоря, все понятие «универсальный» часто представляет собой красную сельдь. Это особенно верно в отношении кросс-дистрибутивной совместимости. Как только вы добавите множество различных версий программного обеспечения, универсальность станет полуреалистичной. Сценарии по своей природе прагматичны, если бы они были педантичными, написание переносимых сценариев было бы практически невозможно.Обычно я измеряю свою предполагаемую среду исполнения, полу-современный дистрибутив Linux, ожидаю POSIX-оболочку с обычными утилитами GNU. Для сценариев, которые могут работать за пределами Linux, я ожидаю только полного стандарта POSIX. Очевидно, что многие скрипты специфичны для Linux или дистрибутива, поэтому часто сужают область переносимости.
Чтобы рассмотреть ваш конкретный сценарий,
этот вставленный скрипт является комплиментом оболочки POSIX, я всегда пишу Dash-совместимый.
источник
sudo
установки. Это требует суперпользовательского исполнения и может использовать,sudo
если оно доступно. Еслиsudo
недоступно, скрипт должен быть запущен от имени пользователя root, иначе он будет запущенdie
.sudo -l
. К сожалению, в этой ситуации он непригоден, так как может потребовать ввода пароля. Подумав об этом более тщательно, я на самом деле думаю, что всю концепцию лучше всего достичь с помощью тестирования на дистрибутиве. Использование,su -c
если не запущенsu
дистрибутив по умолчанию, в этом случае используетсяsudo su -c
. Как уже упоминали другие, лучше всего оставить повышение прав суперпользователя для пользователя, я бы посчитал, что любой сценарий вокруг удобен.sudo
. Это должно выполняться правильно в большинстве дистрибутивов, при условии, что по умолчаниюsu
/sudo
конфигурации. Я знаю, что устаревшую Ubuntu, prelsb_release
, нужно будет решить ... Но это действительно просто пример, и его, очевидно, можно расширить.