본문 바로가기

Server Story..../Linux

리눅스 사용자 추가 스크립트

리눅스서버용 메신저가 개발되면서 필요했던 기능이었습니다.

설치시에 동시에 몇명의 유저의 추가가 필요했었는데 유용하게 사용했었구요...

예전에 개인홈페이지에 있던 내용을 그대로 가져와서 반말 입니다.

양해를 부탁합니다 :-)

 

========================================================================================

 

리눅스에서 계정사용자 등록스크립트를 만든다.
아래의 프로그램을 이용하여 여러가지로 적용을 할 것이다.
변수(계정명,패스)를 인자로 두어 추가사용하도록 해도 좋을 것이고, 직접 입력 받도록 해도 좋을 것이다.
그리고 대량의 사용자를 추가해야 할 경우 응용하면 좋은 방법이 될 것이다.


개요 :
기본적으로는 쉘스크립트를 이용하고, 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(변수명이 아닌 키 값인것이다. 구분!)을 그 키 값으로 바꿔주고 다시 컴파일 한다.
그럼 됐다.