리눅스서버용 메신저가 개발되면서 필요했던 기능이었습니다.
설치시에 동시에 몇명의 유저의 추가가 필요했었는데 유용하게 사용했었구요...
예전에 개인홈페이지에 있던 내용을 그대로 가져와서 반말 입니다.
양해를 부탁합니다 :-)
========================================================================================
리눅스에서 계정사용자 등록스크립트를 만든다.
아래의 프로그램을 이용하여 여러가지로 적용을 할 것이다.
변수(계정명,패스)를 인자로 두어 추가사용하도록 해도 좋을 것이고, 직접 입력 받도록 해도 좋을 것이다.
그리고 대량의 사용자를 추가해야 할 경우 응용하면 좋은 방법이 될 것이다.
개요 :
기본적으로는 쉘스크립트를 이용하고, crypt하는 소프로그램을 적용시켜 등록한다.
useradd -d /home/$1 -g users -G root -p $2 -s /bin/bash $1
위 명령어가 기본적으로 사용될 것이다.
/*-----------------------------------------*/
단, 패스워드는 crypt화 시켜서 올려야 한다.
crypt 프로그램은 C로 작성해서 컴파일 하였다.
프로그램명 : mycrypt
소스파일 : mycrypt.c
※ 맨 아래 부분에 이에 대한 소스(mycrypt.c)와 설명이 있다.
/*-----------------------------------------*/
그래서 이를 이용해서 다시 정리하면서 스크립트를 작성한다.
]#vi myadduser
#!/bin/sh
echo /usr/sbin/useradd -d /home/$1 -p `./mycrypt $2` $1
/usr/sbin/useradd -d /home/$1 -p `./mycrypt $2` $1
로 작성하고
실행권한을 준 다음, 다음과 같이 사용한다.
]# ./myadduser 사용자계정명 패스워드
이상은 개요 및 사용법에 관한 것이고, crypt에 대해서 보충하면,
소스파일 mycrypt.c의 내용
#include [stdio.h]
#include [unistd.h]
int main(int argc, char* argv[])
{
if(argc != 2)
return 1;
puts((char*)crypt(argv[1], "$1$"));
}
이고 컴파일은 아래와 같이 한다.
gcc -o mycrypt -O -lcrypt mycrypt.c
/etc/shadow 에서 패스워드 보면 $1$ 로 시작하는데,
그건 crypt 함수에서 사용되는 encryption key 이다
os의 버전이나 기타 다른 이유로 그 키가 다른 경우가 있는데, 이때는 달라진 키값을 적용해줘야 한다.
/etc/passwd 나 /etc/shadow 파일 열어보면 패스워드 부분의 처음 몇 글자가 똑같은 걸 볼 수 있는데 그게 키 란 것이다.
그 키를 확인한 후 mycrypt.c 에서 그 $1(변수명이 아닌 키 값인것이다. 구분!)을 그 키 값으로 바꿔주고 다시 컴파일 한다.
그럼 됐다.
'Server Story.... > Linux' 카테고리의 다른 글
버그 리포트 관리툴 , Mantis 설치 1/2 (0) | 2010.06.28 |
---|---|
tar.gz 압축 하기. 압축 풀기 (0) | 2010.06.22 |
리눅스에서 베드섹터 검사명령어 (0) | 2010.05.28 |
리눅스서버에서 ping(ICMP) 열기/닫기 (0) | 2010.05.28 |
리눅스, 배포판의 선택 (0) | 2010.05.28 |