삼바에서 smbpasswd -a 하지 않고 로컬 계정을 사용할 수 있을까

tinywolf의 이미지

smbpasswd -a username

일일이 등록해주고 암호 걸어주기는 너무 귀찮아요.. :?

그냥 로컬 계정의 암호와 똑같으면 되는데..

사용자 추가할 때마다 똑같이 다시 치고 있자니.. :cry:

혹시 삼바에서 그냥 로컬에 있는 계정을 사용하도록 할 수 있을까요? :roll:

사용자를 추가하거나 변경하는 스크립트나 짜볼까나... 쩝.

maddie의 이미지

움...스크립트를 짜십시오.
그런 스크립트가 인터넷에 떠다녔었는데 오늘 찾아보니 안찾아지네요.
pdc를 운영하는게 아니라면 smb.conf에서 어찌하면 되다는데 저는 성공해 본적이 없어요 ㅡ.ㅡ 삼바를 무려 3년이상 다뤄봤건만..
pdc의 경우엔 머신 아이디까지 만들어 넣어주어야 한답니다 ㅡ.ㅡ

힘없는자의 슬픔

cyber93의 이미지

; encrypt passwords = yes
; smb passwd file = /etc/samba/smbpasswd

smb.conf 파일에 보면 위의 설정이 있습니다.
앞에 주석처리하면 됩니다.

문재식의 이미지

이건 제가 사용하려고 만든 사용자 계정 추가 스크립트입니다.
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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.