강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Sticky bit를 이용한 삼바 디렉토리 공유

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle63.gif

배철수 / 리눅스월드 발행인

 

삼바를 설치하면 리눅스에 대용량 하드를 설치해서 여러대의 윈98 피시에서 이 하드를 공유하게 할 수 있다는 것은 모든 리눅서는 잘 알고 있다. 그러나 대부분의 사람들은 삼바 설정 파일의 엄청난 복잡성 때문에 설치 후에도 어느 방식으로 관리 하는게 좋을지 난감하다.

하드디스크를 공유하는 경우 각자마다 따로 하드 공간을 할당하려면 디렉토리가 복잡해지고 그렇다고 한 디렉토리를 모두가 읽고 쓰게 만들자니 개인 파일 보호가 문제된다.

그래서 디렉토리 한 개를 모든 윈98 피시에 공유시키고 그 디렉토리에 누구나 파일을 넣을 수도 또 폴더를 만들 수도 있지만 지우는 것은 그 파일을 만든 사람이나 관리자만 지우게 할 수는 없을까? 이런 생각을 하게 된다. 하이텔이나 천리안의 게시판이 바로 이런 예이다. 누구나 글을 올릴 수는 있으나 지우는 것은 관리자와 글을 올린 사람만 가능하다.

삼바 설정방법에 보면 리눅스의 디렉토리 허가모드 중 sticky bit를 이용하는 방법이 있는데 바로 이런 경우에  사용한다. 리눅스 하드를 삼바를 써서 윈98에서 공유하는 경우 그 하드에 대한 접근 권한은 삼바에서의 설정만으로 가능하지 않다. 리눅스의 파일허가모드와도 일치해야 한다. 즉 어느 디렉토리를 모든 사용자가 읽고 쓰기가 가능하도록 삼바에서 설정했다 하더라도 리눅스에서 그 디렉토리의 허가모드가 “-rwxr--r--   1 bae    bae” 로 설정되어 있다면 이 경우는 계정이 “bae” 인 사람만 읽고 쓰기가 가능하다. 만약 모두가 이 디렉토리를 읽고 쓰게 하려면 “-rwxrwxrwx” 로 변경해야 한다.  

그런데 이렇게 해 놓으면  리눅스에 login 한 사람은 모두 그 디렉토리의 파일을 지울수 있게 되므로 파일 보호에 문제가 된다. 그래서 파일 보호에도 문제가 없고 사용도 간편한 해결책이 바로 sticky bit를 설정하는 방법이다.

Sticky bit는 리눅스의 /tmp 디렉토리에 사용된다.아래를 보자.

drwxrwxrwt  2root root   1024 Apr 26 08:22 tmp

즉 파일허가 모드는 777인데 끝에 t가 있는게 다르다. 이 의미는 누구나 이디렉토리에 쓸 수 있으나 지우는 것은 만든 사람만 가능하다는 의미다. 이제 이 sticky bit를 삼바 디렉토리에 사용하는 예를 들겠다.

Sticky bit 를 설정하는 방법은 파일 허가모드 앞에 1을 추가한다. 즉 위의 /tmp 디렉토리의 경우는 chmod 1777 /tmp”이다.

 

1. 삼바에대한 간단한 설명

삼바는 대부분의 사람이 잘 알고 있으므로 간단하게 설명한다.

1) 원 저자 : Andrew Tridgell
2) 현재 관리자 : samba team
3) 삼바 FTP 사이트

    ftp://samba.anu.edu.au/pub/samba

4)삼바에 관한 주요 정보 사이트 

   http://samba.canberra.edu.au/pub/samba
   
http://samba.org/samba

5)뉴스그룹 : comp.protocols.smb
6)현재 최신 버전

   2.0.6

 

2. 삼바 설치

1) 삼바 소스파일

-rw-r--r--   1 1002    1002    2267597 Nov 11 12:58 samba-2.0.6.tar.gz

2) 압축 해제

  tar zxvf samba-2.0.6.tar.gz

3)  cd samba-2.0.6/source
4)  ./configure
5)  make
6) make install

 

3. 파일 위치

1) 실행 파일 디렉토리 : /usr/local/samba/bin
2) 구성 파일 : /usr/local/samba/lib/smb.conf
3) man 파일 디렉토리 : /usr/local/samba/man

 

4. smb.conf 파일 만들기

이 파일은 설치 시에 자동으로 만들어 지지 않는다. Swat을 이용해 만들거나 직접 수정한다. 가장 쉬운 방법은 examples 디렉토리의 예를 복사해서 수정하는 것이다.

