2010년 2월 11일 목요일

Ubuntu에서 samba를 이용해서 파일공유 사용하기

파일공유 및 프린터 공유를 위해 samba를 설치하도록 한다.
$ sudo apt-get install samba smbfs

공유디렉토리 시나리오를 짜보자.
------------------------------------------------------------------------------
삼바 공유 폴더에 접근 가능한 그룹을 생성하고
그룹에 속하는 계정도 생성해준다.

공유 디렉토리 접근시 계정과 패스워드를 입력받도록 한다.

각 계정의 자신의 홈 디렉토리가 공유되도록 하고,
별도로 모든 계정이 접근 가능한 공유 폴더를 하나 만든다.

자신의 홈 디렉토리는 자신만 wrrite 가 가능하도록 하고
그룹멤버에게는 read 권한만 부여한다.

모든 계정이 접근 가능한 공유 폴더는
누구나 새로운 파일을 만들수 있지만
다른 사람의 파일은 읽기만 가능하게 한다.
------------------------------------------------------------------------------

우선 삼바 공유 폴더에 접근 가능한 그룹과 계정을 생성하자.
그룹명은 smbusers, 계정은 spnick으로 하기로 한다.
각 계정의 홈디렉토리는 /home 디렉토리 밑에 계정명과 동일한 디렉토리로 지정한다. (ex> /home/spnick)
(윈도우에서 공유폴더에 접근이 편하게 하려면 윈도우 계정과 동일한 이름으로 설정하는게 좋다.)
(동일한 이름으로 설정하지 않을 경우 참고: http://spnick.homelinux.net/1059 )

그룹 추가
$ sudo groupadd smbusers

그룹 확인
$ sudo cat etc/group

계정생성
$ sudo useradd -d /home/spnick -g smbusers -s /bin/bash -m -k /etc/skel spnick

생성한 계정에 패스워드 부여
$ sudo passwd spnick

삼바는 별도로 패스워드를 관리한다.
삼바용 패스워드를 설정해준다.
(윈도우에서 공유폴더에 접근이 편하게 하려면 윈도우 계정과 동일한 패스워드로 설정하는게 좋다)
$ sudo smbpasswd -a spnick

모든 계정이 접근 가능한 폴더를 생성해주자.
$ sudo mkdir /home/share

생성한 폴더의 그룹을 smbuser로 변경해준다.
$ sudo chgrp smbusers /home/share

권한은 1775로 준다. (sticky bit를 적용한다)
$ sudo chmod 1775 /home/share

sticky bit 를 사용하면 파일 또는 디렉토리를 지우는것은 그 파일 또는 디렉토리를 생성한 사람만 가능하게 된다.

적용후 확인해보면 다음과 같이 권한 끝이 t 로 되어 있다.
------------------------------------------------------------------------------
4 drwxrwxr-t  2 root   smbusers  4096 2008-12-31 21:34 share
------------------------------------------------------------------------------

samba 설정 파일을 편집 한다.
$ sudo vi /etc/samba/smb.conf

공유 디렉토리 접근시 계정과 패스워드를 입력받도록 하기 위해
security = user 부분을 찾아서 주석을 해제해준다.

각 계정의 자신의 홈 디렉토리가 공유되도록 해준다.
;[homes] 부분을 찾아서 주석을 해제해준다.

다음과 같이 세팅
------------------------------------------------------------------------------
[homes] # 리눅스 홈 디렉토리 접근 설정
   comment = Home Directory # 설명
  browseable = no # 공유 목록(homes)이 보이지 않게 한다. 홈디렉토리만 보인다.
   valid users = @smbusers # 접근 가능 유저 설정
   path = /home/%S # 홈 디렉토리 경로 지정
   read only= yes # 읽기 전용으로 설정
   write list = %S # 자신만 write 가능하도록 한다.
   create mask = 0644 # 생성 파일 디폴트 퍼미션
   directory mask = 0755 # 생성 디렉토리 디폴트 퍼미션
   hide dot files = yes # .으로 시작하는 파일이 안보이게 한다.
   veto files = /.?*/ # .으로 시작하는 파일 생성을 차단한다.
------------------------------------------------------------------------------

그룹내 모든 계정이 접근 가능한 디렉토리 설정
------------------------------------------------------------------------------
[share] # 접속시 보여지는 공유 폴더 이름
   comment = Share Directory # 설명
   browseable = yes # 공유 목록(share)이 보이게 한다.
   valid users = @smbusers # 접근 가능 유저 설정
   path = /home/share # 디렉토리 경로 지정
   read only = no # 쓰기 가능
   create mask = 0644 # 생성 파일 디폴트 퍼미션
   directory mask = 0755 # 생성 디렉토리 디폴트 퍼미션
------------------------------------------------------------------------------

프린터 공유는 기본적으로 세팅되어 있기 때문에
프린터 드라이버 설치만 끝나면 더이상 손대지 않아도 된다.
만약 윈도우즈에서 프린터 공유 완료후에
프린터 상태가 액세스 거부로 표시되거나
프린터 큐 확인이 안되는경우에는
[printers] 항목을 찾아서 다음 내용을 추가한다.
------------------------------------------------------------------------------
use client driver = yes
------------------------------------------------------------------------------

설정 저장후 설정이 제대로 되었는지 체크해본다.
$ sudo testparm

설정이 정상적으로 완료되었다면 samba 재시작.
$ sudo /etc/init.d/samba restart





우분투에서 samba를 이용해서 파일공유 사용하기

파일을 공유하려는 서버에서 아래와 같이 삼바 패키지를 설치한다.
sudo apt-get install samba smbfs

이 공유에 접근할 아이디와 비밀번호를 설정한다.
sudo smbpasswd -a 아이디

접근 아이디를 지울 때는 다음과 같이 한다.
sudo smbpasswd -x system_username

삼바 서버를 설정하기 위해 문서 편집기로 설정파일을 연다.
sudo vim /etc/samba/smb.conf

그 안에 다음과 같은 내용을 입력한다.

# 기본적인 설정
[global]
# 워크그룹이름은 맘대로 정한다.
workgroup = WORKGROUP
encrypt passwords = yes
# 접근을 허락할 아이피 범위
hosts allow = 192.168.
# 문자 인코딩 설정, 우분투는 utf-8을 기본적으로 사용하고
# 이것이 윈도우즈에서도 한글이 잘 깨지지 않는다.
unix charset=utf-8
dos charset=utf-8
#공유할 디렉토리 이름, 이것은 여러개를 만들 수도 있다.
[MyDoc]
comment = My Documents
path = /공유할/디렉토리
#읽기 전용으로 접근할지 여부
read only = no
browsable = yes


삼바의 설정은 매우 다양하게 할 수 있다.
아래에 다양한 삼바 설정을 설명했다.

삼바 설정이 끝났으면, 설정이 제대로 되었는지 검사한다.
sudo testparm

문제가 없으면 삼바를 실행한다.
sudo /etc/init.d/samba restart

우분투에서 패키지로 설치된 삼바는 컴퓨터가 켜질 때마다 실행될 것이다.

우분트 클라이언트에서 공유에 접근하는 법은 두가지이다.

첫째)
위치 메뉴 > 서버에 연결 을 선택한 후,
서비스 종류는 Windows공유를 지정하고,
사용자 이름과 연결에 사용할 이름 부분만 위에서 지정한 네트워크사용자아이디를 지정하면 된다.

