[이현철]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션)
:
>- 데몬버전(예:apache
1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타)
:
>-----------------------------------------
>기존에 있는 서버의 유저 어카운트와 shadow 화일을
가지고
>새로운 서버에 유저를 등록하려고 합니다..
>
>cat /etc/shadow
>##################################################
>test:$1$p5Zu7Kem$d2K7XDeWp5Qn41ZCctjyo.:12565:0:99999:7::
>testuser:H6.CGThArD.GE:12657:0:99999:7:::
iga-test:$1$xvI/cF/w$Jb/a82rLBq6VyZRMRtxES.:12663:0:99999:7:::
>##################################################
>
>만일 위와 같다면 위에 내용중에 유저id와 shadow를
>파일로 뽑아 내려고 합니다.
>
>이것을 뽑아서
>
>cat list.txt
>##################################################
>test:$1$p5Zu7Kem$d2K7XDeWp5Qn41ZCctjyo
>iga-test:$1$xvI/cF/w$Jb/a82rLBq6VyZRMRtxES
>##################################################
>이런씩으로 뽑을려고 합니다.
>어떤씩으로 하면 될지요?
>
shell> awk -F":" '{printf "%s:%s\n",$1,$2}' /etc/shadow | tee -a
new.pwd
이런식으로 하면 new.pwd 에 생성됩니다.
그러나 사용자를 추가할 경우는 이런 방법은 좋지 않습니다.
>그리고 위와같이 뽑은 파일을 새로운 서버에 자동으로 유저가
등록
>되도록할려고 합니다.
>
>chpasswd 를 이용해서 할려고하는데요.
>아래의 스크립트를 이용해서 위에 가져온 list.txt파일을
이용할수 없는지요.
>[root@oracle home]# vi add.sh
>############################
>#!/bin/bash
>useradd -g 1000 -c web -d /export/home/$1 -m -s /bin/bash -k /etc/skel
$1
>chmod 755 /export/home/$1
>mkdir /export/home/$1/html
>chown $1 /export/home/$1/html
>chgrp customer /export/home/$1/html
>echo $1:$2 | chpasswd
>##############################
>
>
> 아니면 어디 좋은 방법을 좀 일러 주십시요...
>
>..좋은 하루되세요..
일단 사용자가 많다면 passwd shadow group gshadow
을 복사한 다음에 새로운 시스템에 그대로 추가(append)해 주면
됩니다.
예를 들어(passwd 파일인 경우)
- 기존의 passwd 파일을 복사한 파일(이하 'A') :
500 이하의 ID 는 무시하고 500 이상만 남도록 편집
- 새로운 시스템의 passwd(이하 'B'):
500 이하의 ID 만 남도록 하고 나머지는 모두 삭제
위와 같이 각각 편집한 다음에 A 파일을 B 서버로 옮겨놓고
sheel> cat A >> B
이런식으로 append 하면 됩니다.
나머지 shadow, group gshadow 도 마찬가지로,
그 다음 계정 홈디렉토리를 만들어 줘야 하는데
useradd 명령어로 만들어 주면 안됩니다. 이미 passwd 파일에 있기
때문에, 따라서 이런 경우는 shell 스크립트로 짜서 돌리면
됩니다.
만약 기존의 시스템 A 와 똑같은 홈디렉토리이면
기존의 A passwd
파일에서 홈 디렉토리 이름을 뽑아서 mkdir 로 만들어 주고,
그렇지 않아면 아주 다른 새로운 홈디렉토리이면,
apppend 된 passwd
파일을 일괄적으로 먼저 수정해줘야 합니다.
간단하게 하는 방법은
------------------
#!/bin/sh
IFS='
'
for line in `cat /etc/passwd` ; do
ACCOUNT=`echo "$line" | awk -F ":" '{print $1}'`
UID=`echo "$line" | awk -F ":" '{print $3}'`
GID=`echo "$line" | awk -F ":" '{print $4}'`
HOMEDIR=`echo "$line" | awk -F ":" '{print $6}'`
if [ $UID -ge 500 ] ; then
echo "account : $ACCOUNT , $UID:GID $HOMEDIR"
fi
done
------------------
위의 스크립트를 수정해서 사용해 보세요
|