Что adduser делает это, useradd не делает?

ldd показывает только соединение зависимостей, то есть, это не показывает то, что может потребоваться, чтобы на самом деле запускать программу успешно, что требуется запустить программу вообще.

Необходимо сделать разрешение зависимости через диспетчер пакетов.

73
13.04.2017, 15:22
4 ответа
[112615] Прежде всего, соответствующие фрагменты man-страницы выделяют различия между двумя командами и дают некоторое представление о том, что происходит. Для [113157]adduser[113158]:[12323]adduser и addgroup добавляют пользователей и группы в систему в соответствии с опциями командной строки и информацией о конфигурации в файле /etc/adduser.conf. Они более дружелюбны к инструменты низкого уровня, такие как useradd, groupadd и usermod, по умолчанию выбирают UID и GID, соответствующие политике Debian, создают домашний каталог со скелетной конфигурацией, запускают пользовательский сценарий и другие возможности.[12324]Тогда для [113161]useradd[113162]:[12325]useradd - это низкоуровневая утилита для добавления пользователей. В Debian администраторы обычно должны использовать adduser(8) вместо него.[12326]Дальнейшее изучение [113165]adduser[113166] показало, что это perl-скрипт, предоставляющий высокоуровневый интерфейс и, таким образом, предлагающий некоторые функциональные возможности следующих команд:[12327]useradd[12328]groupadd[12329]passwd[113473] - используемых для добавления/изменения паролей пользователей. [12330]gpasswd[113475] - используется для добавления/изменения паролей групп.[12331]usermod[113477] - используется для изменения различных параметров, связанных с пользователем.[12332]chfn[113479] - используется для добавления/изменения дополнительной информации о пользователе.[12333]chage[113481] - используется для изменения информации об истечении срока действия пароля.[12334]edquota[113483] - используется для изменения квот использования диска. [12335]основной запуск команды [113183]adduser[113184] следующий:[12336]Эта простая команда сделает несколько вещей:[12337]Создайте пользователя с именем [113484]username[113485].[12338]Создайте домашний каталог пользователя (по умолчанию [113486]/home/username[113487] и скопируйте в него файлы из [113488]/etc/skel[113489]. [12339]Создайте группу с тем же именем, что и пользователь, и поместите пользователя в нее.[12340]Запрос пароля пользователя.[12341]Запрос дополнительной информации о пользователе.[12342]Программа [113195]useradd[113196] может выполнить большую часть этой задачи, однако она не делает этого по умолчанию и нуждается в дополнительных опциях. Некоторая информация требует дополнительных команд:[12343]Обратите внимание, что [113197]adduser[113198] гарантирует, что созданные UID и GID соответствуют [113199]политике Debian[113200]. Создание обычных пользователей с помощью [113201]useradd[113202] кажется нормальным, при условии, что [113203]UID_MIN[113204]/[113205]UID_MAX[113206] в [113207]/etc/login.defs[113208] соответствует политике Debian. Однако, проблема заключается в том, что Debian указывает определенный диапазон UID пользователей системы, который, кажется, поддерживается только в [113209]/etc/adduser.conf[113210], поэтому наивное добавление пользователя системы с помощью [113211]useradd[113212] и не указание UID/GUID в правильном диапазоне оставляет возможность возникновения серьёзных проблем.[12344]Другое распространённое использование для [113213]adduser[113214] - это упрощение процесса добавления пользователя в группу. Здесь следующая команда:[12345]заменяет более сложную [113215]usermod[113216] команду, которая требует, чтобы группы, в которых пользователь уже является членом (и которые вы бы хотели, чтобы пользователь оставался членом) были указаны:[12346]Одним из недостатков использования [113217]adduser[113218] здесь является то, что вы можете указывать только одну группу за раз.[112642].
81
27.01.2020, 19:31

Команда adduser по умолчанию также создает каталог /home/user для системных пользователей, чего нельзя сделать с помощью команды useradd. useradd добавляет домашние каталоги только для обычных пользователей, но не для системных.

2
27.01.2020, 19:31

Системный администратор может делать с useradd все, что можно сделать с adduser. Здесь было указано, что вы не можете создать каталог /home/user для системных пользователей с помощью useradd, и вы абсолютно можете это сделать, изменив файлы, содержащиеся в /etc/skel. /etc/skel содержит набор файлов, первоначально использовавшихся для заполнения домашнего каталога нового пользователя.

1
27.01.2020, 19:31

Одно существенное различие, с которым я столкнулся (и не увидел в ответе здесь ), заключается в последствиях создания системного пользователя .

useradd --system, кажется, подразумевает --shell /bin/bash, а adduser --systemподразумевает --shell /usr/sbin/nologin, что я и хотел.

Так что, если мне не нужна ни оболочка, ни домашний каталог, я могу использовать useradd вот так

useradd --system --shell /usr/sbin/nologin foo

Что приводит, например, к. следующая запись в/etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

Или используйте adduser вот так

adduser --system --no-create-home foo

Что приводит, например, к. следующая запись в/etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

Кроме того, adduserне создает группу (пользователь 110 находится в группе 65534, она же нет группы). В принятом ответе также упоминаются риски, связанные с (G )UID, поэтому я определенно буду придерживаться adduser .

Источник :Протестировано на ОС Raspberry Pi (Основан на Debian Buster ).

3
06.11.2020, 21:14

Теги

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