둘째)
mount -t cifs //삼바서버아이피/삼바공유폴더이름 /공유가/지정될/로컬폴더 -o username=네트워크사용자아이디,password=비밀번호,iocharset=utf8,file_mode=0777,dir_mode=0777
-o 이후로는 띄어쓰기를 해서는 안된다.

윈도우즈에서 삼바 서버에 접근하려면,
네트워크 환경에서 새 연결을 설정하거나,
net use o: \\삼바서버아이피\삼바공유폴더이름 비밀번호 /user:네트워크사용자아이디
로 연결하면 되고,
삭제는 net use o: /delete
로 하면 된다.


====================================================================================

그외의 다양한 삼바 설정법은 다음과 같다.

▶ 네트워크 사용자 추가/편집/삭제 하는 법

☞ 네트워크 사용자 추가하기

sudo smbpasswd -a 네트워크사용자아이디
sudo vim /etc/samba/smbusers 를 한 후에, 아래의 내용을 추가한다.

네트워크사용자아이디 = "network username"

☞ 네트워크 사용자 편집

sudo smbpasswd -a 네트워크사용자아이디

☞ 네트워크 사용자 삭제

sudo smbpasswd -x 네트워크사용자아이디

----------------------------------------------------------------------------------
▶ 읽기 전용으로 폴더 공유하기 (인증=Yes)

