Как adduser
сценарий просто звонит passwd
и нет таких строк как Enter new password
или Enter new UNIX password
в /usr/sbin/passwd
двоичная но более поздняя строка найдена в /lib/security/pam_unix.so
, Я рекомендовал бы проверить /etc/nsswitch.conf
и /etc/pam.d/*
поскольку что-то необычное имело отношение к паролям.
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
универсальный, также.
Сноски:
CentOS, Oracle Linux, научный Linux...
Да, даже в минимальных установках.
sudo
утилита, которая доступна почти во всех Системах Linux.
Однако это не связывается по умолчанию во всех дистрибутивах. Всем главным дистрибутивам связали его по умолчанию все же.
Дистрибутивы Linux как Дуга Linux, хинду, LFS, и т.д. которые позволяют пользователю полную настраиваемость, не имеют sudo по умолчанию.
На Дуге Linux основная система не идет sudo
установленный. Пользователь должен вручную загрузить sudo
и отредактируйте sudoers файл.
Так же для хинду и LFS. Я не знаю ни о каком другом главном дистрибутиве без sudo.
И не, я не думаю, там существует что-либо, что более универсально, чем sudo
в предоставлении полномочий суперпользователя. Таким образом, кроме фактического входа в систему как корень.
sudo
мог бы быть связан на большинстве дистрибутивов, но не все они настраивают каждого пользователя как способного к выполнению его.
– jsbillings
18.09.2012, 18:23
Наиболее широко используемое распределение, Ubuntu, использование sudo
как рекомендуемый метод для становления корнем (при использовании командной строки — пользователи, которые придерживаются GUI, получат подсказку пароля, не понимая или заботясь о том, что происходит под капотом). Другие дистрибутивы могут или не могут поощрить иметь настроенный sudo, и можете, или даже может не поставить его. С другой стороны, su
доступно везде и применим в большинстве систем кроме тех где только sudo
доступно, потому что у пользователя не будет пароля root.
Между su
и sudo
, Вы покроете почти всех своих пользователей. Экзотическое немногие, кому нужно calife
или op
или pfexec
знайте, что уже сделать. Даже если они не делают, система, которая не использует ни одного su
ни sudo
вероятно, будет иметь файлы в незнакомых местах и достаточном количестве вещей, Вы не думали об этом, Ваши инструкции, вероятно, не будут работать так или иначе.
Отвечать на Ваш вопрос, наиболее точно, нет 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, я всегда пишу совместимого Тире.
sudo
быть установленным. Это требует казни суперпользователя и может использовать sudo
если это доступно. Если sudo
не доступно, затем скрипт должен быть запущен как пользователь root, или он будет die
.
– J. M. Becker
18.09.2012, 19:58
sudo -l
. К сожалению, это неприменимо в этой ситуации, поскольку это может потребовать ввода пароля. Думая об этом более тщательно, я на самом деле думаю, что целое понятие могло бы быть лучше всего достигнуто через на тест дистрибутива. Используя su -c
если выполнение a su
значение по умолчанию отключило дистрибутив, в этом случае с помощью sudo su -c
. Как другие упомянули, лучше оставлять повышение суперпользователя пользователю, я рассмотрел бы любой документ на получение - вокруг удобства.
– J. M. Becker
30.09.2012, 20:17
sudo
. Это должно выполниться правильно в большей части дистрибутива, приняв значение по умолчанию su
/sudo
конфигурации. Я действительно знаю устаревшую Ubuntu, пред lsb_release
, должен был бы быть обращен... Но это действительно - просто пример и могло, очевидно, быть расширено.
– J. M. Becker
30.09.2012, 21:00