
Samba와 SMB 파일 공유
삼바 · Samba Server
Samba는 SMB 등의 프로토콜을 구현하여 파일·프린터 공유와 관련 기능을 제공하는 소프트웨어이다. 서버의 파일 시스템을 클라이언트에 공유 이름으로 제공하며 SMB 인증·공유 정책·실제 파일 권한을 각각 적용한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
로고: Samba Team 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.
01무엇이고, 어떤 일을 하나
- 클라이언트의 SMB 요청을 서버 파일 연산으로 연결한다.
- 공유별 사용자·읽기·쓰기·파일 생성 정책을 적용한다.
- 서버의 계정·· 등과 요청 주체를 연결한다.
02어떤 순서로 동작하나
- 세션 인증
클라이언트가 SMB 서버에 접속하고 구성한 계정 체계로 인증한다.
- 공유 선택
요청한 공유 이름을 서버 path에 연결하고 ·읽기 전용 등의 공유 정책을 적용한다.
- 파일 접근
실제 작업 주체의 UID·GID와 DAC·· 조건으로 파일 연산을 수행한다.
- 생성·응답
새 파일이면 적용되는 생성 모드·상속 정책을 계산하고 자료 또는 오류를 클라이언트에 반환한다.
03먼저 알아둘 용어와 구성요소
- Samba는 SMB 프로토콜을 구현하며 운영체제인 척해야만 동작하는 서비스가 아니다.
- 독립 서버 구성에서는 계정과 Samba 암호 데이터베이스를 연결해 사용할 수 있다.
- 공유의 이름은 클라이언트가 접근하는 이름이고 path는 서버의 실제 경로다.
- 는 접근할 주체를 제한하고 read only는 공유의 기본 쓰기 정책, write list는 쓰기 허용 사용자 목록에 관여한다.
- 은 파일 작업의 그룹 해석에 영향을 주므로 접근 그룹과 함께 설계한다.
- 일반적인 Samba UNIX 모드 계산에서 create mask는 비트 AND로 후보 권한을 제한하고 force create mode는 이어서 OR로 비트를 추가한다. 디렉터리는 directory mask 계열로 따로 다룬다.
smbclient 전송과 CIFS 마운트를 같은 파일 서비스의 두 경로로 읽기
SMB 인증·파일 전송·로컬 마운트 표시를 구별하고 각 결과가 증명하는 접근 범위를 정한다.
실습 구성과 전제
- 첫 화면은 smbclient의 대화형 파일 전송, 두 번째는 커널 CIFS 마운트 조회 사례다. 화면의 계정과 주소를 아래에서는 실습 예시로 대체한다.
- 준비된 SMB 서버·공유·테스트 파일이 있어야 한다. 암호를 명령 인수나 본문에 적지 않고 대화형 입력 또는 별도 보호된 자격 정보 방식을 사용한다.
공유에 접속한 뒤 실제 파일 전송 결과를 읽는다
- smbclient의 로그인 성공은 세션을 얻었다는 뜻이다. put 이후 전송 바이트와 원격 ls 결과를 확인해야 파일 생성 권한과 결과를 연결할 수 있다.
- 화면에서는 hello.txt 업로드 뒤 목록에 6바이트 파일이 보인다. 공유 전체의 모든 경로에 쓰기가 허용된다는 뜻은 아니다.
bashsmbclient //192.0.2.20/lab-share -U labuser # smb 프롬프트에서: ls # 준비한 무해한 파일만 전송: put lab.txt주소·공유·계정을 재구성한 예시다. 암호는 프롬프트에서 입력한다.
원본 크기로 보기 ↗- smbclient의 대화형 프롬프트에서 put hello.txt가 실행된다.
- 이어지는 ls 목록에 hello.txt 6바이트와 다른 파일 2156바이트가 보인다.
확인 기준업로드가 성공했더라도 서버 파일 소유자··다른 디렉터리 권한은 별도로 확인한다.
마운트가 로컬 경로에 제공하는 인터페이스를 읽는다
- CIFS 마운트는 SMB 파일 서비스를 경로 아래에서 일반 파일 연산처럼 사용하게 한다. 서버 저장 장치의 NTFS를 ext4로 바꾸는 작업은 아니다.
- 마운트 출력의 vers는 협상된 프로토콜, rw는 해당 마운트의 읽기·쓰기 모드다. uid·gid·file_mode 등은 클라이언트가 권한을 표현·검사하는 방식과 관련되며 서버의 접근 허용을 무조건 덮어쓰지 않는다.
원본 크기로 보기 ↗- 원격 공유가 /home/win_share에 type cifs로 연결되어 있다.
- 옵션에는 rw, vers=3.1.1, uid=0, gid=0과 file_mode·dir_mode=0755가 보인다.
확인 기준rw 마운트라는 표시만으로 서버가 쓰기를 허용했다고 단정하지 않는다. 서버 공유 정책·계정 권한과 실제 연산 결과를 함께 본다.
같은 파일을 서비스와 경로 양쪽에서 대조한다
- 원격 목록과 마운트 경로의 stat를 비교하면 같은 파일이 보이는지와 크기를 확인할 수 있다. 필요하면 무해한 테스트 파일을 내려받아 해시로 내용도 대조한다.
- 인증 실패, 공유 경로 오류, 개별 파일 거부를 구별한다. 디렉터리 목록 성공과 새 파일 생성 성공은 서로 다른 요청이다.
bashfindmnt -t cifs stat /mnt/lab-share/lab.txt sha256sum /mnt/lab-share/lab.txt이미 마운트된 실습 경로를 조회하는 예시다.
확인 기준양쪽에서 크기는 같은데 내용이 의심되면 해시와 읽기 결과를 비교한다. 데이터 변경이 동시에 일어나는 환경에서는 관찰 시각도 기록한다.
실습에서 확인한 동작 원리
- SMB 클라이언트 세션과 CIFS 마운트는 같은 파일 서비스에 접근하는 다른 인터페이스다.
- 인증, 공유 접근, 파일별 권한, 실제 전송 결과를 따로 확인해야 성공 범위를 정확히 말할 수 있다.
04예제로 따라가기
- 후보 모드 0666, create mask 0640, force create mode 0020인 단순 UNIX 모드 모델은 (0666 AND 0640) OR 0020=0660이다.
- 계정의 nologin 셸은 대화형 로그인을 제한하지만 별도 SMB 인증과 파일 작업 허용을 자동으로 모두 없애지는 않는다.
- 공유 목록이 보이는 것과 그 안의 파일 읽기·쓰기·삭제가 가능한 것은 서로 다른 검사 결과다.
05혼동하기 쉬운 점과 확인 기준
- 상속·inherit permissions·VFS 모듈 등 설정은 생성 정책을 바꿀 수 있다. mask 계산은 해당 경로를 사용하는 구성의 설명이지 모든 SMB 서버의 보편 결과가 아니다.
- 공유 목록을 조회한 성공은 특정 파일의 읽기·쓰기·삭제를 시험한 결과가 아니다. 공유 진입 뒤 요청 주체와 서버 경로 권한을 연결한다.
- SMB 서명은 메시지 무결성, SMB 암호화는 전송 내용 보호와 관련된다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.