PAM 및 sudo 문제

sudo with MFA와 Alpamon PAM 모듈(alpamon-pam)의 문제 해결 가이드입니다. 각 절은 화면에 표시되는 메시지를 먼저 보여준 뒤 원인과 해결 방법을 설명합니다.

”A terminal is required to authenticate”

sudo-rs를 사용하는 호스트(Ubuntu 25.10 이상)에서는 alpacon exec 등을 통해 터미널 없이 실행한 sudo 명령어가 다음 메시지와 함께 실패할 수 있습니다:

sudo: A terminal is required to authenticate

이 메시지는 sudo 실행 과정에서 Alpacon 인가가 완료되지 않았다는 뜻입니다. sudo-rs는 기존 sudo와 달리 터미널이 연결되지 않으면 실패 이유를 표시할 수 없어 이 일반적인 메시지를 대신 출력합니다. 주된 원인은 다음과 같습니다:

  • 명령어가 거부되었지만, 터미널이 없어 이유가 표시되지 않음. 예를 들어 명령어와 일치하는 sudo 정책이 작업 세션에 없음
  • 워크스페이스에서 sudo with MFA가 꺼져 있음
  • 서버에서 Alpamon이 실행 중이지 않음
  • sudo 명령어가 Alpacon에서 추적하는 세션에서 실행되지 않음

실제 원인을 확인하려면 서버에서 시도한 시간대의 journalctl -u alpamon 출력을 확인하고 다음 로그를 찾으세요.

로그 내용의미
No session found for PIDsudo가 Alpacon에서 추적하는 세션에서 실행되지 않음. 승인된 작업 세션 또는 대화형 Websh 세션 안에서 실행 필요
sudo_approval response timeoutAlpacon이 요청을 보냈지만 서버로부터 제때 응답을 받지 못함. 연결 상태를 확인하고 다시 시도 필요
approved=false와 error_code가 포함된 Processing sudo_approval response명령어가 명시적으로 거부됨. “Alpacon denied this sudo command”에서 코드 확인 필요

sudoers 규칙이 없는 경우

sudo를 실행할 권한이 없는 사용자에게는 sudo 구현에 따라 다음 메시지 중 하나가 표시됩니다:

# sudo-rs (Ubuntu 25.10+)
sudo: I'm sorry user. I'm afraid I can't do that

# classic sudo
user is not in the sudoers file.

Alpacon이 관리하는 호스트에서는 Alpacon을 통해 sudo를 사용할 수 있게 하는 sudoers 규칙(%alpacon)이 PAM 모듈(alpamon-pam)과 함께 설치됩니다. 이 메시지가 표시된다면 보통 서버에 alpamon-pam이 설치되지 않은 것입니다. 패키지가 설치되어 있는지 확인하세요:

bash
# Debian/Ubuntu
dpkg-query -W alpamon-pam
 
# RHEL/CentOS/Rocky/Alma/Fedora
rpm -q alpamon-pam

다시 설치하려면 다음과 같이 하세요:

  • 서버 한 대: 시스템 패키지 관리자로 설치 필요. Debian/Ubuntu에서는 apt-get install -y alpamon-pam, RHEL 기반 시스템에서는 yum install -y alpamon-pam 사용. 설치 안내 참고
  • 워크스페이스 전체: Alpacon을 통한 sudo이 꺼져 있다면 접근 규칙에서 다시 켜기 필요. 현재 연결된 모든 서버에 alpamon-pam이 다시 설치됨

”Alpacon denied this sudo command”

Alpacon이 sudo 명령어를 차단하면 오류 코드가 포함된 메시지를 반환합니다:

Alpacon denied this sudo command (SUDO_NO_WORKSESSION_POLICY)

오류 코드로 거부 이유와 해결 방법을 확인할 수 있습니다.

