smbfs 마운트 공유의 파일이 실행 가능 비트 세트로 작성된 이유는 무엇입니까?


14

smbmount 명령을 사용하여 삼바 공유를 마운트했습니다.

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

새 파일을 만들면 소유자, 그룹 및 세계에 설정된 실행 가능한 비트로 만들어집니다. 예를 들어

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

NFS 마운트 공유에서 생성 될 때 동일한 파일은 실행 가능한 비트 세트없이 올바른 권한을 설정합니다.

왜 이런 일이 발생합니까? 어떻게 고칠 수 있습니까?

답변:


11

NFS는 Unix 세계에서 만들어 졌으므로 기존 Unix 권한을 즉시 이해합니다. (현대 유닉스 시스템의 ACL은 또 다른 문제이지만 최근 NFS 구현은 이에 대응해야합니다.)

Samba는 IBM / Microsoft PC 세계에서 발명되어 읽기 전용 / 읽기 / 쓰기 이외의 권한이없는 시스템과 파일을 교환합니다. 이제 Windows 고유의 것입니다. 기본적으로 Samba는 Unix 권한을 전송하지 않습니다. 구성에 따라 모든 파일은 실행 가능 (성가신)으로 표시되거나 모든 파일 (디렉토리 제외)은 비 실행 가능 (성가신)으로 표시됩니다.

Samba / CIFS 프로토콜에는 Unix 용으로보다 적합한 다양한 확장이 있습니다. 서버 구성에서 Unix 확장 을 활성화하십시오 .

[global]
unix extensions = yes

불행히도 회사 인트라넷에서는 서버를 구성 할 수있는 액세스 권한이 없습니다. 아마도 Linux 클라이언트에서 NFS를 사용하여 마운트하는 것이 가장 좋습니다. 더 큰 문제는 NFS 구성이 어려움을 겪는 Windows 클라이언트에서 발생합니다.
vivekian2

@ vivekian2 실제로, 선택의 여지가 있다면 Linux 클라이언트에서 NFS를 사용하고 Windows 클라이언트에서 SMB를 사용하는 것이 좋습니다.
Gilles 'SO- 악의를 멈춰라'

10

문제 같은이 소리는, 제목 : 복사 된 파일은 이득 삼바 / CIFS에 비트를 실행합니다 .

발췌

CIFS 마운트 볼륨에서 rw-r ----- 파일을 복사 한 후 사본은 rwxr -----가됩니다. 따라서 실행 비트를 얻습니다.

설정 페이지 아래로 추가 map archive = no/etc/samba/smb.conf:

발췌

  [Global]
  <snip>
  map archive = no
  <snip>

이것은 Windows에서 저장된 파일이 실행 플래그를 얻는 문제를 확실히 해결합니다. 감사! 또 다른 미친 기본값은 지난 20 년 동안 누군가 아카이브 플래그를 사용한 적이 있습니까? :)
Rennex

4

시도해 볼 수 있습니다 : mount -t cifs

사용을위한 Google "mount cifs"는 이해하기 어렵지만 -o 플래그를 사용하여 옵션을 설정하려고합니다.

uid =, gid =, rw, noperm, dir_mask = 0775, file_mask = 0664

사용자 및 그룹은 텍스트 별칭이 아닌 숫자와 같이 ID입니다. 이 옵션을 사용하면 서버에 대한 액세스 권한이없고, 서버를 마운트하지 않고 권한을 제어하며, 특히 file_mask=0664파일을 실행할 수 없도록합니다. 이 외에도 samba 공유를 로컬 디렉토리로 사용할 수 있습니다.


최신 버전의 삼바에서는 다음을 사용해야합니다.file_mode=0644,dir_mode=0755
Jokester

경고 : CIFS 마운트 옵션 'dmask'는 사용되지 않습니다. 대신 'dir_mode'를 사용하십시오. 경고 : CIFS 마운트 옵션 'fmask'는 사용되지 않습니다. 대신 'file_mode'를 사용하십시오.
Hubbitus

4

이 문제가 발생 하는 이유 는 Samba 웹 사이트의 MS-DOS 및 Unix 파일 권한 및 속성 섹션 에있는 다음 설명에서 확인할 수 있습니다 .

https://www.samba.org/samba/docs/using_samba/ch08.html

MS-DOS 파일 시스템에 대한 시스템, 숨김 및 아카이브 비트 매핑과 관련이 있습니다.

MS-DOS 파일 시스템은 실행 비트를 사용하지 않으므로 Unix 파일 시스템의 3 개의 실행 비트는 재사용되어 MS-DOS 파일 시스템의 시스템, 숨김 및 아카이브 비트를 나타냅니다.

따라서 ls -lUnix에서 사용하는 파일 사용 권한을 볼 때 Unix의 세 가지 실행 비트는 MS-DOS의 시스템, 숨겨진 및 보관 비트를 나타냅니다.

에서은 smb.conf, 그러나, 당신은 점유율 오프이 매핑을 설정할 수 있습니다 :

map archive = no
map system = no
map hidden = no

다음을 사용하여 파일 작성 모드를 강제 실행하십시오.

force create mode = 0660

너무 간단해서 ... 설명해 주셔서 감사합니다!
anton_rh

1

QNAP TS439를 사용하며 파일을 실행할 수있는 경우이 문제가 발생했습니다.

/etc/fstab파일에 다음을 사용해야했지만

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.