Вот вам отправная точка:
#!/bin/bash
PHONEFILE=/path/to/your/file
# Prompt for search and replace numbers
# and simply exit if either is empty
# (in your actual script, you'll need to flesh this out with
# proper validation of phone number formats, error messages etc.!)
read -p "Number to search for: " oldnum
if [ ! "$oldnum" ]; then exit; fi
read -p "Replace with number: " newnum
if [ ! "$newnum" ]; then exit; fi
# Search and replace, change the phone file directly
# and create a backup of the previous version with .bak extension
# This assumes a file containing one phone number per line
sed -i .bak 's/^'"$oldnum"'$/'"$newnum"'/' $PHONEFILE
Если вы получили эту ошибку, это потому, что пользователь, которого вы хотели добавить, уже существовал и был удален. И поскольку он существовал в файле /etc/passwd
, система автоматически создала зашифрованный passwd в /etc/shadow
для этого пользователя.
Поэтому, когда пользователь был удален из /etc/passwd
, зашифрованный passwd должен был быть удален из файла /etc/shadow
.
Проще говоря, вы не можете добавить пользователя командой useradd
, если пароль для этого пользователя уже существует в файле /etc/shadow
.
Перейдите в файл /etc/shadow
и удалите строку пароля для этого пользователя, после чего
вы сможете добавить пользователя.
Скорее всего, ваш сервер является клиентом NIS и поэтому добавление локальных пользователей может быть запрещено. Просто проверьте, является ли он частью домена NIS.
Проверьте целостность /etc/passwd и связанных с ним файлов с помощью pwck
. Сделайте то же самое для файлов, связанных с группами, с помощью grpck
.
Проверить файл /etc/user _атрибут. Если есть запись для оракула, выделите ее и запустите команду useradd. Пользователь будет создан, а затем активируется запись в /etc/user _attr. Это сработало для меня.