삼바(SAMBA)란?
(1) 개요: 마이크로소프트와 인텔은 윈도우시스템이 다른 시스템의 디스크나 프린터같은 자원을 공유할 수 있도록 Server Message Block(SMB)이라는 프로토콜을 개발하였는데, 삼바란 이 SMB를 이용하여 리눅스와 윈도우와의 자료 공유 및 하드웨어를 공유할 수 있도록 해준다. 현재 마이크로소프트에서는 SMB라는 이름보다는 좀 더 범위가 큰CIFS(Common Internet File System)라는 프로토콜로 부른다. 이 프로토콜은 SMB 프로토콜에 LanMana ger와NetBIOS 프로토콜까지 포함한다.
(2) 삼바의 기능
1) 리눅스파티션과 윈도우와의 공유
2) 윈도우파티션과 리눅스와의 공유
3) 리눅스의 프린터와 윈도우와의 공유
4) 윈도우의 프린터와 리눅스와의 공유
2. 삼바(SAMBA)의 설치
(1) rpm패키지로 설치하기
1) 설치의 확인
rpm -qi samba 나 rpm -qa |grep samba 명령등을 내려 삼바가 설치되어 있는지 확인한다.
(2) 환경파일: smb.conf
1) 개요: smb.conf는 삼바의 환경설정파일로 파일안의 구성은 win.ini와 비슷하다. 크게 Global Setting과 Share Denition으로 나누고 다시 각 내용은 [] 기호를 이용하여 섹션(Section) 으로 구분한다.
2) 역할: 삼바를 제어하는 환경파일이다. 이 파일에서 외부와 공유시킬 시스템 자원과 어떠한
제약을 할 것인지를 지정한다.
3) 위치: 보통 /etc디렉토리에 위치하나 배포판에 따라 /etc/samba디렉토리에 위치할 수도 있다.
4) 파일내부의 유형
ㄱ. #으로 시작하는 행: 이 행은 주석처리되어 무시된다.
ㄴ. ;으로 시작하는 행: 이 행들도 주석행으로 간주되어 무시된다. 보통 이런 행은 설정행이 작동하지 않도록 하는데 사용된다. ;대신에 #을 사용해도 된다.
이 두 가지 유형의 주석이 사용되는 이유는 #은 유닉스에서 사용하는 주석이고. ;는 윈도우에서 사용하는 주석이라 두 가지 모두 사용한다.
ㄷ. [ ]을 사용하는 행: 섹션을 정의한다. 하나의 섹션이 정의된 후 그 다음 섹션이 정의될 때까지의 행들은 해당 섹션에 속한다.
ㄹ. name = value 행: 사용하는 옵션과 해당값을 설정하는 행들이다.
5) 기본적인 섹션
ㄱ. [global]: 삼바서버의 전체적인 환경설정을 담당하는 섹션
ㄴ. [homes]: 사용자들이 자신의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션
ㄷ. [printers]: 프린터관련 권한을 설정하는 섹션
(2) 공유 정의(Share Definitions) : 삼바 서버에 접속할 수 있는 사용자의 홈디렉토리 설정
1) [homes]
comment = Home Directories
browseable = no
writable = yes
=> 사용자의 홈 디렉토리 서비스 사용을 위한 기본적인 설정을 해주는 항목이다. comment는 간단한 설명문, browseable은 공유이름을 브라우저에 표시할 수 있게 하는 기능, writable은 쓰기허용을 설정한다.
2) [netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
=> 도메인 로그온을 사용하고자 할 때 사용한다. 일반적으로 사용하지 않는다.
3) [Profiles]
path = /home/profiles
browseable = no
guest ok = yes
=> 특정한 프로파일을 지정할 때 사용한다. 일반적으로 사용하지 않는다.
4) [printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
=> 삼바프린터를 네트워크 공유프린터로 사용하고자 할 경우에 설정한다. BSD계열의 프린터 시스템을 사용하면 일일이 프린터를 정의하지 않아도 된다.
5) [tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
=> 여러 사람들이 파일을 공유할 목적으로 유효하게 사용할 수 있다. 현재 기본값인 /tmp는 임시작업공간 디렉토리이므로 /var/tmp처럼 다른 디렉토리를 만들어서 사용하도록 한다.
6) [public]
comment = Public Stuff
path = /home/samba
public = yes
read only = yes
create mask = 0777
directory mask = 0777
write list = @staff
=> 공개적으로 접근이 가능한 디렉토리이지만 staff그룹에 있는 사용자들을 제외한 사용자들은 오직 읽기만 사용가능하다.
7) 사용자정의 섹션
예) [posein]
comment = shared-files in posein directory => 간단한 설명이다.
path = /home/posein/pds => 공유디렉토리의 경로를 지정한다.
read only =no => 공유디렉토리를 읽기만 가능하게 할지를 지정한다.
writable = yes => write ok = yes와 같은 옵션으로 쓰기가 가능하다.
valid user = posein xitem prehee =>서비스디렉토리에 사용가능한 사용자를 말하며, 만약 이 옵션이 생략되면 모든 사용자가 접근할 수 있다.
public = no => guest ok와 같은 옵션으로 no로 설정하면 다른 사용자들은 이용할 수 없고 개인사용자만 사용할 수 있게 된다.
browseable = no => 이용 가능한 공유리스트를 보여줄 것인가를 지정하는 것으로 no로 지정하면 리스트를 보여주지 않는다.
printable = no => 서비스로 지정된 디렉토리에 스풀파일을 지정할 것인가를 지정 는 것으로, 프린터 공유 디렉토리가 아니므로 대부분 no로 설정한다.
create mask =0765 => create mode와 같은 옵션으로 파일을 생성할 때 사용되는 모드를 나타낸다.
(참고) samba 에서 공유디렉토리를 지정할 때 사용하는 옵션 설명
- read only : 공유 디렉토리를 읽기만 가능하게 할 것인지를 결정
- writable, write ok : 공유 디렉토리를 쓰기 가능하게 할 것인지를 결정
- valid users : 공유 디렉토리에 로그인할 수 있는 사용자를 결정
- public, guest ok : 다른 사용자들이 이용하게 할 지를 결정
- browseable : 공유 디렉토리의 리스트를 보여줄 지를 결정
- printable : 공유 디렉토리에 스풀 파일을 지정할 것인지를 결정
- path : 공유할 디렉토리의 절대경로를 지정
- comment : 간단한 설명을 적음
- create mask, create mode : 파일을 생성할 때의 모드를 결정. umask값형태로 지정.
- write list : 쓰기가 가능한 특정 사용자를 지정
5. 삼바 User레벨로 사용하기
(1) User레벨관련 주요 파일 분석
1) /etc/samba/smb.conf
ㄱ. 설명: 삼바의 환경설정파일로 크게 두 개의 섹션으로 구분되어 있다.
ㄴ. Section
a. [global] : 삼바와 관련된 전체적인 환경설정을 하는 부분으로
b. [share definition] : 공유영역으로 여러 섹션이 존재한다. 주요 섹션은 다음과 같다.
- [homes] : home디렉토리와 관련된 설정을 할 수 있다.
- [printers] : 프린터와 관련된 설정을 할 수 있다.
- [tmp] : /tmp 디렉토리와 관련된 설정을 할 수 있다.
ㄷ. magic cookies: 삼바의 smb.conf에서도 아래의 magic cookies를 사용할 수 있다.
%u : 현재 사용중인 유저
%g : 현재 사용중인 유저 그룹
%m : 클라이언트의 NetBIOS이름
%v : 버전
%h : 호스트이름
%p : 서버의 홈디렉토리 경로
%d : 서버의 프로세서ID
%S : 현재 사용되는 서비스 이름
%P : 현재 사용되는 서비스의 루트 디렉토리
%U : 세션의 유저
%G : 셔션의 유저그룹
%H : %u로 주어진 유저의 홈디렉토리
%L : 서버의 NetBIOS이름
%M : 클라이언트 머신 이름
%N : NIS 홈디렉토리 서버의 이름
%I : 클라이언트 머신 IP
%T : 날짜와 시간
2) /etc/samba/smbusers : 삼바사용자들을 설정하는 파일이다.
3) /usr/bin/smaadduser : 삼바사용자들의 패스워드를 등록하는 명령이다.
4) /var/log/samba : 삼바의 로그가 기록되는 파일이다.
5) /var/spool/samba : 프린터의 스풀디렉토리이다.
(2) 삼바서버의 인증레벨
1) 설명: smb.conf파일의 [global]섹션의 security항목에서 설정한다.
2) security 레벨의 설정
ㄱ. share : 인증과정을 거치지 않고 접근이 가능하다. smb.conf파일에서 hosts allow항목에 지정
된 호스트라면 비밀번호없이 삼바를 사용할 수 있다.
ㄴ. user
a. 설명: 사용자의 인증을 거치는 레벨이다.
b. 윈도우 사용자의 접속법 : 삼바서버에 설정한 계정과 패스워드로 접속한다.
c. smb.conf파일에서의 설정
- [global] 섹션의 encrypt passwords = yes, smb passwd file = /etc/smbpasswd 설정을 추가로 해야 한다.
d. 삼바의 사용계정: /etc/passwd에 있는 계정이어야 한다.
e. 삼바사용자의 지정: smbpasswd 명령을 이용하여 사용자 계정과 비밀번호를 설정한다.
ㄷ. server
a. 설명: 사용자 정보를 담고 있는 윈도우서버와 같이 다른 운영체제가 삼바서버에 대한 사용자와 패스워드를 인증을 전달하는 방법이다.
b. smb.conf파일에서의 설정: password server 지시자에 인증할 서버의 IP를 적는다.
ㄹ. domain : 삼바서버가 윈도우 서버의 도메인 컨트롤러에 사용자명과 패스워드를 전달하여
인증하는 방법으로 server레벨과 비슷하다.
- samba 설치 여부 확인
# rpm -qa | grep samba
- samba 설치
# yum -y install samba
samba | SMB 서비스 네트워크 데몬 및 기본 유틸리티 포함 |
samba-client | 공유 네트워크 내에 있는 서버리스트 출력 |
samba-common | 설정 파일이나 설정 유틸리티, Man 페이지 포함 |
- samba 사용자 추가
# smbpasswd -a 사용자계정 (리눅스 계정과 동일해야함)
- 공유폴더 생성 및 권한부여 - 윈도우에서 폴더 권한
# mkdir 공유폴더명
# chmod 777 공유폴더명
- samba 설정 파일 수정
ls /etc/samba
lmhosts smb.conf smbusers
lmhosts | 공유 네트워크 내에 있는 서버리스트 정보을 담은 파일 |
smb.conf | Samba 서버 설정 파일 |
smbusers | Samba 유저의 별칭을 담은 파일 |
# vi /etc/samba/smb.conf
=> workgroup = WORKGROUP (내컴퓨터-속성-작업그룹 명으로 수정)
=> 문서 가장 아래쪽에, 내가 생성한 공유 폴더에 대한 설정 추가
[share〕
comment = share
path = /home/share
writable = yes
create mask = 0777
directory mask = 0777
write list = 사용자계정
- 방화벽 samba 포트 허용 및 재시작
# vi /etc/sysconfig/iptables
=> -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
=> -A INPUT -m state --state NEW -m udp -p udp --dport 137:139 -j ACCEPT
=> -A INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT
- Centos7 버전부터 명령어 바뀜 - 기존처럼 iptables 이용
- 방화벽 정지
systemctl stop firewalld
systemctl stop ip6tables
#리부팅 뒤에도 실행 안되게끔
systemctl disable firewalld
systemctl disable ip6tables
- iptables 기본으로 사용할수 있게 설정
# systemctl enable iptables
- iptables 서비스 시작
# systemctl start iptables
- 정상작동 확인
# iptables -nL
selinux 설정 해제하기 |
selinux 란 리눅스에 보안을 책임지는 프로그램이다. selinux가 활성화 되어 있어 있으면 접근 권한이 설정이 안되어 있다는 오류 메세지를 받을 것이다. selinux의 설정을 해제해 주면된다. 방법 1. vi 를 통해 "/etc/selinux/config" 에 접속한다. 2. selinux 를 화면과 같이 disabled 하면 된다. # vi /etc/sysconfig/selinux SELINUX=disabled 로 바꾸어준다. 명령어(바로 적용) 켜기 : # setenforce 1 끄기 : # setenforce 0 추가 설명 ** 방화벽 samba 포트 허용 안될 시 - UI프로그램임 없으면 다운 # system-config-firewall => samba 체크 => apply [root@ns1 log]# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted ** selinux 보안 해제 => 사용하지 않는 편이 |
- samba 서비스 재시작
# systemctl restart smb
# systemctl enable smb
# systemctl status smb
# reboot
'Server (LInux & Windows) > Centos(센토)' 카테고리의 다른 글
(Centos 6.4) Chrome 설치하기 (0) | 2014.02.12 |
---|---|
(Centos 6.4) EPEL 를 이용한 와인 (Wine) 설치시 오류 발생 (0) | 2014.02.12 |
(CentOS 6.4) 영문 리눅스에서 한글 키보드 적용 (0) | 2014.02.12 |
(Centos 6.4 ) FTP 설치 및 설정법 (VSFTP 데몬 - vsftpd) (0) | 2014.02.12 |
(Centos 6.4) Web 서버 설치 (0) | 2014.02.04 |
댓글