- - - 질문- - - -
내 시스템은 CentOS 7.6을 실행하고 있습니다. 표준 쉘 대신 /etc/passwd 파일에서 사용자 정의 쉘을 호출하고 싶습니다.
SELinux를 활성화했는데 어떤 이유로 sshd_t 도메인이 내 사용자 정의 셸에 저장된 새 사용자 정의 도메인으로 변환되지 않습니다.
이 같은:
/etc/passwd에서:
root:x:0:0:root:/root:/bin/myshell
SELinux 도메인 번역:
myshell.fc
/bin/myshell gen_context(system_u:object_r:myshell_exec_t,s0)
myshell.te
role unconfined_r types myshell_t;
role_transition unconfined_r myshell_t system_r;
domtrans_pattern(unconfined_t, myshell_exec_t, myshell_t)
기본 사용자는unconfined_u:unconfined_r:unconfined_t.
또한 unconfined_r에서 system_r로 역할 전환을 수행했습니다.
- - 질문- - -
어떤 이유로 sshd_t가 myshell_t 도메인으로 변환되지 않습니다. 사용자는 루트입니다.
역할 변경 로그 메시지는 다음과 같습니다.
type=USER_ROLE_CHANGE msg=audit(1559079004.637:339116): pid=24478 uid=0 auid=0 ses=823 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='pam: default-context=system_u:unconfined_r:unconfined_t:s0 selected-context=system_u:unconfined_r:unconfined_t:s0 exe="/usr/sbin/sshd" hostname=X.X.X.X addr=X.X.X.X terminal=ssh res=success'
type=AVC msg=audit(1559067681.085:327703): avc: granted { execute } for pid=17593 comm="sshd" name="myshell" scontext=system_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:myshell_exec_t:s0 tclass=file
바이너리를 실행하지만 변환은 발생하지 않습니다. 역할이 다르기 때문일 수도 있지만 역할이 바뀌는 경우가 있는데 왜 작동하지 않는지 잘 모르겠습니다.
답변1
여기에는 두 가지 측면이 있습니다. 먼저 첫 번째 측면에 대해 이야기하겠습니다.
- 태그 /bin/myshell 유형 shell_exec_t: echo '(filecon "/usr/bin/myshell" 파일 (system_u object_r shell_exec_t ((s0)(s0))))' > myshell.cil && semodule -i myshell.cil
- 사용자 joe를 생성하고 이를 기존 user_t 제한된 쉘 도메인과 연결합니다: useradd -Z user_u joe
ssh joe@localhost 'id -Z'
새로운 제한된 사용자를 생성하는 것은 다소 복잡하지만 요점은 sshd, login 등과 같은 로그인 프로그램이 pam_selinux를 사용하여 로그인 쉘이 실행 중인 컨텍스트를 결정하고 이를 자동이 아닌 수동으로 수행한다는 것입니다. /etc/selinux/TYPE/contexts/users/의 파일은 /etc/selinux/TYPE/contexts의 다른 파일과 함께 사용됩니다.