Что такое стандартная программа (ы) CLI для управления пользователями и группами?


8

Я в основном спрашиваю об управлении пользователями из командной строки (например, в системе, где нет доступных графических инструментов). В прошлом я использовал несколько различных программ для добавления или удаления пользователей и групп или изменять их атрибуты: adduser, useradd, usermod, gpasswd, и , возможно , другие я забыл. Я также слышал пару раз, что некоторые из этих программ являются низкоуровневыми и их следует избегать для общего использования, но я никогда не могу вспомнить, какие именно. Поэтому я хотел бы получить четкий ответ, для каких программ рекомендуются хотя бы следующие задачи:

  • Создать нового пользователя
  • Добавить пользователя в группу
  • Удалить пользователя из группы
  • Изменить основную группу пользователя
  • Изменить пользовательскую оболочку входа или домашний каталог
  • Удалить пользователя

Я ищу стандартные инструменты, которые, как я ожидаю, будут доступны практически в любой системе Linux (любого дистрибутива).


1
также groupmod. Я не собираюсь делать это ответом ... но самый стандартный способ - это, вероятно, использовать ваш текстовый редактор ... помните, что затронутые файлы - это просто текст с разделителями.
ксенотеррацид

Интересно, что до того, как задать этот вопрос, я никогда не видел столько упоминаний о прямом редактировании файлов. (Каким-то образом у меня сложилось впечатление, что /etc/passwdэто всего лишь одна часть сложной системы)
Дэвид З

Ответы:


9

К сожалению, ни одна из этих операций не была стандартизирована.

Некоторые операционные системы предлагают эту функциональность как часть ОС, например, Linux, но даже если ваша система Linux включает их, со временем и во всех дистрибутивах Linux инструменты и их имена меняются, так что вы не можете зависеть от стандартного набора инструментов, который нужно делать эти задачи.

Вы должны иметь набор инструментов для каждой операционной системы.


У меня никогда не было смены имен ... но у меня были смены переключателей. Я помню, как однажды узнал, что в Linux не было gpasswd -a.
ксенотеррацид

1
Если память служит - RedHat однажды использовал 'adduser' вместо 'useradd', и он вел себя по-другому (я думаю, что useradd был более Debianish). Позже они сделали «adduser» символической ссылкой на «useradd». См. Некоторые старые ссылки на redhat.com/docs/manuals/linux/RHL-5.2-Manual/install-guide/…
Стефан Ласевский

7

На Debian (и производных) системах, adduserи deluserявляются высокоуровневыми оболочками вокруг useraddи связанной с ними функциональностью. Создание обложки, добавление и вычитание членства в группах и удаление пользователей. Соответствующие команды создания / удаления групп, достаточно разумно, addgroupи delgroup. usermodпоявляется, чтобы охватить оставшийся вариант использования, который вы назвали.


6

Вы упоминаете Linux в последней части вашего вопроса, но поскольку название носит общий характер, я отвечу за FreeBSD.

FreeBSD имеет команды, аналогичные Linux, но они передаются pwутилите:

pw useradd [user|uid] ...
pw usermod [user|uid] ...

и так далее. Тем не менее, можно разбить команду на две части: userи mod; существительное и глагол. Кроме того, можно также использовать groupи del:

pw groupdel [group|gid] ...

например, удалить группу. Итак, вот что я считаю действительно классным: порядок не имеет значения, а также интервал! Это означает, что вы можете вспомнить, как звонить, думая о том, что вы хотите сделать (в любом случае на английском языке):

pw del user [user|uid] ...
pw mod group [group|gid] ...
pw show user [user|uid] ...
pw next user [user|uid] ...

и более! pwУтилита также позволяет блокировать и разблокировать счета:

pw lock [user|uid] ...
pw unlock [user|uid] ...

Все параметры и передаваемые вами параметры стандартизированы (хотя не всегда применяются к командам вызова), поэтому запоминание сведено к минимуму. В целом, хороший способ делать вещи.

Примечание: эллипсы в приведенных выше примерах представляют опции и параметры, передаваемые pwне дополнительным пользователям или группам.


Это был вопрос Linux, но информация все равно ценится. Было бы здорово, если бы в Linux было что-то подобное.
Дэвид З,

Вы имеете в виду существительное и глагол.
Уоррен Янг

D'о! Починил это.
gvkv

2