cp smb.conf.default /usr/local/samba/lib/smb.conf

아래에 자세히 설명한다.

 

5. 삼바 패스워드 추가

삼바는 리눅스 패스워드 파일과 별개로 /usr/local/
samba/private/smbpasswd 파일에서 패스워드를 관리한다.(예전에는 달랐다)

삼바를 사용하려면 윈98의 login 네임 및 패스워드와 같은 계정을 리눅스 패스워드 파일에 추가하고 다음에 smbpasswd 명령으로 삼바 패스워드를 만들어야 한다.(순서가 중요하다)

리눅스에서 계정과 패스워드를 만든 후 /usr/local/
samba/bin 디렉토리에서 아래 명령을 준다.

./smbpasswd -a hansol (hansol은 계정명)

반드시 윈도우, 리눅스, 삼바 세 계정과 패스워드를 일치시켜야 한다.

 

6. 삼바 가동

daemon으로 가동하는 방법이다. 아래 스크립트를 만든다

  #!/bin/sh
 /usr/local/samba/bin/smbd -D
 /usr/local/samba/bin/nmbd -D

이 스크립트를  레드햇이라면 rc.local에,  데비안이라면 rc.boot 디렉토리에 넣음.

부팅시 삼바가 가동 되면 ps ax 명령에 아래 두 줄이 나온다.

1134  ?  S    0:00 /usr/local/samba/bin/smbd -D
107  ?  S    0:00 /usr/local/samba/bin/nmbd -D

잘 가동이 되지 않으면 우선 /etc/hosts 파일을 본다.
여기에 호스트네임이 제대로 입력돼 있는지를 본다.

 

7. sticky bit 를 이용한 공유 설정 예

아래는 네 명의 사용자가 윈도우에서 리눅스의 한 개의 디렉토리(/home/pub/shared)를 공유하는 경우의 smb.conf 및 linux에서의 설정이다. 이 디렉토리는 네 명의 사용자가 공유하나 지우는 것은 파일이나 디렉토리를 만든 사람만 가능하다.

아래 설정은 윈98만 해당한다. 윈95는 다르다.

1)  smb.conf 내용

 [global]

workgroup = linuxlab
server string = Linux Samba Server
hosts allow = 192.168.1. 127.
load printers = no
printcap name = /etc/printcap
log file = /usr/local/samba/var/log.%m
max log size = 500
security = user
encrypt passwords = yes
socket options = TCP_NODELAY
interfaces = 192.168.1.0/24 192.168.2.0/24
os level = 33
preferred master = yes
dns proxy = no
debug level = 3

 [homes]
   comment = Home Directories
   browseable = no
   writable = yes

[public]
   comment = Public Stuff
   path = /home/pub/shared
   public = no
   writable = yes
printable = no
valid users = ohk bae mee hansol

*. create mask = 0744 를 넣어도 되나 기본으로 사용된다.

 

8. 공유 디렉토리(/home/pub/shared)허가 모드(sticky bit)

공유디렉토리를 특정그룹(여기서는 linuxlab)이 쓰기 권한을 갖도록 지정해야 한다. Linuxlab이라는 그룹을 먼저 만든다.(addgroup)그리고 디렉토리의 그룹을 linuxlab으로 바꾼다.(chgrp) 다음 sticky bit와 그룹에 write 권한을 준다.(chmod 1775 shared)

아래처럼 나와야 한다.

 drwxrwxr-t  14 root     linuxlab     1024
 Apr 22 11:17 shared

이렇게 설정하면 리눅스의 linuxlab라는 group에 속한 사람만이 이 디렉토리에 write 할 수 있다. 비록 삼바에서 이 디렉토리에 쓰기를 허용해도 리눅스의 허가가 우선한다. (smb.conf 에서 valid users에 속한 사용자를 group에 넣는다.)

 

9. group 설정

linuxlab이라는 그룹에 공유 사용자를 지정해야 한다. 왜냐하면 공유 디렉토리 소유자는 root이고 linuxlab 이라는 그룹에 write 권한을 주었기 때문이다. /etc/
group 파일에 아래처럼 지정한다.

 linuxlab:x:100:bae,mee,ohk,hansol

이제 네 사람만이 shared 디렉토리에 쓸수 있고 지우는 것은 만든 사람만 가능하다. sticky bit를 사용하는 이점은 사용자의 write 권한을 제거하려면 smb.c
onf를 수정해 삼바를 재 가동할 필요 없이 리눅스의 /etc/group 파일에서만 제거해 주면 된다는 점이다.



관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,070 명
  • 현재 강좌수 :  35,986 개
  • 현재 접속자 :  502 명