Как мне создать пользователя и группу, если они не существуют

#linux #shell

Вопрос:

Это первый раз, когда я попытался создать сценарий, и я не могу понять, как создать пользователя, когда «пользователь не существует». Та же проблема и для группы: «группы не существует».

 #!/bin/bash!  echo "Enter a user name: " read name  if grep $name /etc/passwd gt; /dev/null then  echo "user $name is on this system." else  echo "user $name does not exist."  fi  echo "Enter a group name: " read name  if grep $name /etc/group gt; /dev/null then  echo "$name group is on this system." else  echo "$name group does not exist." fi   

Комментарии:

1. Что не так с тем, что у тебя есть?

2. Ваш grep будет соответствовать подстрокам. Поэтому , если есть пользователь с именем abcde , и они попросят сделать bcd , он скажет, что имя пользователя уже существует. Вы можете использовать grep -w опцию для сопоставления целых слов.

3. Если кто-то захочет сделать пользователя с именем bash , это не удастся, потому /bin/bash что появится в файле.

4. Как правило, вы добавляете группу, groupadd [-g GID] groupname где -g GID это необязательно, если хотите назначить определенный идентификатор группы. Затем используйте useradd -u UID -g [GID name] -G [list of other groups] -m username , где вы можете установить для основной группы пользователя новый идентификатор GID с -g (имя или идентификатор GID) и список дополнительных групп после -G указания системе создать /home/username каталог -m .

5. getent $db "$name" gt;/dev/null (где $db находится passwd или group ) вместо grep позволяет избежать проблем, отмеченных Бармером, и выполняет поиск во всех базах данных, поддерживаемых NSS, а не только в плоских файлах.