삼바에서 smbpasswd -a 하지 않고 로컬 계정을 사용할 수 있을까
글쓴이: tinywolf / 작성시간: 월, 2004/02/23 - 8:48오후
smbpasswd -a username
일일이 등록해주고 암호 걸어주기는 너무 귀찮아요.. :?
그냥 로컬 계정의 암호와 똑같으면 되는데..
사용자 추가할 때마다 똑같이 다시 치고 있자니.. :cry:
혹시 삼바에서 그냥 로컬에 있는 계정을 사용하도록 할 수 있을까요? :roll:
사용자를 추가하거나 변경하는 스크립트나 짜볼까나... 쩝.
Forums:


움...스크립트를 짜십시오.그런 스크립트가 인터넷에 떠다녔었는데 오늘
움...스크립트를 짜십시오.
그런 스크립트가 인터넷에 떠다녔었는데 오늘 찾아보니 안찾아지네요.
pdc를 운영하는게 아니라면 smb.conf에서 어찌하면 되다는데 저는 성공해 본적이 없어요 ㅡ.ㅡ 삼바를 무려 3년이상 다뤄봤건만..
pdc의 경우엔 머신 아이디까지 만들어 넣어주어야 한답니다 ㅡ.ㅡ
힘없는자의 슬픔
; encrypt passwords = yes; smb pas
; encrypt passwords = yes
; smb passwd file = /etc/samba/smbpasswd
smb.conf 파일에 보면 위의 설정이 있습니다.
앞에 주석처리하면 됩니다.
이건 제가 사용하려고 만든 사용자 계정 추가 스크립트입니다. user
이건 제가 사용하려고 만든 사용자 계정 추가 스크립트입니다.
userfile 이라는 파일에 "ID:password"와 같은 형식으로 사용자를 등록하고
스크립트를 동작시키면 리눅스 계정, 삼바계정, 디비계정, 쿼터설정 등이 되도록
하였습니다. 이건 옵션을 통해 제어가 가능합니다.
#!/bin/bash ################################################################################ # Mannam Linux USERADD Script Ver 1.0.0 Alpha # Scripted by Mun Jae Sik, mannam at okwecan.org ################################################################################ # 기본값 설정 ################################################################################ # 사용 명령어 경로 ADD="/usr/sbin/useradd" PW="/usr/bin/passwd" MYSQL="/usr/bin/mysql" SMBPASSWD="/usr/bin/smbpasswd" # 계정 정보가 들어있는 파일의 경로 USERFILE=userfile # HOME은 추가하고자 하는 사용자의 기본 디렉토리이다. 없으면 생성하도록 한다. # useradd 명령은 기본적으로 /home/ID 형식으로 사용자의 계정디렉토리를 생성한다. # 하나의 디렉토리에 많은 소유자를 두는 것은 관리적 측면에서 좋은 방법이 아니므로 # /home 밑에 아래와 같이 baseball, pingpong와 같은 그룹명과 같은 디렉토리를 만든 # 다음 사용자 등록을 /home/baseball/chanho와 같은 형식으로 하면 쉽게 그룹별로 분 # 리가 되어 있어 사용자를 효율적으로 관리할 수 있다. # /home # |- baseball # | |- chanho # | \_ jongbum # | # |_ pingpong # |- namgu # \_ junghwa ################################################################################ # 사용자의 홈디렉토리 위치 HOME="/home/computer" ################################################################################ # 사용자의 그룹 # MGID는 추가하고자 하는 사용자의 기본그룹 GID(Group ID)이다. 그룹이 존재하지 않 # 으면 groupadd -g GID 명령을 통해 생성한다. GID는 500번 이상을 사용하도록 하자. MGID="1000" ################################################################################ # 추가기능 선택 # QUOTA 적용, 삼바 계정 추가여부, 데이터베이스(사용 1, 사용안함 0) # QUOTA 를 새로운 사용자에게 설정하기 위해서는 QUOTAUSER 에 원본 사용자를 등록해 # 주어야 한다. EN_QUOTA=0 EN_SAMBA=1 EN_MYSQL=0 QUOTAUSER= ################################################################################ # 랭기지 환경변수가 한글로 되어 있는지 확인하고, 아니면 한글로 설정한다. if [ "$LANG" != "ko_KR.eucKR" ]; then LANG="ko_KR.eucKR" fi # useradd 명령은 오직 루트만이 사용할 수 있으므로 당연히 이 스크립트도 루트로 실 # 하여야 한다. if [ "$UID" -ne "0" ]; then echo "이 스크립트는 루트로 실행시켜야 합니다." exit 1 fi ################################################################################ # 기존 사용자 아이디 출력 ################################################################################ # wc -l /etc/passwd # 31 /etc/passwd # wc -l file 명령은 file의 전체 줄수를 출력한다. 우리가 알고자 하는 것은 전체 줄 # 수 이므로 awk 명령을 이용해 첫번째 필드(공백으로 필드를 구분한다.)값만 print # 하여 TOT_RECORD 변수에 담는다. 이를 구하는 이유는 아래에서 for 문을 실행할 조 # 건으로 활용하기 위해서 이다. TOT_RECORD=$(wc -l /etc/passwd | awk '{print $1}') # awk -F: 은 필드구분자를 ":"로 사용하겠다는 뜻이다. /etc/passwd 파일을 들여다 # 보면 금방 무슨 소리인지 안다. # $1 이는 passwd 파일의 첫번째 필드, 즉 계정부분을 말한다. 역시 print 하였으니 # 화면에 표준출력된다. 이를 리다이렉션하여 $PASSWD_NAME에 담는다. PASSWD_NAME=passwd.name awk -F: '{print $1}' /etc/passwd > "$PASSWD_NAME" ################################################################################ # 사용자를 추가하는 함수 생성 ################################################################################ function myuseradd () { username=${1:?"Error : User name NOT INPUT"} password=${2:?"Error : User password Not INPUT"} ############################################################################# # 여기서 for 문의 목적은 생성하고자 하는 아이디가 이미 존재하는가를 확인하기 # 위해서이다. 위에서 구한 $PASSWD_NAME 파일에서 첫번째 줄의 내용을 입력받아 # (read) name 변수에 담아 사용자가 등록하고자 하는 아이디와 비교하여 있으면 # 에러를 출력하고 스크립트를 종료한다. # 없으면 $PASSWD_NAME 파일의 두번째 줄을 입력받아 반복작업을 하고, 최종적으로 # $TOT_RECORD 만큼 반복실행한다. for (( i=1; i <= TOT_RECORD; i++ )) do read name if [ "$username" = "$name" ] then echo "[ERROR]" echo " USER [$username] is already registered" rm -f "$PASSWD_NAME" exit 1 fi done < "$PASSWD_NAME" ############################################################################# # awk 의 사용법은 위와 동일하다. # 패스워드 파일에서 원하는 그룹의 정보만 추출하여 Groupname.bak 파일을 생성한 # 다. Groupname.bak의 마지막 한줄만 추출한 후 UID 정보를 출력한다. # 30번줄의 MGID 값이 변경되면 반드시 아래의 줄에 있는 MGID 값도 변경한다. awk -F: '$4 == 1000 {print $3}' /etc/passwd > $MGID.bak ############################################################################# # $MGID.bak 은 사용자가 등록을 원하는 그룹의 소속유저들만 모아둔 파일이다. # 이 파일의 용량이 "0"이 아니면, 즉 같은 그룹의 유저가 존재하면 그 유저의 UID # 값보다 "1"이 더 큰 UID 값을 가지도록 한다. if [ -s "$MGID.bak" ]; then LAST_UID=$(tail -n 1 $MGID.bak) rm -f $MGID.bak let NEW_UID=$LAST_UID+1 else rm -f $MGID.bak let NEW_UID=$MGID+1 fi $ADD -u $NEW_UID -g $MGID -d $HOME/$username $username ############################################################################# # 위의 명령이 성공적으로 이루워지면 $? 에는 "0"이 담겨지며, 그렇지 않으면 "0" # 이 아닌 다른 값이 담길 것이다. 성공적으로 위의 명령이 실행된다는 것은 유저 # 가 정상적으로 생성되었다는 뜻이다. RESULT=$? [ "$RESULT" -eq 0 ] && echo "Useradd $username : [ OK ]" [ "$RESULT" -ne 0 ] && { echo "Useradd $username : [ Failed ]"; exit 1; } echo $password | passwd --stdin $username 1>&- ############################################################################# # 등록한 사용자가 개인홈페이지를 만들 경우 외부에서 접근가능하도록 기본 퍼미 # 션을 711(drwx--x--x)로 변경한다. 원치 않으면 주석처리 하도록 한다. chmod 711 $HOME/$username # 사용자의 디스크 용량제한 QUOTA 설정 [ "$EN_QUOTA" -eq 1 ] && edquota -p $QUOTAUSER $username ############################################################################# # Samba 계정 추가 및 암호설정 [ "$EN_SAMBA" -eq 1 ] && $SMBPASSWD -a -s $1 $2 1>&- } function mysqladd () { username=${1:?"Error : User name NOT INPUT"} password=${2:?"Error : User password Not INPUT"} DBTMPFILE=useradd.sql echo "# $username" >> $DBTMPFILE echo "create database $username;" >> $DBTMPFILE echo "insert into user (Host,User,Password) values \ (\"localhost\",\"$username\",password(\"$password\"));" >> $DBTMPFILE echo "insert into db values (\"localhost\",\"$username\",\"$username\",\"Y\",\ \"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\"N\",\"Y\",\"Y\",\"Y\");" >> $DBTMPFILE echo "flush privileges;" >> $DBTMPFILE } ################################################################################ # 사용자 추가 함수 실행 ################################################################################ [ ! -f $USERFILE ] && { echo "ERROR : USERFILE NOT FOUND."; exit; } for USER in $(cat $USERFILE) do username=`echo $USER | awk -F: '{ print $1 }'` password=`echo $USER | awk -F: '{ print $2 }'` myuseradd $username $password [ "$EN_MYSQL" -eq 1 ] && mysqladd $username $password done [ "$EN_MYSQL" -eq 1 ] && $MYSQL -uroot -p mysql < $DBTMPFILE ################################################################################ # 사용자 정보파일 삭제 rm -f $PASSWD_NAME $USERFILE $DBTMPFILE exit 0댓글 달기