Насколько универсальный sudo?

Как adduser сценарий просто звонит passwd и нет таких строк как Enter new password или Enter new UNIX password в /usr/sbin/passwd двоичная но более поздняя строка найдена в /lib/security/pam_unix.so, Я рекомендовал бы проверить /etc/nsswitch.conf и /etc/pam.d/* поскольку что-то необычное имело отношение к паролям.

27
19.09.2012, 03:04
4 ответа

sudo не может считаться универсальным:

  • Red Hat Enterprise Linux: sudo установлен по умолчанию на Red Hat Enterprise Linux и его производные, 1, но он только устанавливает готовый к использованию в RHEL 7 и более новый.

    Red Hat Enterprise Linux 7 добавил новую опцию к экрану установки, где Вы создаете первого некорневого пользователя, флажок маркировал "Make this user administrator". Его цель не документируется на той странице инструкции по установке, но один из его эффектов состоит в том, чтобы позволить тому пользователю прокручивать любую команду sudo. Это делает так путем добавления того пользователя к wheel группа, которая может выполнить любую команду под запасом sudo конфигурация пакета.

    Red Hat Enterprise Linux 3 through 6 также установлен sudo по умолчанию 2, но пока RHEL 7, который это поставило, не настроил таким образом что только root мог выполнить команды через него. Самый легкий способ зафиксировать это состоит в том, чтобы добавить одного или несколько пользователей к wheel группа, затем выполненная visudo как базируются и не комментируют %wheel ALL=(ALL)... строка.

  • Debian: С Debian 9 минимальная установка включает sudo.

    В Debian 7 и 8, необходимо было выбрать "Стандартный системный набор пакета" утилит во время установки для получения sudo. Если Вы устанавливаете sudo тем путем установщик ОС автоматически добавит неадминистративного пользователя, которого Вы создали ранее в процессе установки к sudo группа, которая имеет разрешение выполнить все команды.

    В Debian 6 и ранее, необходимо было установить sudo через apt-get после установки и настраивают его вручную, чтобы предоставить некорневым пользователям способность использовать его.

  • FreeBSD: sudo не установлен по умолчанию в FreeBSD. Необходимо создать его из Портов.

  • NetBSD: то же как FreeBSD.

  • OpenBSD: sudo используемый, чтобы быть установленными по умолчанию в OpenBSD, но они переключились на doas с 5,8, выпущенный в октябре 2015. doas поставки отключены по умолчанию.

    Добираться sudo в текущих версиях необходимо установить его от хранилища пакетов. OpenBSD sudo пакет настроен во многом как в RHEL 3 through 6, так, чтобы только root может выполнить команды через него, который скорее побеждает цель sudo. Если Вы добавили не -root пользователь во время установки, это было добавлено к wheel группа, таким образом, самый простой способ сделать sudo полезный в системе OpenBSD должен не прокомментировать %wheel ALL=(ALL)... строка через visudo.

  • Солярис: sudo установлен по умолчанию в Солярисе 11, но Солярисе 10 и более старое использование similar-but-not-quite-the-same pfexec.

    Можно добраться sudo для более старых систем, но вопроса значений по умолчанию. Солярис 10 и более старый будет с нами в течение многих лет, поэтому если у Вас будет Солярис в Вашей среде, и Вы лично не контролируете те системы и, удостоверяются - также sudo есть ли, Вы не можете рассчитывать на него.

Чем более старый система, тем больше шанс она не имеет sudo. Хотя sudo очень старо, это не начинало становиться популярным до середины 2000-х. Системы, более старые, чем это, очень вряд ли будут иметь sudo. Поля Unix имеют тенденцию жить долгое время, таким образом, весьма возможно, что Вы все еще натыкались бы на такую систему сегодня.

Я только рассчитываю sudo в системах я лично справляюсь, или как Ubuntu, macOS, или openSuSE, где это - единственный способ получить права пользователя root по умолчанию.

su ближе к универсальному, "получают меня команда" полномочий суперпользователя, чем sudo, но затем у Вас есть системы как Ubuntu и macOS, где корневая учетная запись заблокирована по умолчанию конкретно, чтобы вынудить Вас использовать sudo вместо su. Так, Вы не можете звонить su универсальный, также.


Сноски:

  1. CentOS, Oracle Linux, научный Linux...

  2. Да, даже в минимальных установках.

35
27.01.2020, 19:39

sudo утилита, которая доступна почти во всех Системах Linux.
Однако это не связывается по умолчанию во всех дистрибутивах. Всем главным дистрибутивам связали его по умолчанию все же.

Дистрибутивы Linux как Дуга Linux, хинду, LFS, и т.д. которые позволяют пользователю полную настраиваемость, не имеют sudo по умолчанию.

На Дуге Linux основная система не идет sudo установленный. Пользователь должен вручную загрузить sudo и отредактируйте sudoers файл.
Так же для хинду и LFS. Я не знаю ни о каком другом главном дистрибутиве без sudo.

И не, я не думаю, там существует что-либо, что более универсально, чем sudo в предоставлении полномочий суперпользователя. Таким образом, кроме фактического входа в систему как корень.

9
27.01.2020, 19:39
  • 1
    sudo мог бы быть связан на большинстве дистрибутивов, но не все они настраивают каждого пользователя как способного к выполнению его. –  jsbillings 18.09.2012, 18:23
  • 2
    Другая положительная сторона. Зависит от того, что говорит sudoers файл. –  darnir 18.09.2012, 18:25

Наиболее широко используемое распределение, Ubuntu, использование sudo как рекомендуемый метод для становления корнем (при использовании командной строки — пользователи, которые придерживаются GUI, получат подсказку пароля, не понимая или заботясь о том, что происходит под капотом). Другие дистрибутивы могут или не могут поощрить иметь настроенный sudo, и можете, или даже может не поставить его. С другой стороны, su доступно везде и применим в большинстве систем кроме тех где только sudo доступно, потому что у пользователя не будет пароля root.

Между su и sudo, Вы покроете почти всех своих пользователей. Экзотическое немногие, кому нужно calife или op или pfexec знайте, что уже сделать. Даже если они не делают, система, которая не использует ни одного su ни sudo вероятно, будет иметь файлы в незнакомых местах и достаточном количестве вещей, Вы не думали об этом, Ваши инструкции, вероятно, не будут работать так или иначе.

7
27.01.2020, 19:39

Отвечать на Ваш вопрос, наиболее точно, нет sudo не считается универсальным. Правдиво все понятие 'универсальных', часто отвлекающий маневр. Это особенно верно относительно совместимости перекрестного дистрибутива. Однажды Ваш бросок во множестве отличающихся версий программного обеспечения, универсальность становится полунереалистичной. Сценарии по своей природе прагматичны, если бы это было педантично, пишущий, что портативные сценарии были бы практически невозможны.

Обычно я измеряю свою намеченную среду выполнения, полусовременный дистрибутив Linux, я ожидаю оболочку POSIX с общим GNU Utils. Для сценариев, которые могли работать за пределами Linux, я только ожидаю полный стандарт POSIX. Очевидно, много сценариев характерны для Linux или характерны для дистрибутива, так, чтобы часто сузил объем мобильности.

Обратиться к Вашему определенному случаю сценариев,

#!/bin/sh


## Exit Point
die() {
    [ -n "$2" ] && echo "$2"
    exit $1
}


## Require SuperUser Execution, Otherwise Re-Execute
[ `id -u` -ne 0 ] && {

    command -v lsb_release > /dev/null && {
        DISTRO="`lsb_release -is`"
        [ "$DISTRO" = "Ubuntu" ] && SUPERUSER='sudo'
    }
    SUPERUSER="${SUPERUSER:-su}"

    case "$SUPERUSER" in
        su)
            su -c "$0"
            ;;
        sudo)
            sudo "$0"
            ;;
    esac
}

## Require SuperUser Execution
[ `id -u` -ne 0 ] && die 78




echo 'Script Executed by UID'
id -u




## Clean Up
die 0

тот вставляемый сценарий является комплиментом оболочки POSIX, я всегда пишу совместимого Тире.

6
27.01.2020, 19:39
  • 1
    Но разве Ваш сценарий не требует этого, sudo установлены? Есть ли какой-либо способ, которым мы можем получить доступ суперпользователя без использования sudo? Через простые сценарии? –  darnir 18.09.2012, 19:54
  • 2
    @darnir: Нет, вставляемый сценарий не требует sudo быть установленным. Это требует казни суперпользователя и может использовать sudo если это доступно. Если sudo не доступно, затем скрипт должен быть запущен как пользователь root, или он будет die. –  J. M. Becker 18.09.2012, 19:58
  • 3
    @darnir: Дополнительно действительно нет ничего позвонившего, "простые сценарии". Почти все, исключая созданную-ins оболочку, сделано через регулярные двоичные файлы. Это - смысл оболочки, для вызова других команд, или интерактивный или автоматизированный. Именно эта характеристика определения, разделяет оболочку от языков программирования общего назначения. Таким образом независимо от того, как Вы получаете суперпользователя, Ваше выполнение его посредством внешних команд..., принимая Ваш не кодирование с необработанными интерфейсами ядра. Интересный –  J. M. Becker 18.09.2012, 20:14
  • 4
    @varesa: Интересно Ubuntu является полной противоположностью на sudo/su конфигурациях по умолчанию. Можно проверить, какие sudo полномочия пользователь имеет в наличии путем выполнения sudo -l. К сожалению, это неприменимо в этой ситуации, поскольку это может потребовать ввода пароля. Думая об этом более тщательно, я на самом деле думаю, что целое понятие могло бы быть лучше всего достигнуто через на тест дистрибутива. Используя su -c если выполнение a su значение по умолчанию отключило дистрибутив, в этом случае с помощью sudo su -c. Как другие упомянули, лучше оставлять повышение суперпользователя пользователю, я рассмотрел бы любой документ на получение - вокруг удобства. –  J. M. Becker 30.09.2012, 20:17
  • 5
    @varesa: я обновил вставляемый сценарий, для сокращения шанса использования ненастроенного sudo. Это должно выполниться правильно в большей части дистрибутива, приняв значение по умолчанию su/sudo конфигурации. Я действительно знаю устаревшую Ubuntu, пред lsb_release, должен был бы быть обращен... Но это действительно - просто пример и могло, очевидно, быть расширено. –  J. M. Becker 30.09.2012, 21:00

Теги

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