폴더 아래의 모든 항목에 samba_share_t를 적용하는 방법

폴더 아래의 모든 항목에 samba_share_t를 적용하는 방법

/data새로운 Linux RHEL 7.7 서버에 5TB의 데이터를 설치했습니다 .

저는 selinux를 시행으로 사용하고 있으며 /data삼바를 공유했는데 대부분 잘 작동합니다. 하지만 몇 개의 폴더에 깊이 들어가면 /data/액세스가 거부됩니다. 해당 특정 하위 폴더에서 작업을 수행하면 chcon -t samba_share_tSamba는 해당 하위 폴더로 이동합니다. 조금 더 깊이 들어가 보면 같은 문제입니다.

/data/내 폴더 아래의 모든 항목을 올바르게 만들고 samba_share_tSamba에서만 작동하도록 하려면 어떻게 해야 합니까 ?

selinux에 지쳤습니다.

답변1

삼바에서만 사용하는 경우 /data컨텍스트 마운트 옵션을 사용하여 파일 컨텍스트를 samba_share_t모든 파일 에 설정할 수 있습니다 /data. context="system_u:object_r:samba_share_t:s0"fstab에서. 상황별 옵션은 탑재 시 기존 파일 레이블을 덮어쓰지만 디스크 내용은 수정하지 않습니다. 컨텍스트 마운트 시 파일 레이블을 변경할 수 없으며 모든 파일은 동일한 레이블을 갖습니다.

설치 옵션이 옵션이 아닌 경우 파일 컨텍스트를 구성하는 일반적인 방법은 semanage fcontext.를 사용하여 semanage fcontext -a -t samba_share_t '/data(/.*)?'데이터베이스에 컨텍스트를 추가하고 를 사용하여 새 파일 컨텍스트를 (재귀적으로) 적용하는 것 입니다 restorecon -r /data.

(Samba 외에) 데이터에 액세스하는 다른 사용자/서버가 있는 경우 몇 가지 옵션이 있습니다.

  • 활성화 samba_export_all_ro하거나samba_export_all_rw 부울 값매우 광범위한 읽기 전용 또는 읽기-쓰기 액세스가 가능합니다(Samba가 파일을 먼저 읽을 수 있다고 가정하면 SELinux 규칙은 표준 권한 확인 후에 적용됩니다). 두 부울 값 중 하나를 활성화하면 보안 정책이 더 허용적으로 적용됩니다.

  • 위에서 설명한 대로 마운트 옵션을 사용하고 다른 프로세스가 samba_share_t.다른실행 중인 프로세스허용 모드(프로세스/서비스를 다시 시작해야 함) 로그 항목을 생성합니다. 그런 다음 사용audit2allow필요한 정책을 개발합니다. 정책을 삽입하고 다른 정책을 다시 설정하세요.구현하다모델. AVC 오류가 더 많이 발생하면 이 프로세스를 반복하여 사용자 지정 정책을 연결할 수 있습니다.

    이는 다른 방법으로도 적용될 수 있습니다(삼바가 다른 컨텍스트를 가진 파일에 액세스하도록 허용하지만 /data잘못된 컨텍스트를 가진 파일의 동일한 문제에 직면할 수 있음).

  • 새 파일 컨텍스트와 추가 도메인에 필요한 액세스 권한을 정의하는 사용자 정의 정책을 작성합니다.

답변2

그래서 이것이 제가 한 일입니다. 제 생각에 제 주된 문제는 구문을 잘못 입력하는 것이었고 그것이 제가 문제를 겪게 된 이유였습니다.

  • LSI RAID 카드를 통해 서버에 8개의 디스크 raid-5 볼륨이 있습니다.XFS지난 10년 정도 동안 SLES 11.4에 따라 설치되었습니다.
  • 운영 체제 디스크를 교체하고이제 RHEL 7.8을 실행하고 selinux를 강제 실행합니다..
  • RHEL 7에서 XFS 파일 시스템을 마운트했습니다. /data특히 다음 구문이 필요합니다.의미론

-

 semanage fcontext -a -t samba_share_t "/data(/.*)?"

 restorecon -vR /data


# to samba share out home directories, if in your smb.conf

setsebool -P samba_enable_home_dirs on

이제 사람들은 할 수 있다chcon -t samba_share_t /data/folder1/folder2/folder3

그러나 10년치의 데이터와 수백만 개의 파일/폴더가 있으면 이는 곧 해결책이 되지 않습니다. 빠른 진단입니다selinux=강제특정 하위 폴더에 대한 액세스가 거부되었습니다.chcon -t 삼바_공유_t그러면 해당 하위 폴더에 대한 액세스가 즉시 허용됩니다. 솔루션을 사용할 때 올바른 구문인 것 같습니다.의미론적 맥락그리고 "그 이후con-vR 복원

5TB 데이터의 경우 semanage완료하는데 약 30초, 약 2분 정도 소요됩니다.restorecon

궁금하다면:

/etc/fstab` is this in RHEL 7.8

/dev/disk/by-uuid/e16528d8-ec26-4441-828a-d399b46e4a21 /data auto nosuid,nodev,nofail 0 0

# ------------------------------------------------------------------------

/etc/samba/smb.conf

[global]
    workgroup = SAMBA
    security = user

    passdb backend = tdbsam

    printing = bsd
    printcap name = /dev/null
    load printers = no
    disable spoolss = yes
#   cups options = raw

[homes]
    comment = Home Directories
    valid users = %S, %D%w%S 
    browseable = No
    read only = No
    inherit acls = Yes

[data]
    comment = data
    inherit acls = Yes
    read only = No
    path = /data
    directory mask = 770
    create mask = 660

# ------------------------------------------------------------------------
/etc/selinux/config

# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.

SELINUX=enforcing
SELINUXTYPE=targeted

관련 정보