★SAMBA
- 리눅스 서버에서 원격지의 리눅스 및 윈도우 를 비롯한 SMB/CIFS 프로토콜을 사용하는 다양한 운영체제의
클라이언트에게 파일 및 프린터 공유 서비스를 제공하는 오픈소스 프로그램이다.
- 마이크로소프트가 개발한 SMB(server message block)프로토콜을 사용. 현재는 CIFS이라는 이름으로 불린다
-최신 Samba는 윈도우 서버의 AD(Active Drectory)의 DC(Domain Controller)및 멤버 서버로서의 기능도 제공
★Samba서버의 대표적인 기능
- 리눅스 /유닉스 윈도우 클라이언트에 디렉터리 및 프린터 서비스 제공
- 윈도우 도메인에서의 Login을 통한 인증 제공
- 윈도우 NT 스타일의 PDC(Primary Domain Controller) 및 BDC(Backup Domain Controller)의 역할 제공
★서버 설치
Server-A(Samba server)
yum -y install samba samba-client samba-common samba-winbind
rpm -qa | grep samba
ls -l /etc/samba //주설정 파일 확인
ll /var/log/samba //로그가 저장되는 디렉토리 확인
ll /usr/sbin/{smbd,nmbd} //서버를 사용하기 위한 두개의 데몬 확인
★서비스 시작
service smb start
service smb status
chkconfig smb on
chkconfig --list smb
service nmb start
service nmb status
chkconfig nmb on
chkconfig --list nmb
ps -ef | grep smbd //프로세스 확인
ps -ef | grep nmbd //프로세스 확인
smbclient -L localhost //서버 작동 유무 확인 서버의 이름,버전,workgroup 정보 확인
nmblookup [HOSTNAME]
- samba서버의 netbios 이름으로 ip주소를 조회하는 프로그램 . 조회하면 HOSTNAME 서버의 IP주소를 알수있다
NetBIOS(Network Basic Input/Output System)
- Lan 환경에서 윈도우 컴퓨터들이 통신할때 사용하는 통신 서비스
nmblookup Server-A
yum -y install lsof // lsof 패키지 설치
lsof -i udp:137 // lsof를 통해 포트 137번을 확인하면 nmbd 데몬이 Netbios 이름 등록과 삭제에 사용하는
Netbios 이름 서비스가 작동 중임을 확인할 수 있다.
lsof -i udp:138 // lsof를 통해 포트 138번을 확인하면 nmbd 데몬이 Netbios 이름에 Datagram과 브로드캐스트를 주고받기 위해
사용하는 Netbios Datagram 서비스가 작동 중임을 확인할 수 있다.
lsof -i tcp:139 // lsof를 통해 포트 139번을 확인하면 smbd 데몬이 Netbios 세션 연결에 사용하는
Netbios 세션 서비스가 작동 중임을 확인할 수 있다.
lsof -i tcp:445 // lsof를 통해 포트 445번을 확인하면 smbd 데몬이 액티브 디렉토리 접근과 인증에
사용되는 microsoft-ds 서비스가 작동 중임을 확인할 수 있다
★Samba 서버의 종류
- Stand-alone 서버
- 도메인 멤버 및 도메인 컨트롤러 서버
★Samba Stand-alone 서버 설정
- 워크그룹 서버나 네트워크 환경에서 멤버로 사용되는 서버를 의미한다.
- 가장 많이 사용되는 Samba 서버의 역할이라고 할 수 있다.
- 일반적으로 클라이언트에게 디렉토리 및 프린터 공유를 제공하는
역할을 하는 Samba 서버를 의미한다.
★Samba 서버 설정
전역 섹션 설정
Samba 설정 파일은 세 개의 섹션으로 나누어져 있다.
- [global] - Samaba 서버 전체에 적용되는 환경을 설정하는 섹션
- [homes] - 사용자들의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션
- [printers] - 프린터에 대한 권한을 설정하는 섹션
vi /etc/samba/smb.conf // vi을 이용하여 Samba 서버 주 설정 파일을 수정
:57 // 글로벌 설정을 의미하는 섹션으로 이동 (57 [global])
:74 // Samba 서버가 속한 워크 그룹을 의미하며, 해당 그룹에 속한 클라이언트만이 서버에
접근이 가능하며, 공유그룹을 의미한다. (workgroup = MYGROUP)
★Samba 서버 설정 [global]
server string = Samba Server Version %v
-Samba서버를 설명하기 위해 사용
77 : netbios name =MYSERVER
-Samba서버의 Netbios 이름을 의미
79 : interfaces = l0 eth0 192.168.12.2/24 192.168.13.2/24
-인터페이스 지정 IP주소 뿐만 아니라 인터페이스 이름도 가능
80 : hosts allow = 127.192.12. 192.168.13
-Samba서버접속이 가능한 네트워크 주소를 지정할수 있다.
[Global]
workgroup : Windows의 작업 그룹 이름
server string : Windows 네트워크에 보이는 컴퓨터 설명 생략가능
netbios name : Windows Network에 참가하는 컴퓨터 이름
hosts allow : 삼바서버에 접속할 클라이언트 IP
[공유이름]
comment = 공유디렉토리 설명 (생략가능)
path = 공유할 디렉토리 절대 경로 (절대 경로)
read only = 디렉토리 읽기 쓰기 여부 yes는 읽기전용 no는 읽기 쓰기
guest ok = 게스트 사용자도 사용하게 할지 여부
log file = /var/log/samba/log.%m // 로그 파일의 위치 및 이름을 지정하는데, %m은 클라이언트의
NetBios 이름을 의미한다. 즉, 클라이언트 별로 로그가 기록된다.
max log size = 50 // 로그 파일의 크기글 지정하는데 단위는 킬로바이트(kb)다.
security = user // Smaba 서버 실행되는 모드를 의미하며, 모드는 사용자 레벨과 공유레벨 두 가지가 있다.
기본은 사용자 레벨이 사용되는데, Smaba 서버 접속 시 사용자 정보와 패스워드가 필요하다는 의미다.
passdb backend = tdbsam // Samba 서버의 사용자 정보를 저장할 데이터 베이스 백앤드를 의미하며,
tdbsam과 ldapsam 두 가지가 올 수 있다. 기본값은 tdbsam으로서 명령어 smbpasswd를 이용해
사용자 및 패스워드를 생성할 수 있다.
map to guest = Bad user //계정이 없는 로그인은 모두 guest계정으로 맵핑하라는 의미이다. 추가해주어야 한다.
★공유 디렉토리 설정
mkdir -p /samba/share //클라이언트에게 제공할 공유 디렉토리 생성
chmod -R 777 /samba/share //모든 권한 허용
vi /etc/samba/smb.conf //서버 주설정 파일 수정
path = /samba/share // share라는 섹션을 생성한 다음 공유할 디렉토리의 경로를 지정
writable = yes // 디렉토리에 대한 읽기 및 쓰기 권한을 부여
guest ok = yes // 공유 디렉토리로 접근하는 사용자의 이름과 패스워드가 필요 없다는 의미
guest only = yes // 공유 디렉토리로 접근하는 모든 사용자를 guest로 제한한다는 의미
create mode = 0777 // 공유 디렉토리에서 클라이언트가 생성하는 파일 및 디렉토리에
할당되는 권한을 의미
directory mode = 0777 // ..
service smb restart
service nmb restart
testparm //enter키 입력 결과 출력
<Client-Linux>
yum -y install samba-client
smbclient -L Server-A
-samba서버가 제공중인 공유 디렉토리를 확인하기 위해 명령어 smbclient에 server-A를 지정하면 그결과
에서 현재 공유중안 다랙토라 목록 share를 발견할수 있다.
cp /etc/passwd /root //테스트 파일을 복사
smbclient //SERVER-A/share //Server-A공유 디렉토리 share로 사용자 지정없이 접속을 시도
smb: \> put passwd
smb: \> mkdir test_dir
smb: \> ls
<Client-Win>
-윈도우 시작 메뉴의 검색창에서 실행을 입력해 samba서버의 ip주소와 디렉토리를 입력하고 확인을 클릭
-samba 서버에서 설정한 공유 디렉토리 share로 접근하면 디렉토리에 있는 파일이나 디렉토리를 확인할수 있다.
vi /etc/samba/smb.conf
[Security] //samba 설정 파일을 열어 먼저 공유를 정의하는 곳에 security라는 섹션을 생성
path=/samba/sec_share //공유 섹션이 실제 어느 디렉토리를 이용하는지 경로지정
writable=yes
create mode=0770
directory mode=0770
guest ok=no //인증을 거치지 않는 guest사용자들은 접속을 허용치 않는다
valid users=@smbgroup //이 디렉토리에 접근 가능한 사용자들은 모두 smbgroup에 속한 사용자들임을 지정
@은 그룹이름을 의미.
★공유디렉토리 인증 설정
groupadd smbgroup
mkdir /samba/sec_share
chgrp smbgroup/samba/sec_share
chmod 770 /samba/sec_share
useradd samba-user1
passwd samba-user1
smbpasswd -a samba-user1
- samba서버에 접속 가능한 사용자를 명령어 smbpasswd로 생성하는데 이사용자는 시스템의 /etc/passwd에 등록된
사용자여야 한다.
- a(add user) 옵션을 이용해 사용자의 패스워드를 변경함으로써 smbpasswd파일에 저장하라는 의미
pdbedit -L //samba 사용자 데이터베이스를 관리하는 명령어 pdbedit에 옵션 L(list) 사용하면 앞에서 생성한
사용자의 접오가 ID와 함께 나타난다.
usermod -G smbgroup samba-user1
service smb restart
service nmb restart
<Client-Linux>
cd /etc/
smbclient -L Server-A
smbclient //SERVER-A/Security -U samba-user1
-U 옵션을 이용하여 사용자 계정으로 공유 디렉토리 Security에 접속한다
smb: \> mkdir test // 디렉토리 생성 테스트
smb: \> ls // 생성 확인
smb: \> put passwd // 파일 업로드 테스트 (현재 경로 /etc)
smb: \> // 세션을 해제하지 말고 대기
<Server-A>
smbstatus Server-A
- 접속한 클라이언트의 IP주소와 접근한 공유 디렉토리 및 시간 등의 정보를 확인가능
<Client-Win>
\\100.100.100.110\ 실행창 입력
유저 아이디와 비밀번호 입력
'Server > Linux' 카테고리의 다른 글
xshell/ PXE & KICKSTART (0) | 2017.05.15 |
---|---|
xshell/ NFS (0) | 2017.05.14 |
xshell/ NTP (0) | 2017.05.11 |
xshell/ FTP, VSFTP (0) | 2017.05.11 |
xshell/ DHCP (0) | 2017.05.06 |