Просто для полноты, в низкоуровневом конце спектра я бы упомянул vipw (8) и vigr (8), чуть выше «vi / etc / passwd» и «cat> / etc / passwd», но прямо под «useradd». ». Да, и они существуют в большинстве вариантов Unix.


2

Все эти инструменты созданы для редактирования текстовых файлов. Если вы хотите знать, как управлять пользователями и группами в системах, вам следует ознакомиться с этими текстовыми файлами. К счастью для вас, их всего двое, /etc/passwdи /etc/group. Есть также дополнительные /etc/shadowи /etc/gshadowфайлы для теневого копирования passwd и group соответственно.


4
... и / etc / shadow, так как большинство систем будут квакать, если я не
согласен

1

Во многих ситуациях знание того, как редактировать «/ etc / passwd», все еще полезно.


1
Знать, как читать / etc / passwd, полезно, но изменять его напрямую - плохая практика. На некоторых * ix, которые я использовал (современные SysV, OS X ...), эти файлы не являются основным местом хранения данных пользователя и группы. Они либо являются теневыми копиями для совместимости, либо являются первичными источниками, но есть база данных или индекс, которые необходимо обновлять при каждом изменении. В этих системах, если вы не обновите файлы с помощью официальных инструментов, изменения не вступят в силу немедленно, если они вообще произойдут.
Уоррен Янг


1

Если вы используете бэкэнд, отличный от бэкэнда локального компьютера по умолчанию (OpenLDAP является наиболее распространенным), тогда cpu (утилита смены пароля) может быть той командой, которую вы ищете. Он может быть запущен на компьютерах, отличных от мастера LDAP, если он настроен правильно, и его синтаксис в основном такой же, как и useraddт. Д. С префиксом cpu. Чтобы добавить себя, я мог бы сделать

$ sudo cpu useradd hamish

Смотрите man-страницу процессора для более подробной информации.


Интересно, но ответ, который применим только к машине, которая получает информацию о пользователе из LDAP, для меня очень ограничен.
Дэвид Z

0

Если ваш вопрос был ограничен

любая система Linux (любого дистрибутива)

но все системы имеют сетевой доступ к одному серверу. Вы можете использовать что-то вроде NIS или YP. Таким образом, этот ответ ограничен администраторами в пределах одной организации.

У вас все еще есть проблема, когда почти в каждом дистрибутиве есть немного разные способы настройки YP, но конфигурация происходит только один раз. Кроме того, этот тип сети не является тривиальным.

В пределах одного сайта / сети вы получите много, делая это. В сочетании с автомонтированием, мой любимый - возможность SSH подключаться к любой машине * nix и иметь все свои домашние файлы и инструменты, доступные мне.

Кстати, распределение, которое вы выбираете для мастера, - это система, которую вы используете для управления пользователями. После этого у вас будет единый набор инструментов / документации для управления пользователями и группами.

На мастере можно даже использовать что-то вроде инструментов LDAP и samba. Использование samba также позволяет мне иметь доступ к моим домашним файлам на компьютерах с Windows.


Спасибо, но я ищу ответ, который также применим к не сетевым системам.
Дэвид Z

0

Самое близкое к стандарту, которое вы получите vi /etc/passwd, это vi /etc/shadow, и vi /etc/groups. (Еретики могут заменить emacs.) Все, что я обнаружил с тех пор, будет работать только на некоторых системах.

Серьезно, узнайте, какие инструменты есть в вашей ОС, и используйте их. Только не ожидайте, что они будут работать одинаково на всех системах. Было бы хорошо, если бы они были стандартизированы, но это не так.


Использование текстового редактора для редактирования файлов конфигурации, которые инструменты могут и должны редактировать для вас, не является стандартом. Вы никогда не должны использовать текстовый редактор для изменения файла конфигурации, когда операционная система или приложение предоставляют утилиту, которая сделает это за вас. Это особенно верно для /etc/passwd, /etc/shadow, /etc/group, и /etc/gshadow. Для этого и нужны инструменты. Люди подвержены ошибкам, в то время как инструменты были протестированы и (надеюсь) не содержат ошибок.
Аарон Топонсе

Никогда не вызывайте редактора /etc/passwdи друзей напрямую. Используйте vipwи vigr, который: заблокировать файл от одновременного издания; запустите ваш любимый редактор ( $VISUAL); не меняйте файл, если вы допустили синтаксическую ошибку; в некоторых системах (например, FreeBSD) также регенерируйте другие файлы, которые должны быть синхронизированы.
Жиль "ТАК - перестать быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.