Linux에서 암호는 어디에 어떻게 저장됩니까?

Where How Are Passwords Stored Linux



특정 계정에 해당하는 암호가 있는 사용자 이름은 사용자가 Linux 시스템에 액세스할 수 있는 기본 요구 사항입니다. 모든 사용자의 계정 비밀번호는 시스템에 로그인을 시도하는 동안 사용자를 확인할 수 있도록 파일이나 데이터베이스에 저장됩니다. 모든 사용자는 시스템에서 이 파일을 찾을 수 있는 충분한 기술과 전문 지식을 갖고 있지 않습니다. 그러나 모든 로그인 사용자의 비밀번호를 보관하고 있는 데이터베이스나 파일에 접근하면 리눅스 시스템에 쉽게 접근할 수 있다. 사용자가 Linux에서 로그인을 위해 사용자 이름과 비밀번호를 입력하면 '/etc' 디렉토리의 다양한 파일에 있는 항목과 입력한 비밀번호를 확인합니다.

/etc/passwd 파일은 사용자 로그인에 필요한 모든 중요한 정보를 보관합니다. 쉽게 설명하자면 /etc/passwd 파일은 사용자의 계정 정보를 저장합니다. 이 파일은 Linux 시스템에 있는 모든 사용자의 전체 목록을 포함하는 일반 텍스트 파일입니다. 여기에는 사용자 이름, 암호, UID(사용자 ID), GID(그룹 ID), 셸 및 홈 디렉터리에 대한 정보가 있습니다. 많은 명령줄 유틸리티가 사용자 ID를 사용자 이름에 매핑하는 데 사용되므로 이 파일에는 읽기 권한이 있어야 합니다. 그러나 수퍼유저 또는 루트 사용자 계정에 대해서만 제한된 쓰기 액세스 권한이 있어야 합니다.







이 기사에서는 Linux 배포판에서 시스템 사용자의 계정 암호를 저장하는 방법과 위치를 보여줍니다. Ubuntu 20.04 시스템에서 모든 데모를 구현했습니다. 그러나 모든 Linux 배포판에서 /etc/passwd 파일을 찾을 수 있습니다.



전제 조건

관리 명령을 실행하려면 루트 권한이 있어야 합니다.



/etc/passwd 파일에 대한 기본 이해

/etc/passwd 파일에는 시스템의 사용자 계정에 대한 정보가 들어 있습니다. 저장된 모든 필드는 콜론 : 기호로 구분됩니다.
다음 명령을 실행하면 /etc/passwd 파일의 각 파일 항목이 표시됩니다.





$고양이 //암호

위의 명령은 Linux 시스템의 모든 사용자를 나열합니다.
다음 유형의 형식이 터미널 화면에 표시됩니다.

/etc/passwd 필드 형식에 대한 세부 정보
위 이미지에서:

사용자 이름: 필드 1은 사용자의 이름을 나타냅니다. 사용자 이름 필드의 길이는 1-32자 사이로 정의됩니다. 사용자가 시스템에 로그인할 때 사용됩니다. 위의 예에서 'khuzdar'는 사용자 이름입니다.
비밀번호: 위의 예에서 x 문자는 암호가 /etc/shadow 파일에 암호화된 형태로 저장되어 있음을 나타냅니다.
사용자 ID(UID): 사용자 ID는 각 사용자에게 별도로 할당되어야 합니다. UID 0은 루트 사용자에게 할당되고 1-99의 사용자 ID는 사전 정의된 또는 표준 계정에 할당됩니다. 100-999의 추가 UID는 시스템 관리 계정 또는 그룹에 할당됩니다. 위 스크린샷에서 사용자 ID는 1001입니다.
그룹 ID(GID): 다음 필드는 그룹 ID를 나타냅니다. GID는 /etc/group 파일에 저장됩니다. 위의 예를 기반으로 사용자는 그룹 ID 1001에 속합니다.
사용자 ID에 대한 정보: 다음 필드는 주석을 위한 것입니다. 이 필드에서 사용자의 전체 이름, 전화번호 등과 같이 지정된 사용자에 대한 몇 가지 추가 정보를 추가할 수 있습니다. 그러나 위의 예에서는 사용자가 전화번호를 제공하지 않습니다.
홈 디렉토리: 이 필드는 현재 사용자에게 할당된 홈 디렉토리의 위치를 ​​보여줍니다. 지정된 디렉토리가 존재하지 않으면 /를 표시합니다. 위 이미지는 홈 디렉토리인 home/kbuzdar에서 강조 표시된 사용자의 위치를 ​​보여줍니다.
명령//쉘: 쉘 또는 명령의 기본 절대 경로는 /bin/bash입니다. 이것은 쉘로 알려져 있습니다. 예를 들어 nologin 셸을 사용하는 sysadmin입니다. 시스템 사용자 계정의 대체 셸로 작동합니다. 쉘이 /sbin/nologin 경로에 있고 사용자가 Linux 시스템에 직접 로그인하려는 경우 /sbin/nologin 쉘은 연결을 닫거나 비활성화합니다.



