5 min read

CIFS (SAMBA) 파일공유

개인용 NAS에서 가장 많이 사용되는 파일공유 기능이 CIFS/SMB이다.
윈도우 파일 공유 기능이 CIFS이며, 사용하며, 이를 리눅스로 구현한 프로젝트가 SAMBA이다.

CIFS/SMB를 활성화하려면 Services-CIFS/SMB 설정으로 들어간다.

CIFS/SMB

우선 우상단의 Enable 체크박스를 활성화해 준다.
NAS4Free에서 서비스 데몬으로 굴러가는 기능 대부분은 이렇게 Enable을 체크해줘야 작동한다.

이후 설정이 여럿 있는데, 필수적인 것만 간단히 설명한다.

  • Authentication : Local User를 선택하면 Access-Users 에서 지정해 준 사용자 계정을 사용한다. 기업용 Active Directory 서버 연동도 가능하다.
  • Server/Client Max/Min Protocol : 기본값은 자동 협상으로 결정이다. 윈도우 구버전과 호환을 위해 기본값으로 냅둔다.
  • NetBIOS name : 윈도우 탐색기에서 표시되는 PC 이름이다.
  • Workgroup : 윈도우에서 따로 설정하지 않았다면 기본값을 쓰면 된다.
  • Dos charset : 한글 파일명 호환을 위해 CP949를 선택한다. 윈도우가 유니코드 지원하면 알아서 유니코드 쓴다.
  • Guest Account : 계정이 없는 경우 손님 계정을 지정할 수 있다. ftp로 둔다.
  • Map to Guest : 게스트 로그인을 허용할거면 Bad User, 허용하지 않으려면 Never로 둔다.
  • Store/Mapping DOS attributes : 파일생성 시 권한 항목을 참고하라.
  • Asynchronous I/O (AIO) : 멀티쓰레드 기능이다. 체크해서 활성화한다.

설정을 다 했으면 Save & Restart 버튼을 클릭해서 설정을 반영한다.
Services 메뉴를 클릭해서 서비스 상태를 보면 CIFS/SMB 서비스에 녹색 체크가 들어오는 것을 확인할 수 있을 것이다.
빨간색 X자가 보인다면 설정에 문제가 있어서 서비스 데몬 실행에 실패한 것이다.

SMB 파일 공유는 활성화했지만 아직 공유 폴더를 추가하지는 않은 상태다. Services-CIFS/SMB 메뉴의 Shares 탭으로 들어간다.
공유 폴더 목록이 뜨는데 현재는 아무것도 없을 것이다. 테이블 우측의 + 를 클릭하여 공유 폴더를 추가해 준다.

CIFS/SMB

직관적인 항목은 설명은 제외한다.

  • Name : 윈도우 탐색기에서 보게 될 공유폴더 이름을 설정한다.
  • Comment : 알아보기 쉽도록 설명을 입력한다.
  • Path : 공유할 디렉터리 절대경로를 입력한다. … 버튼을 눌러서 탐색기를 이용하면 편리하다.
  • Browseable : 윈도우 탐색기에서 목록을 볼 수 있는지 여부이다. 체크를 풀면 목록에 안 뜨고, 경로를 알아야만 들어갈 수 있다.
  • Inherit permission : 파일생성 시 권한 항목을 참고하라.

설정이 완료되었으면 Add를 클릭하여 공유항목을 추가해 준다. 이후 Apply changes를 클릭하여 설정을 반영해 준다.


파일생성시 권한

Inherit permission을 사용하지 않는 경우

일반적인 xNIX 권한 설정 규칙을 따르게 된다.

  1. 파일 권한 기본값 0666, 디렉터리 권한 기본값 0777 에서 시작
  2. 파일은 SAMBA ARSH 매핑 방법에 따라 execute bit 설정
  3. CREATE MASK (기본값 0744) 또는 DIRECTORY MASK (기본값 0755) 적용
  4. FORCE CREATE MODE 또는 FORCE DIRECTORY MODE 적용 (기본값 둘 다 0000)

Inherit permission을 사용하는 경우

Inherit permission을 켜게 되면, MASK와 FORCE MODE를 무시하고 상위 디렉터리의 권한을 그대로 사용하게 된다.

  1. 상위 디렉터리의 권한을 복사해옴
  2. 파일은 execute bit를 모두 해제한 뒤, SAMBA ARHS 매핑 방법에 따라 재설정

SAMBA ARSH 매핑 방법

윈도우는 DOS시절부터 파일에 보관(Archive), 읽기전용(Read-only), 시스템(System), 숨김(Hidden) 속성을 부여하고 있다.
이 속성을 xNIX 시스템에서 저장하는 방법이 마땅치 않기 때문에 매핑해서 저장해 줘야 하는데, 이 과정이 좀 복잡하다.

SAMBA는 ARSH 권한을 다음과 같이 xNIX 파일 권한으로 매핑한다.

  • 보관 : 소유자(Owner) 실행권한
  • 시스템 : 그룹(Group) 실행권한
  • 숨김 : 다른 사용자(Others) 실행권한
  • 읽기 전용 : 쓰기권한

이 방법은 호환성이 좋지만, 일반 파일에도 실행권한이 부여되므로 관리 문제가 발생하게 된다.
SAMBA 기본값은 보관, 읽기전용 속성을 매핑하며, 시스템, 숨김 속성은 매핑하지 않는다.

NAS4Free에서 Mapping DOS permission을 체크하면 4개 속성을 모두 매핑하게 되며, 체크 해제하면 SAMBA 기본값대로 2개를 매핑하게 된다.
이 때 보관 속성이 문제가 되므로, 이 매핑을 해제하려면 Auxiliary parameters에 수동으로 다음 설정을 입력해 주면 된다.

map archive = no
map system = no
map hidden = no
map readonly = yes

Store DOS attributes 옵션을 활성화하는 경우, ARSH 퍼미션을 별도의 UFS 메타데이터로 저장하게 된다.
가장 안전한 방법이지만, 메타데이터를 지원하지 않는 시스템과는 호환되지 않으므로 주의해야 한다.