Linux에서 시스템 계정을 사용하여 명령/프로그램을 실행하는 방법

Linux에서 시스템 계정을 사용하여 명령/프로그램을 실행하는 방법

내 목표는 LDAP 검색을 실행하고 gMSA 계정의 비밀번호를 얻는 것입니다.

  • Ubuntu 가상 머신이 있습니다 Dev_Linux.
  • 내 사용자 계정은 입니다 sja.
  • Dev_Linux이 계정을 사용하여 LDAP 검색을 실행하고 싶습니다 . 저는 이 계정을 시스템 계정 또는 컴퓨터 계정이라고 부릅니다.

내 계정이 sja허용된 주체로 추가되면 비밀번호를 검색할 수 있었습니다. 내가 의도한 설정은 허용된 주체의 호스트 그룹에 컴퓨터 계정을 추가하는 것입니다. 따라서 컴퓨터 계정을 사용하여 LDAP 검색을 실행할 수 있다면 비밀번호를 검색할 수 있어야 합니다.

나는 그것을 실행했고 kinit컴퓨터 klist -k계정에 권한이 있음을 보여주었습니다.

하지만 LDAP 검색을 컴퓨터 계정으로 실행하는 방법에 대해 고민하고 있습니다. 이 경우에는 또는 Dev_Linux가 아닌 as sja입니다 root.

답변1

이것기계 계정본질적으로 Kerberos/AD 계정입니다. Windows와 달리 Linux에는 컴퓨터 계정에 대한 운영 체제 개념이 내장되어 있지 않습니다.

하지만 하나기계 계정기본적으로 로컬 시스템의 모든 사용자가 사용할 수 있는 네트워크 인증 자격 증명 집합입니다.

면책 조항: 다음은 내 이전 메모를 기반으로 합니다. 현재 테스트에 사용할 수 있는 작동 중인 Kerberos 환경이 없습니다.

필요한 경우 Kerberos/AD 관리자와 협력하여 컴퓨터 계정에 대한 Kerberos keytab 파일을 생성할 수 있습니다.

ktutil -v -k /some/where/Dev_Linux.keytab add -p Dev_Linux@SOME_REALM

그런 다음 모든 사용자가 액세스할 수 있는 로컬 시스템의 위치에 키탭을 배치합니다.

(Kerberos 서비스가 실제로 Active Directory이고 시스템이 AD 통합 인증을 사용하는 경우 시스템에는 로컬 시스템의 시스템 계정에 대한 키탭을 유지 관리하고 시스템 계정 비밀번호와 키탭을 정기적으로 업데이트하는 장치가 이미 있을 것입니다. AD 보안 요구 사항을 충족해야 하는 경우 간단히 keytab 파일을 찾아 사용자에게 해당 파일을 읽을 수 있는 적절한 권한을 부여하면 됩니다. AD 통합이 구현되는 방식에 따라 달라질 수 있습니다.

컴퓨터 인증을 사용하여 인증하려면 사용자 정의 자격 증명 캐시 이름을 설정하고(개인 Kerberos 계정을 방해하지 않도록) 키 탭을 사용하여 컴퓨터 계정으로 인증해야 합니다.

예를 들어:

kinit -c /tmp/krb5cc_machine --keytab=/some/where/Dev_Linux.keytab Dev_Linux@SOME_REALM

컴퓨터 계정 암호는 키탭에서 암호화되어 있으므로 이 명령은 비대화형으로 실행될 수 있습니다. 로그인 세션 시작 시 또는 적절한 간격으로 이 명령을 실행하여 캐시된 인증 티켓이 결국 만료되므로 업데이트할 수 있습니다.

캐시된 컴퓨터 계정 자격 증명을 사용하려면 컴퓨터 계정 키 탭을 사용하여 편집된 자격 증명 캐시를 KRB5CCNAME가리키도록 환경 변수를 설정 kinit하고 개인 계정으로 인증하려는 경우 설정을 해제(또는 기존 값으로 되돌리기)합니다.

따라서 이러한 준비를 완료한 후 ldapsearch머신 계정을 사용하여 실행합니다.

KRB5CCNAME=/tmp/krb5cc_machine ldapsearch -U Dev_Linux <necessary options and parameters...>

현재 로컬 사용자 이름 대신 ldapsearch사용하려는 사용자 이름을 지정하는 옵션을 포함할 수 있습니다 . Dev_Linux나는 필요한 선택이 있다고 믿습니다 -U Dev_Linux.

KRB5_CLIENT_KTNAME컴퓨터 계정 keytab 파일을 가리키도록 환경 변수를 설정하고 LDAP 검색 도구에 컴퓨터 계정 사용자 이름을 제공하는 것만으로도 충분할 수도 있습니다 . LDAP 검색 도구의 Kerberos 지원이 충분히 똑똑하다면 필요한 인증 티켓을 자동으로 얻을 수 있습니다. 하지만 개인 계정 인증 티켓과 컴퓨터 계정 인증이 혼합되는 것을 방지하려면 충돌하지 않는 KRB5CCNAME을 설정해야 할 수도 있습니다. 티켓 혼합 - 특정 작업을 수행하는 데 컴퓨터 계정 또는 개인 계정이 사용되는지 여부를 제어할 수 있습니다.

따라서 keytab 파일을 명시적 으로 사용한 kinit후 컴퓨터 계정을 사용한 LDAP 검색이 제대로 작동하는지 확인한 후 다음 명령을 사용하지 않고 시도해 볼 수 있습니다 kinit.

kdestroy -c /tmp/krb5cc_machine 
KRB5_CLIENT_KTNAME=FILE:/some/where/Dev_Linux.keytab KRB5CCNAME=/tmp/krb5cc_machine ldapsearch -U Dev_Linux <options and parameters...>

성공할 경우 컴퓨터 계정을 사용하는 데 필요한 유일한 사항은 keytab 파일에 대한 액세스와 두 가지 환경 변수 할당( KRB5_CLIENT_KTNAMEKRB5CCNAME), 컴퓨터 계정에 대한 올바른 사용자 이름을 사용하는 옵션입니다.

관련 정보