#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, а не только в плоских файлах.