코드의미해결 방법
SUDO_SESSION_MISSING승인된 세션에서 명령어를 실행하지 않음승인된 작업 세션 또는 대화형 Websh 세션 안에서 sudo 실행 필요
SUDO_NO_WORKSESSION_POLICY작업 세션에 이 명령어와 일치하는 sudo 정책이 없음work-session update --sudo로 일치하는 패턴 추가 필요. 패턴 규칙도 확인 필요: sudo 접두어는 일치 여부를 확인하는 명령어에 포함되지 않으며, 명령어 전체가 일치해야 하고, 와일드카드는 *만 사용 가능
WORKSPACE_SUDO_WITH_MFA_DISABLED워크스페이스에서 Alpacon을 통한 sudo이 꺼져 있음슈퍼유저에게 접근 규칙에서 이를 켜 달라고 요청 필요
SUDO_APPROVAL_REQUIRED명령어에 사람의 승인이 필요하여 승인 요청이 전송됨승인된 뒤 같은 명령어를 다시 실행 필요. sudo 명령어가 거부될 때 참고
SUDO_APPROVAL_PENDING터미널의 승인 대기가 끝났거나 Ctrl+C로 중지함. 승인 뒤 MFA 인증을 마치지 못한 경우도 포함되며 승인 요청은 계속 유효함승인된 뒤 같은 명령어를 다시 실행 필요. 승인 대기 참고
SUDO_APPROVAL_ALREADY_WAITING같은 sudo 명령어가 다른 터미널에서 이미 승인을 기다리는 중임대기 중인 터미널을 사용하거나 그 터미널에서 먼저 Ctrl+C를 눌러야 함. 승인 대기 참고
SUDO_APPROVAL_REJECTED승인자가 요청을 거절했거나 요청자가 철회함명령어는 실행되지 않음. 거절 이유를 확인한 뒤 필요하면 다시 요청해야 함
APPROVAL_NO_OTHER_APPROVER본인 외에 요청을 승인할 사람이 없음워크스페이스 소유자에게 다른 승인자나 자동 승인 규칙 추가 요청 필요
SUDO_NO_AUTHORITY이 명령어를 허용하는 상시 sudo 권한이 없음. Advisory 워크스페이스에서는 승인 요청 없이 즉시 거부됨워크스페이스 소유자에게 서버 접근 정책에서 상시 sudo 권한 부여 요청 필요. 터미널이 기다리지 않는 경우 참고
SUDO_TARGET_OTHER_PERSON명령어가 다른 사람의 개인 계정으로 전환하려 함자신의 계정이나 공유 계정 또는 서비스 계정에서 실행 필요
SUDO_TARGET_UNPARSED명령어가 전환하려는 계정을 확인할 수 없음전환할 계정을 명시하도록 명령어 수정 필요
SUDO_INTENT_DEVIATION명령어가 작업 세션의 목적에 맞지 않아 승인 요청이 전송됨승인을 기다리거나 변경된 작업을 위한 새 작업 세션 요청 필요. sudo 명령어가 거부될 때 참고
SUDO_RISK_DENIED워크스페이스의 접근 규칙이 명령어를 차단하거나 명령어의 위험도가 너무 높다고 판단됨Superuser에게 접근 규칙 검토 요청 필요. sudo 명령어가 거부될 때 참조

오류 메시지 참고 문서에서 sudo_session_missing, sudo_no_worksession_policy, workspace_sudo_with_mfa_disabled에 해당하는 콘솔 메시지를 찾아보세요.

설치된 PAM 모듈 확인

서버 상세 페이지에는 서버마다 Alpacon을 통한 sudo 상태가 표시됩니다.

  • 활성: 모듈이 설치되어 있습니다. alpamon-pam 버전을 함께 보여 줍니다.
  • 비활성: alpamon-pam이 설치되어 있지 않습니다.
  • 알 수 없음: 에이전트가 오래되어 상태를 보고하지 못합니다. alpamon을 업데이트하면 상태가 표시됩니다.
  • 해당 없음: 설정이 꺼져 있거나 Linux 서버가 아닙니다.

이 상태는 에이전트가 마지막으로 보고한 내용입니다. 호스트에서 패키지를 직접 제거하거나 바꾸면 반영되지 않습니다. 확실하지 않다면 서버에서 직접 확인하세요:

bash
# Debian/Ubuntu
dpkg-query -W alpamon-pam
 
# RHEL/CentOS/Rocky/Alma/Fedora
rpm -q alpamon-pam
최종 수정: