홈페이지 : http://www.dolmengi.com, Hit:56
1. Linux 의 경우
./adduser_sh USERNAME PASSWORD HOME_DIR
-------------- adduser_sh cut here ------------------
#!/bin/sh
CHK=
user=${1}
pass=${2}
home=${3}
[ -n "${home}" ] && home="-d ${home}"
adduser ${user} ${home}
CHK=$?
if [ $CHK -ne 0 ]; then
exit 1
fi
echo "${pass}" | passwd ${user} --stdin
CHK=$?
if [ $CHK -ne 0 ]; then
exit 1
fi
exit 0
-------------- adduser_sh cut here ------------------
2. Other OS 의 경우
Linux 가 아닐 경우에는 passwd 에서 --stdin 이 지원이 되지 않으
므로 adduser 의 -p 옵션을 사용해야 한다. 물론 adduser 에서 -p 옵션
이 지원되지 않는다면 사용할 수 없다.
또한, 이 방법을 사용할 경우에는 password 를 encoding 한 값을 사용
해야 하므로 별도 의 utility 가 필요하다.
2.1 apache 가 설치되어 있을 경우
-------------- adduser_sh cut here ------------------
#!/bin/sh
# md5 암호화가 지원이 될 경우.
# 안될 경우에는 0으로 설정할 것.
# passwd 나 shadow 파일에서 암호화된 패스워드의 길이가
# 8가 이면 0으로 설정해야 함.
md5opt=1
CHK=
user=${1}
pass=${2}
home=${3}
[ -n "${home}" ] && home="-d ${home}"
if [ -n "${pass} ]; then
[ $md5opt -eq 1 ] && mdopt="-m"
pass=$(htpasswd $mdopt -n b {$user} | sed 's/.*://g')
pass="-p \"${pass}\""
fi
adduser ${user} ${home} {$pass}
CHK=$?
if [ $CHK -ne 0 ]; then
exit 1
fi
exit 0
-------------- adduser_sh cut here ------------------
2.1 apache 가 설치되어 있지 않을 경우
이 경우는 암호화 유틸리티가 있어야 한다. 이 유틸리티는
http://linux-sarang.net/board/?p=read&table=tip&no=10549
에서 퍼왔다.
-------------genpass.c-------------------------------
#include <unistd.h>
int
main(int argc, char *argv[])
{
char *cypher;
char *salt = argv[1];
char *key = argv[2];
cypher = crypt(key, salt);
printf("%s\n", cypher);
return 0;
}
-------------genpass.c-------------------------------
genpass.c 라는 파일을 만들어 위의 내용을 기입한다. 다음
gcc -O2 -o genpass genpass.c
install -m 700 genpass /usr/local/sbin/genpass
과 같이 명령을 실행한다.
그리고 아래와 같이 스크립트를 만들어 사용하면 된다.
-------------- adduser_sh cut here ------------------
#!/bin/sh
CHK=
user=${1}
pass=${2}
home=${3}
[ -n "${home}" ] && home="-d ${home}"
if [ -n "${pass} ]; then
pass=$(/usr/local/sbin/genpass {$user} {$pass})
pass="-p \"${pass}\""
fi
adduser ${user} ${home} {$pass}
CHK=$?
if [ $CHK -ne 0 ]; then
exit 1
fi
exit 0
-------------- adduser_sh cut here ------------------
또, 다른 방법….꽁수….^^*
#!/bin/bash
echo -n "ID : "
read ID
echo -n "PASSWD : "
read PW
echo ${ID}:${PW} > /tmp/user.txt
for i in `awk -F : '{print $1}' /tmp/user.txt`
do
adduser $i
done
chpasswd < /tmp/user.txt
rm -f /tmp/user.txt
사용자 등록 유틸 스크립트