안녕하세요. 질문이 있습니다. 관련 답변을 찾을 수 없는 것 같습니다. 상황은 삼바 서버를 설정하고 Windows 컴퓨터에서 파일과 폴더를 만들려고 한다는 것입니다. 모든 것이 예상대로 작동하지만 Samba가 그룹 및 파일의 다른 비트에서 x 비트를 제거하는 작은 문제가 있습니다. 간단한 예제 코드:
drwx--x--x. 4 root root 4096 Dec 13 20:01 smb
drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus
[pokus]
path = /smb/pokus
public = no
writable = yes
valid users = @amikon
[root@wserver pokus]# ls -l
drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir
-rwxr--r--. 1 vanek amikon 0 Dec 21 10:14 file.txt
나는 많은 실험을 통해 Windows Samba에서 항목(파일 또는 디렉터리)을 생성하는 동안 기본 마스크와 Windows 시스템에서 오는 권한에서 논리 AND를 수행한다는 것을 이해했습니다. 이 동작은 마스크 생성 및 강제 생성 모드(그리고 다른 디렉토리 설정)를 사용하여 어느 정도 영향을 미칠 수 있습니다. 전혀 문제 없이 예상대로 작동합니다.
마스크 755 생성을 사용하여 0011 지속 누락 문제가 지속된다는 사실을 발견했습니다. x 비트는 여전히 파일에서 제거됩니다. 유일한 옵션은 강제 생성 모드 755를 사용하는 것입니다. 그 후에도 비트는 계속 유지되거나 광고됩니다.
다른 마스크 만들기 옵션을 테스트했는데 파일의 0011이 매번 제거되는 것 같습니다. 755, 777, 333 ... 따라서 그룹에서 x를 제거하는 일부 보호 메커니즘과 소유자 외에는 아무도 실행되지 않는 스크립트를 방지하는 다른 메커니즘일 수 있는 것 같습니다????
하지만 내 질문은 위의 정확한 예에 관한 것입니다. 결과적으로 d755가 있지만 -744가 있는 이유는 무엇입니까? 0011을 잃은 마법은 정확히 어디서 일어났나요?
힌트를 주셔서 감사합니다.
답변1
0011을 잃는 마법은 이것이 기본 Samba 동작이기 때문에 발생합니다.
문서에서 추출:
마스크 생성: 이 매개변수의 기본값은 UNIX 모드에서 그룹 및 기타 쓰기 및 실행 비트를 제거합니다.
기본값: 마스크 생성 = 0744
여기 링크가 있습니다 :http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
검색create mask (S)
이 문서에서 Samba 팀은 이러한 기본 동작을 구현하기로 선택한 이유를 설명하지 않습니다. 그러나 제가 보기에는 (당신이 언급한 것처럼) 보안 메커니즘에 대해 생각하는 것이 쉽습니다.
지시문 을 사용하여 inherit permissions = yes
새 파일이 상위 폴더 권한을 상속하도록 만들 수 있지만 이는 x 비트에 영향을 미치지 않습니다. 따라서 귀하의 경우에는 다음이 렌더링됩니다.
-rwxrw-r--. 1 vanek amikon 0 Dec 21 10:14 file.txt
또한 말씀하신 대로 이 동작을 변경하려면 자신만의 마스크를 명시적으로 정의해야 합니다. 이제 "생성"과 "강제 생성"의 주요 차이점은 다음과 같습니다.
create mask
권한을 제거합니다(AND 마스크).force create mode
그 뒤에 추가합니다(OR 마스크).
또한 create mask
그룹 및 기타에 대한 x 비트를 처리할 수 없습니다.
따라서 일부 목표를 달성하려면 두 가지 지시문을 모두 처리해야 할 수도 있습니다.
몇 가지 샘플을 시험해 보겠습니다.
1) 그룹 및 기타에 대해 x 비트만 원하는 경우 다음을 결합해야 합니다.
create mask = 0700 #Remove r bit from group and others
force create mode = 0711 #Add x bit only to group and others
결과 : -rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt
2) 그룹 및 기타에 대해 r 및 x 비트를 원하면 create mask
지시문을 제거하고(기본값은 이미 0744이므로) 다음을 추가하십시오.
;create mask = 0700 #remove r bit from group and others (commented)
force create mode = 0711 #Add x bit only to group and others
결과 : -rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt
등등...
Samba 동작을 이해하는 데 조금이나마 도움이 되기를 바랍니다.