sudo vim /etc/samba/smb.conf 로 설정파일을 열고

아래의 내용을 찾아서
security = user

아래처럼 바꾼다
security = user
username map = /etc/samba/smbusers

아래 내용의 앞에 있는 주석 표시를 제거한다.

;[homes]
;comment = Home Directories
;browseable = no
;valid users = %S
;writable = yes

삼바설정을 확인한다.
sudo testparm

삼바를 다시 시작한다.
sudo /etc/init.d/samba restart

----------------------------------------------------------------------------------
▶ 읽기/쓰기 권한으로 폴더 공유하기 (인증=Yes)

설정파일 안의 지정된 폴더에 아래의 옵션을 넣어준다.

(보기)

[MyFolder]
path = /home/my_id/my_shared_folder
writable = yes


----------------------------------------------------------------------------------
▶ 그룹 폴더들을 읽기 전용으로 공유하기 (인증=Yes)

sudo mkdir /home/group
sudo chmod 777 /home/group/
sudo vim /etc/samba/smb.conf

설정파일에서 아래의 내용을
security = user

아래처럼 바꾸고
security = user
username map = /etc/samba/smbusers

설정파일의 끝에 아래의 내용을 추가한다.

[Group]
comment = Group Folder
path = /home/group
public = yes
writable = no
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup


----------------------------------------------------------------------------------
▶ 그룹 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)

설정파일의 끝에 추가된 그룹 설정을 아래처럼 바꾼다.

[Group]
comment = Group Folder
path = /home/group
public = yes
writable = yes
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup

----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기 전용으로 공유하기 (인증=Yes)

[global]
security = share

[public]
comment = Public Folder
path = /home/public
public = yes
writable = no
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

아래처럼 nobody 계정을 만든다.

sudo smbpasswd nobody

----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)

[global]
security = share

[public]
comment = Public Folder
path = /home/public
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

----------------------------------------------------------------------------------
▶▶▶ 네트워크 프린터에서 인쇄하기

삼바 설정파일에 다음의 내용을 추가하고

printing = cups
printcap name = cups

프린터 관리 서비스를 다시 시작한다.

sudo /etc/init.d/cupsys restart


----------------------------------------------------------------------------------
▶▶▶ 웹을 통해 삼바 설정 관리하기 : SWAT : Samba Web Administration Tool

▶ INETD과 SWAT 를 설치한다.

sudo apt-get install netkit-inetd
sudo apt-get install swat


☞ inetd daemon 설정을 편집한다.

sudo vim /etc/inetd.conf

☞ 아래의 내용을 찾아서

<#off#> swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

☞ 아래처럼 바꾸어 준다.

swat stream tcp nowait.400 root /usr/sbin/swat swat

☞ 대몬을 재시작한다.

sudo /etc/init.d/inetd restart

☞ 만일, root비밀번호를 설정하지 않았다면, 아래처럼 설정한다.

sudo passwd root

http://localhost:901 주소로 접속한다.

댓글 2개: