Linux bash читает из файла, затем вводит в linux
Я хочу добавить пользователей Linux, тогда я хочу ограничить их настолько сильно, насколько это возможно. (noshell и т. д.) из файла с именем users.
Это мой код, но не работает:
while read line
do
input = echo ($input | tr ":" "\n")
#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
if [ $? -eq 0 ]; then
echo "$username exists!"
exit 1
else
pass=$(perl -e 'print crypt($ARGV[0], "password")' $input[1)
useradd -m -p $input[1] $input[0]
[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi
else
echo "Only root may add a user to the system"
exit 2
fi
done < /var/www/users
Тогда я хочу ограничить их учетные записи с Noshell. (но я знаю, как я могу это сделать. Но я не могу правильно отделить вход от файла:/)
вход (пользователи):
john:lol
rambo:sanyi
cula:kari
Большое спасибо!
1 ответ
Решение
Я думаю, следующий скрипт будет делать:
#!/bin/bash
USERS=`cat /etc/passwd | cut -d: -f1`
if [ `id -u` -ne 0 ]
then
echo "Login as Root"
else
while read line
do
USER=`echo $line | cut -d ":" -f1`
PASS=`echo $line | cut -d ":" -f2`
echo $USERS | grep "${USER}" > /dev/null
if [ $? -eq 0 ]
then
echo "Username ${USER} Exists!"
else
password=`perl -e 'print crypt("${PASS}", "salt")', "\n"`
useradd -p "${password}" ${USER}
echo "User ${USER} created!"
fi
i+=1
done < /var/www/users
fi