2007. 7. 3. 15:53

Samba for FreeBSD

#
#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.html

http://hanbitbook.co.kr/web/sample/1179/redhat72_chapter47.pdf

2007. 7. 3. 15:52

smb.conf 예제 파일

아래의 예제파일은
특정 아이디로 로그인 하여 공용 파일을 사용할수 있게 하는 경우와
모두 풀어준 공용 파일에 대한 예이다.

# Samba config file created using SWAT
# from 192.168.1.111 (192.168.1.111)
# Date: 2004/06/30 20:21:39

# Global parameters
[global]
client code page = 949
workgroup = ToyBSD 	server string = Samba Server( 파일 서버)
security = SHARE
encrypt passwords = Yes
username map = /usr/local/etc/users.map
log file = /var/log/log.%m
max log size = 500
socket options = TCP_NODELAY IPTOS_LOWDELAY
dns proxy = No

[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No

[Woosu Open File Server]
comment = 사내 공용 파일 서버
path = /usr/home/woosu/pub
read only = No
guest ok = Yes

[Affairs Team]
comment = 경영관리부 파일 서버
path = /usr/home/ws11/pub
write list = ws11
read only = No
2007. 1. 3. 17:33

smb.conf 예제 파

아래의 예제파일은
특정 아이디로 로그인 하여 공용 파일을 사용할수 있게 하는 경우와
모두 풀어준 공용 파일에 대한 예이다.

# Samba config file created using SWAT
# from 192.168.1.111 (192.168.1.111)
# Date: 2004/06/30 20:21:39

# Global parameters
[global]
client code page = 949
workgroup = WOOSU
server string = Samba Server(우수기계 파일 서버)
security = SHARE
encrypt passwords = Yes
username map = /usr/local/etc/users.map
log file = /var/log/log.%m
max log size = 500
socket options = TCP_NODELAY IPTOS_LOWDELAY
dns proxy = No

[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No

[Woosu Open File Server]
comment = 사내 공용 파일 서버
path = /usr/home/woosu/pub
read only = No
guest ok = Yes

[Affairs Team]
comment = 경영관리부 파일 서버
path = /usr/home/ws11/pub
write list = ws11
read only = No
2007. 1. 3. 17:32

Samba for FreeBSD

#
#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.html

http://hanbitbook.co.kr/web/sample/1179/redhat72_chapter47.pdf








수정판-Samba 공유자원의 사용자별 접권 권한 콘트
글쓴이 : 유성태 (2000년 09월 20일 오후 07:14) 읽은수: 9,966 [ 삼바 # 트랙백(0) 인쇄용 페이지 본문 E-Mail로 보내기 ]
삼바 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에 등록해 주는 수 밖에
없었습니다. 어쨌든 해결책은 있는 셈이네요.










답장 익명 (2004년 01월 05일 오후 06:26)
저는 user map 을 사용하지 않고 디렉토리를 읽을 사용자와 쓸 사용자를 아래와 같이 설정해서 사용하고 있습니다.
참고로 윈도우로그온 id 와 삼바로그온 아이디는 일치하지 않습니다


[SalesAccounts]
comment = 읽기와 쓰기 유저 구분함
path = /data/DISK2/videogameLog
readonly = no
public = no
writeable = no
write list = user1
valid users = user2 user3
create mask = 0775
directory mask = 0775
[ 이글에 답장 | 본문에 답장 | 책갈피 ]













답장 박영진 (2004년 05월 28일 오후 02:18)
안녕하세요.
저도 윈도우 로그온 id와 삼바 로그온 아이디가 일치 하지 않아 님께서 쓰신대로
해 보았으나 되질 않았습니다. 여기에 올리신 것 말고 또 구성을 해 줘야하는 부분
이 있는지요.. 정말 궁금합니다.
언제 다시 보실진 모르지만 보신담 write list는 삼바계정인지, valid users
windows 계정인지 , 윈도우 계정이 한글이라도 가능한지 알고싶습니다. 저흰
한글 계정이거든요.

부탁드리겠습니다.Anonymous wrote...
> 저는 user map 을 사용하지 않고 디렉토리를 읽을 사용자와 쓸 사용자를 아래와 같이 설정해서 사용하고 있습니다.
> 참고로 윈도우로그온 id 와 삼바로그온 아이디는 일치하지 않습니다
>
>
> [SalesAccounts]
> comment = 읽기와 쓰기 유저 구분함
> path = /data/DISK2/videogameLog
> readonly = no
> public = no
> writeable = no
> write list = user1
> valid users = user2 user3
> create mask = 0775
> directory mask = 0775
[ 이글에 답장 | 본문에 답장 | 책갈피 ]








답장 김장하 (2000년 09월 27일 오전 12:58)
글과는 어쩌면 크게 상관있는 이야기는 아니겠지만...
Win2000 Server 에 있는 공유폴더를 접근할 때,
password를 물어옵니다. 물론 공유 암호는 없고, 권한도
모두다 열여있습니다. NT 4.0 에는 password 에서 공유암호가 없으니
password 에서 엔터만 치면 넘어가는데 Win2000 에서는 어떻게 사용하죠?
[ 이글에 답장 | 본문에 답장 | 책갈피 ]













답장 tester (2000년 09월 27일 오후 09:56)
삼바 설정시 보안모델을 도메인 레벨로 설정 했습니다....
일반 윈98 컴에서는 삼바공유에 접근이 가능한데 윈2000에서는 네트워크
환경에 삼바가 공유가 나타나지도 않고 탐색으로 삼바를 찾으면 접근하려
고 하면 암호를 물어 봅니다(어떠한 해커도 깔수없는 암호 입니다)... 도
저히 해답을 찾지 못하겠어요..흑흑
도와주세요....
[ 이글에 답장 | 본문에 답장 | 책갈피 ]













답장 code-guru (2000년 10월 04일 오후 03:23)
음... 예전에 어디선가 읽은적이 있는데...

윈도 레지스트리를 수정하면 된다고....

그때 확실히 봐두질 않아서 기억이 나질 않네요...

도움이 되니 못해서 죄송합니다.

혹시나 해서 몇자 적었습니다.
[ 이글에 답장 | 본문에 답장 | 책갈피 ]













답장 formatc (2000년 10월 09일 오후 02:04)
윗분께서 말씀하신 레지스트리가 혹시 이건가요?
2000에서는 테스트를 안해봤지만, 98에서는 이렇게 해야
되더군요.

REGEDIT4

[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]
"EnablePlainTextPassword"=dword:00000001
[ 이글에 답장 | 본문에 답장 | 책갈피 ]











답장 스머프 (2000년 11월 11일 오후 03:24)
윗분께서 말씀하셨던 건 윈98이고, 윈2000에서는 위치가 좀
바뀌었네요.
HKEY_LOCAL_MACHINESYSTEMControlSet001Serviceslanmanworkstationparameters
의 EnablePlainTextPassword의 값을 1로 해주면 됩니다.

그리고 리부팅하면 됩니다. (망할 윈도우 <- 서버도 리부팅하냐?)