저는 현재 Linux 가상 머신 관리를 돕기 위해 설계된 데몬을 만들고 있습니다. 로그인할 수는 없지만 네트워크를 사용할 수 있는 상태로 시스템을 설정할 수 있어야 합니다. 어떻게 해야 하나요?
답변1
사용자 로그인 차단이 변경해야 하는 유일한 시스템 활동이 아닐 수 있으므로 이러한 시스템 유지 관리 활동에 대한 새로운 systemd 대상을 만듭니다. 현재 그래픽 모드를 변경하거나 사용자가 로그아웃되지 않도록 이 대상을 기본 대상에 종속되게 만듭니다.
/etc/nologin 파일을 생성하거나 삭제하여 로그인을 차단하는 새로운 시스템 서비스를 생성합니다(/etc/nologin 작동 방식은 /etc/pam.d에서 pam_nologin 사용 참조). 생성한 /etc/nologin 파일만 삭제하도록 주의하십시오(예: 매직 문자열 내용 확인). 새로운 systemd 대상이 서비스를 원하도록 만듭니다.
이렇게 해도 "user"는 계속 실행됩니다. 예를 들어 gdm은 로그인 화면을 표시합니다. 대부분의 가상 머신은 부하 공유 클러스터에서 머신을 등록 취소해야 하는 역할에 대해 명령줄 이외의 서비스에 대한 사용자 로그인을 지원하기 위해 존재합니다. "사용자 없음"이라고 말할 때 의미하는 바를 매우 명확하게 설명해야 합니다.
시스템 업데이트에 대한 경험적 법칙은 정상 작동 중에 다운로드하여 준비한 다음 시스템을 다시 시작할 때 적용하는 것이 가장 좋다는 것입니다. Systemd에는 활용할 수 있는 몇 가지 후크가 있습니다. 사용 방법을 알아보려면 pkcon 시스템을 참조하세요. 아마도 새 세션을 가져오거나 허용하지 않는 "드레이닝" 상태를 원할 것입니다(이는 클러스터에서 분리되는 것처럼 자동으로 발생할 수도 있고 위에서 언급한 것처럼 새 대상이 필요할 수도 있습니다).
Linux 가상 머신 관리에 대한 많은 작업이 이루어졌으며 Ansible, Puppet 등을 중심으로 대규모 커뮤니티가 있습니다. 그래서 나는 당신이 다른 데몬을 작성하고 있다는 사실에 조금 놀랐습니다.