chcon: '/etc/oddjobd.conf.d'의 컨텍스트를 'unconfined_u:object_r:oddjob_t:s0'으로 변경할 수 없습니다: 권한이 거부되었습니다.

chcon: '/etc/oddjobd.conf.d'의 컨텍스트를 'unconfined_u:object_r:oddjob_t:s0'으로 변경할 수 없습니다: 권한이 거부되었습니다.

내 친구가 SELinux를 사용하는 데 어려움을 겪고 있습니다. 서버는 대상 정책을 사용하여 시행 모드에서 SELinux를 구성합니다.

Puppet을 사용하는 경우 restorecon또는 chcon,SELinux가 시행 모드에 있지 않더라도 이 오류가 발생합니다.

# chcon -t oddjob_t /etc/tt 
chcon: failed to change context of `/etc/oddjobd.conf.d' to `unconfined_u:object_r:oddjob_t:s0': Permission denied 

여기에는 다음이 /var/log/audit/audit.log포함됩니다.

type=AVC msg=audit(1429628369.080:338935): avc:  denied  { relabelto } for  pid=3629 comm="chcon" name="oddjobd.conf.d" dev=dm-0 ino=39413 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628369.080:338935): arch=c000003e syscall=188 success=no exit=-13 a0=12f20e0 a1=3edf0162d9 a2=12f3620 a3=22 items=0 ppid=1206 pid=3629 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="chcon" exe="/usr/bin/chcon" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) 

비슷한 접근 방식을 사용하면 restorecon실패했습니다.

# restorecon -Rv /etc 
restorecon reset /etc/oddjobd.conf.d context system_u:object_r:etc_t:s0->system_u:object_r:oddjob_t:s0 
restorecon set context /etc/oddjobd.conf.d->system_u:object_r:oddjob_t:s0 failed:'Permission denied' 

여기에는 다음이 /var/log/audit/audit.log포함됩니다.

type=AVC msg=audit(1429628361.258:338934): avc:  denied  { relabelto } for  pid=3627 comm="restorecon" name="oddjobd.conf.d" dev=dm-0 ino=39409 scontext=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 tcontext=system_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628361.258:338934): arch=c000003e syscall=189 success=no exit=-13 a0=7fdb4b1d5190 a1=7fdb49e762d9 a2=7fdb4b1d50f0 a3=1e items=0 ppid=1206 pid=3627 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="restorecon" exe="/sbin/setfiles" subj=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 key=(null)

그는 루트로 로그인되어 있습니다. Bash 쉘은 제한이 없습니다( id -Z).

그럼 무엇이 잘못됐나요?

답변1

oddjob_t글쎄, 내 친구가 잘못된 파일 형식( 파일 컨텍스트가 아닌 프로세스 컨텍스트) 을 사용하려고 했다는 것이 밝혀졌습니다.

해당 디렉토리의 컨텍스트 유형을 다른 유형으로 변경하면 문제가 없습니다(예: chcon -t etc_t /etc/oddjobd.conf.d).

seinfo어떤 파일 형식이 있는지 확인하는 데 사용할 수 있습니다 .

# seinfo -afile_type -x | grep "oddjob"
      oddjob_var_run_t 
      oddjob_exec_t 
      oddjob_mkhomedir_exec_t 

restorecon내 친구가 잘못된 파일 컨텍스트를 삽입했기 때문에 실행 도 실패했습니다.

semanage fcontext --add -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

그래서 나는 그 잘못된 규칙을 제거했습니다(전혀 필요하지 않았습니다):

semanage fcontext --list | grep "oddjob_t"
semanage fcontext -d -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

추신: 이 블로그 게시물이 이 문제를 해결하는 데 매우 유용하다고 생각했습니다. Dan Walsh의 블로그: SELinux 유형 재검토.

관련 정보