홈페이지 : 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

사용자 등록 유틸 스크립트

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다