리눅스에서 smb 접속 - linugseueseo smb jeobsog

리눅스에서 smb 접속 - linugseueseo smb jeobsog

윈도우, 리눅스 OS 끼리 파일을 서로 옮길 경우 이 일이 얼마나 번거로운지에 동감할 것이다.

보통은 FTP, SFTP 서버를 열어두고 FileZilla 같은 파일공유 툴을 이용하여 옮겼을 것이다.

하지만 매번 프로그램을 실행해서 열어줘야되고, 무엇보다 폴더 시스템이 윈도우에 비해 너무 불편하다.

하지만 익숙한 윈도우 폴더에서 바로바로 파일을 리눅스로 옮길 수 있는 방법이 있는데 이번에 소개할 삼바가 바로 그것이다.

리눅스에서 smb 접속 - linugseueseo smb jeobsog

삼바(Samba)마이크로소프트와 인텔에서 개발한 SMB(Server Message Block) 네트워크 프로토콜을 이용해 윈도우와 유닉스계열의 운영체제나 다른 시스템 간의 자원을 공유할 수 있도록 만든 프로그램이다.

삼바는 윈도우 운영체제를 사용하는 PC에서 Linux 또는 UNIX 서버에서 접속하여 디렉터리 및 파일 공유, 프린터, CD-ROM, DVD-ROM, USB 공유하여 사용할 수 있도록 해준다.

GNU 라이선스가 부여된 삼바는 자유 소프트웨어이며 무료로 배포되어 누구나 사용할 수 있다.

리눅스에 삼바를 설치하게 되면 리눅스가 서버, 윈도우가 클라이언트가 되는 것이다. (반대도 가능하다)

삼바는 SMB 프로토콜을 이용해서 작동하기 때문에 해당 프로토콜이 설치된 시스템만 사용할 수 있다.

현재 SMB 프로토콜은 유닉스와 윈도 환경을 동시에 지원하는 CIFS(Common Internet File System)로 확장되었다. 

리눅스에서 smb 접속 - linugseueseo smb jeobsog
SMB : Server Message Block, 마이크로소프트사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 수 있도록 하기 위해 개발된 프로토콜
 
CIFS : Common Internet File System, 네트워크를 위한 SMB 파일 공유 프로토콜의 확장 버전 윈도우와 리눅스(유닉스)환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜

삼바가 확실히 편리하긴 하지만단점으로는, 보안이 중요한 회사에서는 잘 사용되지 않는 편이다.

예를들어 보안이 중요한 금융업계같은 경우, 공유폴더를 사용하지 않도록 지정되어 있기 때문이다.

이때는 번거롭더라도 sftp를 통해 공유해야 한다.


삼바(SAMBA) 설치 & 설정

삼바는 설치한다고 바로 적용되서 사용할 수 있는게 아니다. 아쉽게도 설정할 것이 몇몇 있다.

삼바를 설치하고 설정하는 순서는 크게 다음과 같다.

  1. Samba 설치
  2. 계정 등록
  3. 공유 디렉토리 설정
  4. 삼바 환경 추가 설정
  5. 윈도우에서 삼바 설정

약간 만져줘야 할 것이 많지만, 차근차근 설명을 따라오면 무리 없이 빠르게 구축할 수 있을 것이다. (화이팅!)

리눅스에서 smb 접속 - linugseueseo smb jeobsog

1. 삼바 설치

$ sudo apt-get -y install samba # 우분투 삼바 설치

$ yum -y install samba # 센토스 삼바 설치

2. 삼바 계정 등록하기

설치를 완료했으면, 이제 samba 서버로 접속할 samba 계정을 등록해야 한다.

리눅스 계정으로 samba 계정을 생성(등록)할 수 있다.

$ smbpasswd -a [사용자명]
리눅스에서 smb 접속 - linugseueseo smb jeobsog
$ sudo pdbedit -L # 삼바 서버에 등록된 유저를 확인
$ sudo pdbedit -L -v

smbpasswd 명령어

리눅스의 패스워드 및 전반적인 사용자 수정 정보를 담당하는 passwd 명령어의 삼바 버젼이라고 보면 된다.

