Tutoriel Linux

리눅스 사용자: 계정 목록을 확인하고 접근 권한을 파악하는 데 유용한 명령어

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

리눅스 서버를 인수했을 때 가장 먼저 떠오르는 질문은 “지금 누가 접속했지?”가 아닙니다. 진짜 질문은 대개 다음과 같습니다. 어떤 계정이 아직도 존재하는지어떤 사용자가 로그인할 수 있고, 어떤 사용자가 민감한 권한을 가지고 있는지를 파악합니다.

사용자 계정, 돋보기, 보안 자물쇠가 있는 서버 앞에 서 있는 턱스의 일러스트
리눅스 계정 목록을 보면 사람의 접근 권한, 민감한 그룹, 잊어버린 SSH 키 등을 파악하는 데 도움이 됩니다.

이 가이드에서는 당황하지 않고 사용자 목록을 깔끔하게 정리하겠습니다. /etc/passwd다음으로, 먼저 확인해야 할 계정을 파악하세요. 미리 말씀드리지만, 이름이 이상해 보인다고 해서 아무 계정이나 삭제하지 마세요. 리눅스에서는 많은 계정이 서비스용으로 사용됩니다.

/etc/passwd 파일을 읽을 때 시스템 계정과 사용자 계정을 혼동하지 않도록 주의하세요.

파일 /etc/passwd 로컬에 알려진 계정 목록을 표시합니다. 암호는 평문으로 표시되지 않지만 계정 이름, UID, GID, 홈 디렉터리 및 셸과 같은 유용한 정보를 제공합니다.

cat /etc/passwd

한 줄은 이렇게 생겼습니다:

nathan:x:1000:1000:Nathan Martin:/home/nathan:/bin/bash

각 필드는 콜론으로 구분됩니다. 처음 살펴볼 때는 이름, UID, 홈 디렉터리 및 셸에 집중하세요.

cut -d: -f1,3,6,7 /etc/passwd

많은 배포판에서 사용자 계정은 UID로 시작합니다. 시스템 계정은 종종 더 낮은 UID 또는 셸과 같은 이름을 갖습니다. /usr/sbin/nologin 또는 /bin/false이것이 보편적인 규칙은 아니지만, 좋은 첫 번째 필터 역할을 합니다.

awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}' /etc/passwd

매뉴얼 페이지 비밀번호(5) 이 파일에는 정확한 파일 형식이 자세히 나와 있습니다. 오래된 서버나 다소 특이한 배포판을 점검해야 할 때 유용하게 사용할 수 있도록 보관해 두세요.

계정이 로컬에만 국한되지 않는 경우 getent를 사용하는 것이 좋습니다.

단순한 자세에서, /etc/passwd 대부분의 경우 이것으로 충분합니다. 하지만 LDAP, Active Directory, SSSD 또는 다른 디렉터리와 통합된 서버에서는 이것만으로는 부족할 수 있습니다. 그런 경우에는 다음을 사용하십시오. getent이는 시스템에 구성된 데이터베이스를 조회합니다.

getent 비밀번호

특정 계정을 확인하려면:

getent passwd nathan

사용자 UID가 포함된 계정 목록을 보다 읽기 쉽게 생성하려면 다음과 같이 하세요.

getent passwd | awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}'

회사 컴퓨터에서는 이 방법을 선호하는데, 로컬 파일에 기록되지 않았다는 이유만으로 계정이 존재하지 않는다고 가정하는 오류를 방지할 수 있기 때문입니다. 해당 명령어는 문서에 설명되어 있습니다. getent(1).

민감한 그룹 및 권한을 확인하세요

계정 목록을 작성하는 것도 좋지만, 어떤 계정이 문제를 일으킬 수 있는지 아는 것이 더 중요합니다. 특정 사용자부터 시작해 보세요. ID :

이드 네이슨
그룹 네이선

UID, 기본 그룹 및 보조 그룹을 확인할 수 있습니다. 자세히 살펴봐야 할 그룹은 분포에 따라 다르지만, sudo, 바퀴, 아담, 도커 또는 특정 애플리케이션 그룹은 단순한 사용자 액세스 이상의 훨씬 더 많은 기능을 제공할 수 있습니다.

getent 그룹 sudo
getent 그룹 휠
getent 그룹 도커
getent 그룹 관리자

