Linux가 다중 사용자 환경을 어떻게 효율적으로 관리하는지 궁금하십니까? 이 기사에서는 Linux가 사용자 암호와 로그인을 저장하고 관리하는 방법을 설명합니다.
/etc/passwd 파일 탐색
사용자가 사용자 이름과 암호를 입력하면 Linux는 "/etc" 디렉토리에 있는 여러 파일의 항목과 비교하여 입력한 암호를 확인합니다.
"/etc/passwd"는 사용자 정보를 저장하는 가장 중요한 파일 중 하나입니다.
이 파일의 마지막 항목은 "탄소" 사용자에 해당합니다. 콜론(:)으로 구분된 여러 정보 필드가 있습니다.
carbon
:이 항목이 해당하는 사용자의 이름입니다.x
:사용자에 대한 암호가 있음을 나타냅니다. 그러나 암호는 "/etc/shadow" 파일에 저장됩니다.x
대신!
를 보여줍니다. 기호는 암호가 존재하지 않음을 나타냅니다.1000
:이 사용자의 사용자 ID입니다.1000
:이 사용자가 속한 그룹의 그룹 ID입니다.carbon, , ,
:성명과 전화번호를 포함한 여러 정보 필드를 나타냅니다. 여기에는 전화번호가 제공되지 않았습니다./home/carbon
:이 사용자에게 할당된 홈 디렉토리의 위치입니다./bin/bash
:이 사용자에게 할당된 기본 셸입니다.
일부 전화 번호가 저장된 다른 사용자를 생성해 보겠습니다. 사용자 "pluto"는 adduser
를 사용하여 시스템에 추가됩니다. 명령.
"etc/passwd" 파일을 다시 보면 사용자 "pluto"에 대한 전체 정보를 볼 수 있습니다. 이름과 번호가 쉼표로 구분된 목록이 있는 필드를 "GECOS 필드"라고 합니다.
사용자가 생성될 때마다 "/etc/adduser.conf" 파일에 할당해야 하는 홈 디렉토리 및 기본 셸 값이 지정됩니다.
생성된 사용자의 사용자 ID는 1000에서 시작하여 59999까지 실행됩니다.
사용자 "carbon"은 단순히 cat
를 사용하여 "/etc/passwd" 파일의 항목을 볼 수 있었습니다. 명령. 권한을 살펴보겠습니다.
"루트" 사용자만 파일에 쓸 수 있습니다. 다른 사용자는 파일을 읽을 수만 있습니다. 이 파일은 모든 사람이 읽을 수 있으므로 여기에 암호를 저장하는 것은 이상적이지 않습니다. 대신 "/etc/shadow"라는 다른 파일에 저장됩니다.
/etc/shadow 파일 탐색
이제 "/etc/shadow" 파일에서 "carbon" 및 "pluto" 사용자에 대해 저장된 비밀번호를 보도록 하겠습니다.
"/etc/shadow" 파일에 대한 권한을 살펴보면 "루트" 사용자만 파일을 읽고 쓸 수 있음을 알 수 있습니다. 또한 "shadow" 그룹의 구성원만 파일을 읽을 수 있습니다. 실제로 "shadow" 그룹은 비어 있지만 이 파일에는 구문상 필요합니다.
"root"로 로그인하면 "/etc/shadow"의 마지막 10줄을 볼 수 있습니다. "/etc/passwd"의 모든 항목에 대해 이 파일에 해당 항목이 있습니다. 형식은 다음과 같습니다.
pluto:$6$JvWfZ9u....:18283:0:99999:7:::
이 파일에서도 모든 항목에는 콜론(:)으로 구분된 여러 필드가 있습니다. "pluto" 사용자의 항목을 해독해 보겠습니다.
pluto
:이 항목이 해당하는 사용자의 이름입니다.$6$JvWfZ9u.$yGFIqOJ....
:사용된 해시 알고리즘에 대한 정보와 함께 해시된 사용자 비밀번호가 저장됩니다. 또한 일반 텍스트 암호와 함께 솔트 값을 사용하여 암호 해시를 생성합니다.
{ plaintext password, salt} -> hashed password
이 필드의 내용을 처리해 보겠습니다. $
기호는 세 필드를 구분하는 구분 기호로 사용됩니다.
$6 $JvWfZ9u. $yGFIqOJ....
$6
:사용된 해싱 알고리즘. 다음은 잠재적인 해싱 알고리즘 목록입니다.- $1:MD5
- $2a :복어
- $2y :Eksblowfish
- $5:SHA-256
- $6 :SHA-512
$JvWfZ9u.
:소금 값.$yGFIqOJ....
:해시된 비밀번호.
결과 해시 값은 사용자의 암호화된 암호로 저장됩니다. 소금 값은 모든 사용자에게 고유합니다. 두 명의 사용자가 동일한 일반 텍스트 암호를 가지고 있더라도 고유한 솔트를 사용하면 고유한 해시 값이 생성됩니다.
이 항목의 나머지 필드에 이어
18283
:1970년 1월 1일 이후 마지막으로 비밀번호가 변경된 일수를 나타냅니다.0
:이 필드는 암호를 변경할 수 있는 일 수를 나타내는 데 사용됩니다. 0 값은 비밀번호를 언제든지 변경할 수 있음을 의미합니다.99999
:이 필드는 암호를 변경해야 하는 일수를 나타냅니다. 99999 값은 사용자가 원하는 만큼 암호를 유지할 수 있음을 나타냅니다.7
:비밀번호가 만료되도록 설정된 경우 이 필드는 사용자에게 비밀번호 만료에 대해 경고할 일 수를 나타냅니다.: : :
세 개 이상의 필드가 이 항목의 일부이지만 여기서는 비어 있습니다. 첫 번째는 비밀번호가 만료된 후 계정이 비활성화될 때까지 기다려야 하는 일 수를 나타냅니다. 두 번째 것은 1970년 1월 1일 이후로 계정이 비활성화된 일수를 나타냅니다. 세 번째 필드는 향후 사용을 위해 예약되어 있습니다. 빈 필드는 이 사용자의 기존 비밀번호가 만료되지 않았으며 곧 만료되도록 설정되지 않았음을 나타냅니다.
비밀번호 유효성과 관련된 마지막 7개 필드는 집합적으로 "비밀번호 에이징 정책"에 대한 정보를 보유한다고 합니다.
"암호 에이징 정책"에 해당하는 기본값은 "/etc/login.defs" 파일에 지정됩니다. 이 값은 change
를 사용하여 사용자에 대해 변경할 수 있습니다. 명령.
그룹 정보는 어떻게 되나요?
사용자 정보 및 암호는 "/etc/passwd" 및 "/etc/shadow" 파일에 저장됩니다. 마찬가지로 그룹 정보는 "/etc/group" 파일에 저장됩니다.
위에서 강조 표시된 것은 사용자 "carbon" 및 "pluto"에 속하는 그룹입니다. Linux에서 사용자가 생성되면 해당 사용자는 사용자 이름과 동일한 이름을 가진 그룹에 즉시 할당됩니다.
그룹의 구성원은 그룹 관련 활동을 위해 그룹 암호도 공유할 수 있습니다. x
의 값 해당 그룹의 비밀번호 정보가 "/etc/gshadow" 파일에 있음을 나타냅니다.
그러나 "/etc/gshadow"에 대한 액세스는 "root" 사용자로 제한됩니다.
"루트" 사용자는 "/etc/shadow"와 유사한 "/etc/gshadow" 항목을 볼 수 있습니다. "carbon" 그룹에 대한 항목을 보면 두 번째 필드에 !
값이 있음을 알 수 있습니다. , 이는 이 그룹에 대한 암호가 존재하지 않음을 나타냅니다.
모두 합치기
사용자가 로그인을 원할 때 "/etc/shadow"에서 해당 사용자의 솔트 값을 사용하여 입력한 암호의 해시를 찾습니다. 그런 다음 저장된 해시와 비교됩니다. 값이 일치하면 사용자에게 액세스 권한이 부여됩니다.
관련:
- Linux에서 루트 비밀번호를 재설정하는 방법
- Linux의 터미널에서 사용자 비밀번호를 관리하는 방법