#
#Samba for FreeBSD
#
#버전
FreeBSD
samba
#################
# 1. 설치
#################
삼바 pkg_add 명령을 이용하거나 포트에서 설치할 수 있다.
pkg_add -r samba
또는
cd /usr/ports/net/samba
make install clean
#################
# 2. 시작 스크립트
#################
삼바의 실행은 독립모드(standalone) 또는 inetd 모드로 실행 가능하다.
- 독립모드 실행
cd /usr/local/etc
cp smb.conf.default smb.conf
cd /usr/local/etc/rc.d
mv samba.sh.default samba.sh
/usr/local/etc/rc.d/samba.sh start
- inetd 모드로 실행할 결우 /etc/inetd.conf 파일에 다음 내용을 추가하고
inetd 데몬을 재시작(killall -HUP inetd) 해준다.
# -------------------------------------------------------------------
netbios-ssn stream tcp nowait root /usr/local/sbin/smbd smbd
netbios-ns stream udp nowait root /usr/local/sbin/nmbd nmbd
# -------------------------------------------------------------------
####################################
# 2. 설정파일(/usr/local/etc/smb.conf
####################################
# -------------------------------------------------------
# smb.conf 설정 시작
# -------------------------------------------------------
[global]
workgroup = Workgroup
server string = FileServer
# 한국어 파일명 지원
client code page = 949
security = user
encrypt passwords = Yes
socket options = TCP_NODELAY IPTOS_LOWDELAY
dns proxy = no
log file = /var/log/log.%m
max log size = 500
[homes]
comment = Home Directories
browseable = No
read only = No
[pub]
comment = public directory
path = /home/pub
writable = Yes
browseable = Yes
# -------------------------------------------------------
# smb.conf 설정 끝
# -------------------------------------------------------
####################################
# 3. 삼바 사용자 계정과 비밀번호
####################################
삼바 설치과정에서 자동적으로 시스템 계정이 삼바 계정으로 추가 되어 있을 것이다.
삼바 계정 파일은 /usr/local/private/smbpasswd 이다.
삼바 계정 비밀번호는 시스템 계정 비밀번호와 별도로 관리되기 때문에 계정만들고
smbpasswd 명령으로 비밀번호를 입력해준다.
# 시스템 계정파일로 삼바 계정 파일을 만들려면 다음과 같이 해준다.
cat /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd
# 삼바 계정의 비밀번호를 변경한다.
smbpasswd user_name
(이곳에서 FreeBSD 계정의 패스워드를 다시 세팅해준다.)
###################################
###################################
#################
# 4. 삼바 시작
#################
/usr/local/etc/rc.d/samba.sh start
/usr/local/etc/rc.d/samba.sh stop
/usr/local/etc/rc.d/samba.sh restart
# inetd 모드일경우
killall -HUP inetd
#################
# 5. SWAT
#################
웹브라우저에서 삼바 설정을 관리하려면 swat을 설정하다.
/etc/inetd.conf 파일에 다음내용을 추가하고 inetd를 재시작 한다.
......................
swat stream tcp nowait/400 root /usr/local/sbin/swat swat
......................
killall -HUP inetd
http://ipaddress:901/SMB HOWTO
http://wiki.kldp.org/HOWTO//html/SMB/SMB-HOWTO.htmlhttp://hanbitbook.co.kr/web/sample/1179/redhat72_chapter47.pdf
수정판-Samba 공유자원의 사용자별 접권 권한 콘트 글쓴이 : 유성태 (2000년 09월 20일 오후 07:14) 읽은수: 9,966 [ 삼바 # 트랙백(0) ] |
Samba 공유자원의 사용자별 접권 권한 콘트롤
유성태
최초 작성일 2000년 6월 15일 최종 갱신일 2000년 9월 19일 v0.9
리눅스 머신에서 samba를 이용하여 임의의 디렉터리를 공유하고자 할 때 이 디렉터리에 대한 사용자 별 접권 권한을 어떻게 조절할 수 있는지 그 방법을 알아보고자 합니다.
데비안 2.2 POTATO, samba 2.0.5, 2.0.6, 2.0.7에서 시험하였습니 다.
samba를 설치한 후에 smb.conf 예를 살펴보면 아래와 같은 설정이 있습니다.
[public] comment = Public Stuff path = /usr/somewhere/public public = yes writable = no printable = no write list = @staff
위 설정의 의미는 다음과 같습니다.
"/usr/somewhere/public 이라는 디렉터리의 공유 이름을 public 으로 하여 누구나 접근 할 수는 있지만 (public = yes), 파일을 쓸 수는 없도록 (writable = no) 설정한다. 다만, staff 그룹에 속하는 사용자에 한해서는 쓰기도 가능하다."
그러나 위의 설정은 제대로 작동하지 않음을 확인하였습니다. 위의 설정을 크게 바꾸지 않는 범위에서 할 수 있는 짓은 다 해 보았으나 통하지를 않았습니다. samba 메일링 리스트는 현재 온라인 서치가 작동하지 않아서 그 쪽의 도움은 받을 수가 없었습니다.
NOTE: 위의 설정이 제대로 작동하는 것을 확인하신 분은 저에게 알려 주시면 감사하겠습니다.
writable = no 라는 설정의 위력은 대단합니다. 비록 공유하고자 하는 디렉터리를 777 모드로 설정해 놓아도 전혀 쓰기를 할 수가 없었습니다. 심지어 그 디렉터리의 소유자 ID로도 읽기 만을 할 수 있을 뿐 이었습니다.
writable = yes 라고 설정해 놓고 디렉터리를 777 모드로 설정해 놓으면 모든 사용자가 읽고 쓸 수 있는 권한을 가지게 됩니다. 전혀 원하는 바가 아니지요. 775로 설정해 놓으면 읽기 만이 가능합니다.
어쩔 수 없이 public = yes를 포기했습니다. 즉 누구나 비밀번호 입력 없이 읽을 수 있도록 하고 특정 사용자들에게만 쓰기 권한을 주는 설정은 불가능하다고 결론을 내렸습니다. 그래서 비밀 번호를 입력해서 접근 할 수 있도록 설정을 바꾸고 각 사용자 별로 접근 권한을 조절하는 방안을 찾기로 하였습니다.
우선 아래와 같이 설정을 바꾸었습니다.
[public] comment = Public Stuff browseable = yes path = /usr/somewhere/public writable = yes read list = tiyo write list = momo
위의 설정에서 tiyo와 momo는 리눅스 머신에 실제로 존재하는 즉, /etc/passwd 파일에 있는 user ID 입니다. 또한, smbpasswd 파일에 등록되어 있는 것은 물론 입니다. read list와 write list에 다른 사용자를 추가하려면 콤마로써 구분해 주면 됩니다.
위의 설정은 제대로 작동하는 것으로 확인 되었습니다. 윈도 머신에서 tiyo로 로그온 한다면 리눅스 쪽의 공유 디렉터리를 읽을 수 있습니다. 물론 쓸 수는 없지요. momo로 로그온 한다면 읽고 쓰기 모두 가능합니다.
그런데, 위의 설정은 조금 문제가 있습니다. smbpasswd 파일에 tiyo와 momo 이외의 사용자 등록되어 있다면, 그 사용자가 비록 read list와 write list에 없다고 하더라도 일고 쓸 수가 있다는 것입다. 이는 writable = yes 대신에 writable = no라고 설정해 주면 해결되는 문제 입니다. 따라서 정확한 설정은 다음과 같습니다.
[public] comment = Public Stuff browseable = yes path = /usr/somewhere/public writable = no read list = tiyo write list = momo
이제 남은 문제는 윈도 머신 사용자들의 로그온 ID를 리눅스 머신의 실제 user ID로 등록하지 않고도 그들의 접권 권한을 조절해야 한다는 것 입니다. 이를 해결하기 위한 방법은 user map 파일을 만드는 것 입니다.
[global] 섹션에 아래와 같은 설정을 넣어 줍니다.
username map = /etc/samba/users.map
그리고 users.map 파일을 작성합니다. 예를 들면 아래와 같습니다.
tiyo = jaff kei moss momo = pei gress klee
위에서 tiyo와 momo는 리눅스 머신의 실제 사용자 ID 이며, jaff, kei, pei등은 윈도 머신에서 사용하는 로그온 ID 입니다. 물론, 등호(=)의 오른쪽에 있는 사용자 목록에는 리눅스 머신의 사용자 ID도 올 수 있으며 그룹 ID(예, @staff)도 올 수 있습니다.
또한, global 섹션에 encrypt passwords = yes를 설정해 놓았다면 tiyo와 momo의 비밀번호가 /etc/samba/smbpasswd 파일에 등록되어 있어야 할 것입니다.
위와 같이 user map 파일을 만들어 사용할 때, 윈도 머신에서 pei라는 ID로 리눅스 머신에 접근한다면 momo 사용자의 홈 디렉터리에도 접근 할 수 있다는 문제점이 있습니다. 이 문제를 피하기 위해서는 [home] 섹션을 제거하는 것이 가장 좋을 것으로 생각됩니다.
[public] 섹션으로 돌아가서, valid users = tiyo momo 설정을 추가 해 줄 필요는 없습니다. read list 와 write list 설정으로도 충분합니 다. 그 다음, 중요한 것은 공유하고자 하는 디렉터리의 소유자가 누구냐 하는 것 입니다. 두 말할 필요도 없이 쓰기 권한을 줄 momo가 그 소유자가 되어야 할 것입니다. 755 모드로 공유 디렉터리를 설정해 두면 되겠습니다. 또는, 소유자를 nobody, 소유 그룹을 nogroup으로 지정하고 아래 두 줄을 추가해 두는 것도 괜찮을 듯 합니다.
force user = nobody force group = nogroup
정리를 해 보면,
1. 쓰기 권한과 읽기 권한을 줄 사용자 ID를 만든다
# adduser tiyo # adduser momo
2. encrypt password를 사용할 경우에는 read list와 write list에 열거된 사용자들의 ID와 패스워드를 smbpasswd 파일에 등록한다.
# smbpasswd -a tiyo # smbpasswd -a momo
3. 쓰기 권한을 줄 사용자 명의로 공유할 디렉터리를 만든다.
# cd / # mkdir pub # chown tiyo.tiyo pub # chmod 755 pub
4. users.map 파일을 만들어 /etc/samba/ 디렉터리에 저장한다. 파일 이름과 저장 위치는 원하는 대로......
5. smb.conf 파일의 global 섹션에 아래 한 줄을 추가
[global] ........ ........ ........ username map = /etc/samba/users.map ........ ........
6. smb.conf 파일에 공유할 디렉터리를 정의한다.
[public] comment = Public Stuff browseable = yes path = /pub writable = no ; directory mode = 0777 필요에 따라 추가 ; force user = nobody 필요에 따라 추가 ; force group = nogroup 필요에 따라 추가 read list = tiyo write list = momo
7. samba를 데몬으로 실행시키고 있다면 다시 실행시킨다.
여러 디렉터리를 사용자 접근 권한을 각각 달리하여 적용하고자 한다면 리눅스 머신의 사용자 ID를 여러개 만들어야 한다는 사소한 불편함이 있다는 것이 불만이라면 불만입니다. 여러 디렉터리에 실제로 적용을 해 보지는 않았습니다.
위의 사항을 여러 디렉터리에 적용을 하였더니 문제가 있었습니다. 가령, 다음과 같은 user map 파일을 만들었다고 가정하겠습니다.
tiyo = jaff kei moss momo = pei gress klee kozi = pei klee moss mimi = jaff gress moss
그리고 아래와 같이 두개의 공유 디렉터리를 정의 하겠습니다.
[public1] comment = Public Stuff browseable = yes path = /pub1 writable = no read list = tiyo write list = momo
[public2] comment = Public Stuff browseable = yes path = /pub2 writable = no read list = kozi momo write list = mimi
pei라는 윈도우 사용자를 놓고 한 번 생각해 보겠습니다. 위 설정의 의도는 pei는 public1에 쓰기 권한을 주고, public2에는 읽기 권한만을 부여하겠다는 것 입니다. 그런데 묘하게도 뜻대로 되지는 않았습니다. pei라는 사용자는 public2에 쓰기까지 할 수 있었습니다.
Note : 단지 예를 들기 위한 설정이기 때문에 위의 설정대로 하여도 설명과 같지 않을 수 있습니다.
묘한 상황이긴 하지만 어떻게 할 수가 없었습니다. 이렇게 된 이유는 아마도 samba가 시작될 때 username map 파일을 먼저 읽어 들이기 때문이라고 추측할 뿐 입니다. 시험해 보면 꼭 그것 때문이라고 할 수도 없기는 하지만.... 버그가 있지 않나라고 생각합니다.
해결책은 모든 윈도우 사용자 ID를 리눅스 머신의 사용자 ID로 등록해 주고 그 ID를 read list와 write list에 등록해 주는 수 밖에 없었습니다. 어쨌든 해결책은 있는 셈이네요. |
|
스머프 (2000년 11월 11일 오후 03:24)
|
|
|