계정이 나타나는 경우 sudo 또는 바퀴sudoers 설정도 확인해 보세요. 오래되고 잊혀진 관리자 권한이 있는 계정은 나중에 문제를 일으킬 수 있는 중요한 요소입니다. 이와 관련하여 저희 가이드를 참고하세요. 리눅스에서 sudo 사용법 익히기 이 초기 점검은 좋은 보완책입니다.

명령 id(1) 그리고 그룹(1) 간단해 보이지만, 계정의 실제 범위를 빠르게 파악할 수 있게 해줍니다.

로그인할 수 있는 계정을 식별하세요

나열된 계정 중 일부가 로그인용은 아닙니다. 현재 대화형 셸이 있는 계정만 확인하려면 셸을 필터링할 수 있습니다.

getent 비밀번호 | grep -E '/bin/(bash|sh|zsh|fish)$'

이 필터는 완벽하지는 않지만 검토할 초기 목록을 제공합니다. 다음으로, 계정에 개인 폴더가 있는지 확인하세요.

getent passwd | awk -F: '$6 ~ /^/home/ {print $1, $6, $7}'
ls -1 /home

SSH를 통해 노출된 서버를 감사하는 경우 사용자 디렉터리에 있는 키도 확인하십시오.

sudo find /home -maxdepth 3 -path '*/.ssh/authorized_keys' -type f -ls

잘못된 계정에 SSH 키가 등록되어 있으면 접근 권한이 유지될 수 있습니다. 인증 설정을 정리해야 하는 경우, 관련 문서도 다시 읽어보세요. 우분투에서 SSH 키 생성하기.

섣부른 결론을 내리지 말고 최신 연결 상태를 확인하세요.

지금 누가 온라인 상태인지 확인하려면:

WHO
승

최근 기록의 경우:

마지막 -a | 헤드
sudo lastlog | head -30

마지막 로그 이는 해당 계정이 한 번도 로그인된 적이 없음을 나타낼 수 있지만, 그것만으로 계정이 쓸모없다고 단정짓기는 어렵습니다. 계정은 서비스, 예약된 작업, 애플리케이션에 사용되거나 백업 절차를 위해 생성되었을 수 있습니다. 이러한 명령은 자동적인 판단 기준이 아니라 신호로 활용하십시오. 라스트로그(8) 사용 가능한 옵션을 지정합니다.

의심스러운 연결 이후 이상 징후를 찾고 있다면 시스템 로그를 함께 활용하십시오.

sudo journalctl -u ssh -b
sudo journalctl -p warning..alert -b

우리의 가이드 journalctl과 마지막 시작 시 로그 무작위로 검색하지 않고도 이 부분을 구성하는 데 도움이 될 수 있습니다.

청소하기 전에 사용하는 간단한 체크리스트

  • 계정의 정확한 슬러그 이름, UID, 홈 디렉터리 및 셸을 기록해 두세요.
  • 민감한 그룹 : 제어 sudo, 바퀴, 도커, 아담 및 응용 프로그램 그룹.
  • SSH 액세스 : 파일 검색 승인_키 변경하기 전에 사본을 보관하십시오.
  • 마지막 활동 : 십자가 마지막, 마지막 로그 그리고 신문들은 단 하나의 단서에 근거해서 삭제하지 않고 그대로 두었습니다.
  • 관련 서비스 계정을 비활성화하기 전에 해당 계정이 서비스 또는 애플리케이션에 속하는지 확인하십시오.

계정이 정말 불필요해 보인다면 폴더를 삭제하기보다는 계정을 잠그거나 로그인을 비활성화하는 것부터 시작하세요. 서버에서는 항상 계정을 추적하고 서비스를 테스트한 다음 정리하는 방식을 선호합니다. 이렇게 하면 극적인 변화는 아니지만, "알 수 없는" 계정이 실제로 매일 사용되고 있어서 애플리케이션이 고장 나는 것을 방지할 수 있습니다.

sudo passwd -l old_account
sudo systemctl --실패
sudo journalctl -p warning..alert -b

이 검사를 마치면 사람 계정, 시스템 계정, 관리자 권한, SSH 접근 권한 및 최근 활동 내역을 훨씬 명확하게 확인할 수 있습니다. 이 검사를 활성 서비스와 연결하려면 다음을 사용할 수 있습니다. systemctl 서비스 목록 그리고 컴퓨터에서 실제로 무엇이 실행되고 있는지 확인해 보세요.

sudo apt update && sudo apt upgrade