삼바 사용자를 생성 및 삭제, 패스워드 변경, 활성 및 비활성화 등 전체적인 관련 정보를 변경한다.

옵션  설명
-a 삼바 사용자를 추가할 때 사용.
삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 한다.
-x 삼바 사용자를 제거할 때 사용
-d 삼바 사용자를 일시적으로 비활성화할 때 사용
-e 삼바 사용자를 활성화할 때 사용
-n 패스워드 없이 로그인이 가능하도록 할 때 사용.
smb.conf에 'null passwords = yes'라고 추가로 설정해야 한다.
$ smbpasswd -a inpa # → jhnyang를 삼바 사용자에 추가하면서 패스워드를 부여. jeff는 리눅스에 생성된 계정이어야 함.

$ smbpasswd inpa # → 삼바 패스워드를 변경

$ smbpasswd -x inpa # → 삼바 사용자를 제거

$ smbpasswd -d inpa # → 삼바 사용자를 비활성화

3. 공유 디렉터리 생성

윈도우에서 리눅스로 접근할 수 있는, 즉 삼바로 공유될 디렉터리를 하나 생성해 준다.

$ mkdir /smbdir

$ chmod 777 /smbdir # 권한 열기

4. 삼바 환경 설정

이제 삼바의 환경설정을 통해 어떤 폴더를 공유하고 싶은지, 사용자를 일일이 추가해서 접근 공간을 다르게 해줄건지, 아님 특정 IP대역을 다 허용할건지, 파일을 읽을수만 있게할건지 ..등등 설정을 지정해줘야 한다.

삼바 환경 설정 파일 위치
/etc/samba/smb.conf 
$ vi /etc/samba/smb.conf
리눅스에서 smb 접속 - linugseueseo smb jeobsog
리눅스에서 smb 접속 - linugseueseo smb jeobsog
리눅스에서 smb 접속 - linugseueseo smb jeobsog

위의 설정 파일을 오픈하면 기본적으로 [global], [printers], [home]3가지 구역이 존재한다.

각 구역을 필요에 따라 설정해줘야 한다.

  • [global] : 삼바 서버 전체의 환경설정
  • [homes] : 각 사용자가 서버의 홈디렉토리로 접근할 때 권한
  • [printers] : 프린터 관련 권한

설정 파일에서 [ ] 로 표기된 것은 각 Section을 나누기 위한 것이다.

위의 [global], [profiles], [printers] 등등 도 하나의 Section 이다.

맨 하단으로 커서를 이동하고 새로운 섹션을 추가해 아래의 내용을 입력한다.

[share] # [] 대괄호는 섹션을 정의, 윈도우에서 접근할 때 폴더 이름이 세션안의 문자열로 보인다. 보이고 싶은 이름을 적으면 된다.
comment = samba shared directory # 간단한 공유 폴더 설명
path = /smbdir # 공유 디렉토리 경로
read only = no # 읽기 전용
writable = yes # 쓰기 전용 
guest ok = no # 다른 사용자들도 이용할 수 있도록 설정
valid user = user1 # 공유 디렉토리를 이용할 수 있는 사용자를 설정
create mask = 0777 # 파일 허가권
directory mask = 0777 # 디렉토리 허가권
옵션 value 설명
comment (text) 공유 폴더에 대한 설명
path (text) 공유 폴더 경로
read only yes/no 공유 폴더를 읽기 전용으로 설정
writable, write ok yes/no 공유 폴더를 쓰기 가능으로 설정
valid users (id, id, ...) 공유 폴더 접근 가능 유저 목록
write list (id, id, ...) 공유 폴더 쓰기 가능 유저 목록
public, guest ok yes/no 게스트 이용 가능 여부
browsable yes/no 파일 목록을 보여줄 것인지 여부
printable yes/no 프린터 스풀 파일 지정
create mask, create mode (0644 / 0777 / ...) 생성 권한
force group (group, group, ...) 접근 가능 그룹 지정
directory mask (0644 / 0777 / ...) 공유 폴더 권한
읽기 전용으로만 사용하려면 writable옵션을 지워야하고,
쓰기(수정)을 같이 사용하려면 read only=no로 설정 후 writable=yes로 설정하면 된다.

