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

사용자 등록 유틸 스크립트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다