1.11. 사용자가 Samba 서버에서 디렉토리를 공유 가능

Samba 서버에서는 사용자가 루트 권한 없이 디렉터리를 공유할 수 있도록 구성할 수 있습니다.

1.11.1. 사용자 공유 기능 활성화

사용자가 디렉토리를 공유할 수 있으려면 관리자가 Samba에서 사용자 공유를 활성화해야 합니다.

예를 들어 로컬 example 그룹의 멤버만 활성화하여 사용자 공유를 생성하려면 다음을 수행합니다.

절차

  1. 로컬 example 그룹이 없는 경우 해당 그룹을 생성합니다.

    # groupadd example
  2. Samba에서 사용자 공유 정의를 저장하고 권한을 올바르게 설정하도록 디렉터리를 준비합니다. 예를 들어 다음과 같습니다.

    1. 디렉터리를 만듭니다.

      # mkdir -p /var/lib/samba/usershares/
    2. example 그룹에 대한 쓰기 권한을 설정합니다.

      # chgrp example /var/lib/samba/usershares/
      # chmod 1770 /var/lib/samba/usershares/
    3. Sticky bit를 설정하면 사용자가 이 디렉터리의 다른 사용자가 저장한 파일의 이름을 변경하거나 삭제할 수 없습니다.
  3. /etc/samba/smb.conf 파일을 편집하고 [global] 섹션에 다음을 추가합니다.

    1. 사용자 공유 정의를 저장하도록 구성한 디렉터리의 경로를 설정합니다. 예를 들어 다음과 같습니다.

      usershare path = /var/lib/samba/usershares/
    2. 이 서버에서 만들 수 있는 Samba 공유 사용자 공유 수를 설정합니다. 예를 들어 다음과 같습니다.

      usershare max shares = 100

      usershare max shares 매개변수에 기본값 0을 사용하는 경우 사용자 공유가 비활성화됩니다.

    3. 선택적으로 절대 디렉터리 경로 목록을 설정합니다. 예를 들어 Samba가 /data/srv 디렉토리의 하위 디렉터리만 공유할 수 있도록 하려면 다음을 설정합니다.

      usershare prefix allow list = /data /srv

    설정할 수 있는 추가 사용자 공유 관련 매개변수 목록은 smb.conf(5) 도움말 페이지의 USERSHARES 섹션을 참조하십시오.

  4. /etc/samba/smb.conf 파일을 확인합니다.

    # testparm
  5. Samba 구성을 다시 로드합니다.

    # smbcontrol all reload-config

    이제 사용자가 사용자 공유를 생성할 수 있습니다.

1.11.2. 사용자 공유 추가

Samba에서 사용자 공유 기능을 활성화한 후 사용자는 net usershare add 명령을 실행하여 root 권한 없이 Samba 서버의 디렉토리를 공유할 수 있습니다.

net usershare add 명령의 개요입니다.

net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]

중요

사용자 공유를 생성할 때 ACL을 설정하는 경우 ACL보다 먼저 comment 매개변수를 지정해야 합니다. 빈 주석을 설정하려면 이중 따옴표로 빈 문자열을 사용합니다.

사용자가 사용자 공유에 대해 게스트 액세스를 활성화할 수 있습니다. 관리자가 사용자 공유 영역의 usershare allow guests = yes/etc/exporter/ECDHE.conf 파일의 [global] 섹션에 있는 경우에만 활성화할 수 있습니다.

예 1.5. 사용자 공유 추가

사용자가 Samba 서버에서 /srv/samba/ 디렉터리를 공유하려고 합니다. 공유 이름은 example 이고, 주석을 설정하지 않으며, 게스트 사용자가 액세스할 수 있어야 합니다. 또한 공유 권한은 AD\Domain Users 그룹에 대한 전체 액세스 권한과 기타 사용자의 읽기 권한으로 설정해야 합니다. 이 공유를 추가하려면 사용자로 실행합니다.

$ net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes

1.11.3. 사용자 공유의 설정 업데이트

사용자 공유의 설정을 업데이트하려면 net usershare add 명령을 동일한 공유 이름 및 새 설정으로 사용하여 공유를 재정의합니다.

사용자 공유 추가를 참조하십시오.

1.11.4. 기존 사용자 공유에 대한 정보 표시

사용자는 Samba 서버에 net usershare info 명령을 입력하여 사용자 공유 및 해당 설정을 표시할 수 있습니다.

사전 요구 사항

  • 사용자 공유는 Samba 서버에 구성됩니다.

절차

  1. 사용자가 만든 모든 사용자 공유를 표시하려면 다음을 수행하십시오.

    $ net usershare info -l
    [share_1]
    path=/srv/samba/
    comment=
    usershare_acl=Everyone:R,host_name\user:F,
    guest_ok=y
    ...

    명령을 실행하는 사용자가 생성한 공유만 나열하려면 -l 매개 변수를 생략합니다.

  2. 특정 공유에 대한 정보만 표시하려면 공유 이름 또는 와일드카드 카드를 명령에 전달합니다. 예를 들어 이름이 share_ 로 시작하는 공유에 대한 정보를 표시하려면 다음을 수행합니다.

    $ net usershare info -l share_* 

1.11.5. 사용자 공유 나열

Samba 서버에서의 설정 없이 사용 가능한 사용자 공유만 나열하려면 net usershare list 명령을 사용합니다.

사전 요구 사항

  • 사용자 공유는 Samba 서버에 구성됩니다.

절차

  1. 사용자가 생성한 공유를 나열하려면 다음을 수행하십시오.

    $ net usershare list -l
    share_1
    share_2
    ...

    명령을 실행하는 사용자가 생성한 공유만 나열하려면 -l 매개 변수를 생략합니다.

  2. 특정 공유만 나열하려면 공유 이름 또는 와일드카드를 명령에 전달합니다. 예를 들어 이름이 share_:으로 시작되는 공유만 나열하려면 다음을 수행하십시오.

    $ net usershare list -l share_* 

1.11.6. 사용자 공유 삭제

사용자 공유를 삭제하려면 net usershare delete 명령을 공유를 만든 사용자 또는 root 사용자로 사용합니다.

사전 요구 사항

  • 사용자 공유는 Samba 서버에 구성됩니다.

절차

$ net usershare delete share_name