혹시나 해서 global 섹션 설정이 필요한 사람들을 위해 옵션 내용을 남긴다.

더보기

[global]

  • workgroup = [작업 그룹명]
  • server string = [Windows Network에서 보여줄 Samba 서버에 대한 설명.]
  • wins support = [Samba서버에서 nmbd 데몬이 wins 서버의 역할을 할 수 있는지 여부를 지정 ( yes | no )]
  • wins server = [wins 서버의 IP를 지정하는 옵션]
  • dns proxy = [nmbd 데몬이 wins 서버 역할을 하고 등록되지 않은 Net BIOS 이름을 찾아줄 때 DNS 서버를 사용하여 NetBIOS 이름을 찾아줄 것인지의 여부 ( yes | no )].
  • interfaces = [바인딩할 특정 인터페이스/네트워크, 인터페이스 이름 또는 IP주소/넷마스크]
    Samba 서버 서비스를 네트워크 인터페이스별 제공할 때 사용. 지정하지 않으면 모든 인터페이스. ( ex:  lo eth0 192.168.12.1/24 )
  • bind interfaces only = ['interfaces' 옵션을 사용 유무 ( yes | no )]
    interfaces 옵션의 네트워크에 대해서 바인딩. Samba가 방화벽으로 보호되지 않거나 방화벽 자체인 경우 사용하도록 설정하는 것이 좋으나 동적, 비 브로드캐스트 인터페이스의 경우 정확하게 동작하지 않을 수 있음.
  • log file = [Samba 각 시스템에 대해 별도의 로그 파일을 사용]
  • max log size = [개별 로그 파일의 크기 제한(KB)]
  • syslog only = [syslog를 통해서 로그를 기록 유무 (yes | no)]
  • syslog = [syslog에 기록하는 로그 레벨]
    syslog로 삼바 로그를 저장하기를 원한다면 다음 매개 변수를 높은 값으로 설정.
  • server role = [서버 모드]
    "standalone server", "member server", "classic primary domain controller", "classic backup domain controller", "active directory domain controller". 대부분 "standalone sever"나 "member server"로 사용.  
    "Active Directory 도메인 컨트롤러"로 실행하려면 데이터베이스를 지우고 새 도메인을 만들려면 먼저 "samba-tool 도메인 프로비저닝"을 실행해야 한다.

5. 삼바 데몬 smbd 재시작

설정 변경 후 삼바 데몬 프로세스인 smbd를 재시작한다.

$ service smbd restart
리눅스에서 smb 접속 - linugseueseo smb jeobsog

6. Windows에서 Samba 연결

윈도우 폴더를 열고 왼쪽 사이드바에서 네트워크 탭을 오른쪽 클릭하여, [네트워크 드라이브 연결] 항목을 누른다.

리눅스에서 smb 접속 - linugseueseo smb jeobsog
리눅스에서 smb 접속 - linugseueseo smb jeobsog
리눅스에서 smb 접속 - linugseueseo smb jeobsog
리눅스에서 smb 접속 - linugseueseo smb jeobsog

\\192.168.56.101\share

네트워크 드라이브를 연결했으면 자격 증명을 입력하라고 뜨는데,

위에서 삼바 계정 등록 했었던 계정 아이디와 암호를 적어주면 된다.

리눅스에서 smb 접속 - linugseueseo smb jeobsog

그러면 정상적으로 섹션에 연결된걸 볼 수 있다.

$ smbstatus # 삼바 서버와 클라이언트의 연결상태 보기
리눅스에서 smb 접속 - linugseueseo smb jeobsog

잘 연결되었는지 테스트를 하기위해서 윈도우 폴더에 아무 폴더를 복사해 놓자.

리눅스에서 smb 접속 - linugseueseo smb jeobsog

그리고 리눅스에서 공유폴더에 들어가 윈도우에서 복사한 파일이 잘 들어 있는지 확인해 보자.

리눅스에서 smb 접속 - linugseueseo smb jeobsog

이 글이 좋으셨다면 구독 & 좋아요

여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.

리눅스에서 smb 접속 - linugseueseo smb jeobsog