저는 user_u
RHEL 6.5의 타겟팅 전략을 연구 중입니다. 저는 무제한 컨텍스트에서 루트로 로그인했기 때문에 원하는 것은 무엇이든 변경할 수 있습니다. 혹시라도 허용 모드로 전환했습니다. 처음에는 user_u를 MLS/MCS 설정 "s0:c0.c50"으로 설정했습니다. 이 상태는 (내가 아는 한) 아무런 문제 없이 잘 실행되고 있습니다. 명령을 사용하여 이 설정 변경을 테스트하기 위해 다음을 입력했습니다.
semanage user -m -r s0:c0.c51 user_u
이는 문제 없이 실행되며 semanage user -l
MLS user_u
/MCS는 이제 "s0:c0.c51"입니다. 그러나 user_u 또는 bob
user_u와 연결된 사용자 중 하나( 및 이름)를 수정하려고 하면 alice
다음과 같은 오류가 발생합니다.
libsemanage.validate_handler: Unix 사용자 bob의 MLS 범위 s0:c0.c50이 SELinux 사용자 user_u에 대해 허용된 범위 s0:c0.c51을 초과합니다(해당 파일 또는 디렉터리 없음).
libsemanage.validate_handler: 잘못된 seuser 매핑 [bob -> (user_u, s0:c0-c50)] (해당 파일이나 디렉터리 없음)
libsemanage.dbase_llist_iterate: 레코드를 반복할 수 없습니다(해당 파일이나 디렉터리 없음).
혼란스러운 부분은 s0:c0.c50이 s0:c0.c51을 "초과"한다는 것입니다. user_u를 수정하려고 하면 bob에 대해 불평합니다. bob을 삭제하려고 하면 alice에 대해 불평합니다. Alice를 삭제하려고 하면 Bob에 대해 불평합니다. 실제로 (GUI 도구나 명령줄을 통해) 그 중 어떤 것도 변경할 수 없습니다.
처음에는 semanage에서 변경사항을 취소하고 s0:c0.c50으로 돌아가려고 했으나 user_u
그게 안 되서 s0-s0:c0.c1023을 시도해 봤는데 역시 안 되더군요. 나는 이러한 오류가 s0-s0:c0.c1023을 언급하지 않았으므로 user_u의 MCS/MLS를 실제로 변경하기 전에 실패한 것과 같습니다.
나는 온라인에서 몇 가지 유사한 예만 찾을 수 있었고 제안으로 찾은 유일한 것은 /etc/selinux/targeted/susers에서 사용자 매핑을 제거하고 실행하는 것이 semodule -B
었지만 semodule -B
동일한 오류 정보로 실패했습니다. 나는 또한 Seuser가 제거한 부품을 교체하고 semodule -B
아무 소용이 없도록 시도했습니다.
이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 샌드박스 환경이라 원본 이미지로 돌아가기는 쉽지만, 배포된 환경에서는 그런 여유가 없을 것입니다.
답변1
어쨌든 인터넷 검색과 비슷한 버전을 발견했습니다. MLS 컨텍스트를 변경하지 않았지만 여기 원래 질문과 같이 잘못된 장소와 같은 이상한 오류가 발생합니다.
libsemanage.validate_handler: MLS range s0-s0:c0.c1023 for Unix user elflord exceeds allowed range s0 for SELinux user sysadm_u (No such file or directory).
libsemanage.validate_handler: seuser mapping [elflord -> (sysadm_u, s0-s0:c0.c1023)] is invalid (No such file or directory).
libsemanage.dbase_llist_iterate: could not iterate over records (No such file or directory).
이는 실행 중에 발생하며 모듈이 언급되지 않을 때 semodule [-i|-B
특히 혼란스럽습니다 .-i
sysadm_u
그 이유는 이전에 (관련되지 않은) 시도 때문입니다.다음에 추가이 캐릭터처럼 sysadmn_u
:
semanage user -m -R webadm_r sysadm_u
-R
매뉴얼 페이지는 does with does 에 대해 모호 -m
하지만 분명히 의미를 수정하지는 않습니다.다음에 추가이를 대체하는 역할:
> seinfo -u sysadm_u -x
Users: 1
user sysadm_u roles webadm_r level s0 range s0;
이런, sysadm_r
사라졌습니다. 이는 또한 elflord
적어도 SSH를 통하지 않고 로그인할 수 있는 방법이 없다는 것을 의미합니다. 즉, Unable to get valid context for elflord
네트워크를 통해 전송합니다.
게다가 제가 명시하진 않았음에도 불구하고 -r
최소값으로 설정되어 있었는데 level s0 range 0
, 에러 문구가 가장 신경쓰이는 부분인 것 같습니다.
해결 방법은 원래 역할 및 범위를 포함하여 사용자 수정을 다시 실행하는 것입니다.
semanage user -m -R { sysadm_r webadm_r } sysadm_u -r s0-s0:c0.c1023