/etc/passwd 파일에서 사용자 검색

grep 명령을 사용하여 /etc/passwd 파일로 특정 사용자를 검색할 수 있습니다. 예를 들어, 다음 구문을 사용하여 /etc/passwd 파일에서 사용자 이름 'kbuzdar'를 검색하려는 경우 지정된 사용자를 쉽게 검색하여 시간을 절약할 수 있습니다.

$꽉 붙잡음사용자 이름//암호

위의 구문은 다음 모양으로 변경됩니다.

$꽉 붙잡음찍찍 소리 내는//암호


또는

$꽉 붙잡음 -에 '^kbuzdar' //암호

/etc/passwd 파일에 대한 권한 표시

위에서 언급했듯이 루트를 제외한 다른 모든 사용자는 /etc/passwd 파일에 대한 권한을 읽을 수 있어야 하며 소유자는 수퍼유저 또는 루트여야 합니다.
다음을 입력하여 파일에 대한 읽기 권한을 확인합니다.

$ -NS //암호

다음 출력 샘플이 터미널에 표시됩니다.

/etc/passwd 파일 읽기

다음 bash 스크립트를 사용하여 Linux 시스템에서 /etc/passwd 파일을 읽거나 터미널에서 아래에 작성된 while 루프 명령을 직접 실행할 수 있습니다.
텍스트 파일을 만들고 여기에 다음 코드를 붙여넣습니다.

#!/bin/bash
# $f1,f2...,$f7로 저장된 /etc/passwd의 총 7개 필드

동안 IFS=:읽다 -NSf1 f2 f3 f4 f5 f6 f7
~하다
던졌다 '사용자$ f1사용하다$f7쉘에 파일을 저장하고$f6예배 규칙서.'
완료 < //암호

while 루프를 사용하여 7개 필드를 모두 읽은 다음 터미널에 파일 내용을 반복적으로 표시합니다.
위의 파일을 'readfile.sh'라는 이름으로 저장합니다.

이제 다음 명령을 사용하여 위의 파일을 실행합니다.

$세게 때리다readfile.sh

/etc/shadow 파일 탐색

/etc/shadow 파일에는 루트 사용자만 읽을 수 있는 이 파일에 저장된 모든 암호화된 암호가 포함되어 있습니다.
다음 명령을 실행하여 콘텐츠를 표시해 보겠습니다.

$수도 고양이 //그림자

암호화된 형식의 모든 비밀번호를 볼 수 있습니다.

결론

우리는 위의 기사에서 Linux 시스템의 /etc/passwd 파일에 저장된 모든 사용자 계정 정보와 비밀번호를 보았습니다. 이 파일을 읽을 수 있지만 루트 사용자만 쓰기 권한이 있습니다. 또한 /etc/shadow 파일에 저장된 모든 암호화된 암호도 보았습니다. /etc/group 파일을 탐색하여 사용자 그룹에 대한 세부 정보를 얻을 수도 있습니다.