/ etc / shadow에서 비밀번호를 암호화하지 않는 useradd


20

vsftpd의 새 FTP 사용자를 만들려고 할 때이 문제가 발생했습니다. 다음 명령으로 새 사용자를 생성하고 FileZilla로 로그인을 시도하면 "잘못된 비밀번호"오류가 발생합니다.

useradd f -p pass -d /home/f -s /bin/false

이 작업을 수행 한 후 / etc / shadow

f:pass:1111:0:99:2:::

다음 명령을 실행하고 동일한 패스 패스를 제공하면

passwd f

/ etc / shadow 는 다음을 포함합니다

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

passwd를 실행할 때 암호화가 발생 하지만 useradd 에는 나타나지 않습니다.

중요하게도이 작업을 수행 한 후에는 동일한 자격 증명으로 FTP에 로그인 할 수 있습니다.

CentOS 5.11, FTP의 경우 vsftpd 및 FTP 액세스의 FileZilla를 사용하고 있습니다.

/ var / log / secure 에는 다음이 포함됩니다.

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

-p passuseradd에 전달할 때 왜 작동하지 않습니까? 작동 시키려면 어떻게해야합니까?


질문이 보이지 않습니까? -그러한 것들은 PAM을 통해 관리되며 일반적으로 로그인됩니다/var/log/secure
HBruijn

@HBruijn 나는 / var / log / secure에
BadToTheBone

2
정말? 관련 매뉴얼 페이지에서 명시 적으로 답변 한 질문에 대해 +12?
CVn

참고 암호 해시, $1$MD5를 나타냅니다가 사용됩니다 . MD5 는 암호에 대해 끔찍한 것은 아니지만 요즘에는 약한 편입니다. 완전히 별개의 질문이지만 더 강력한 해시 함수로 마이그레이션하는 것이 좋습니다.
CVn

2
참고 사항 : 비밀번호 /etc/shadow는 암호화되지 않지만 해시 됨
Tobias Kienzler

답변:


43

의도 한대로 작동합니다. useradd명령을 사용하여 비밀번호를 설정 하려면에 해시 버전의 비밀번호를 제공해야 useradd합니다.

문자열 pass은의 해시 된 비밀번호 필드에 대한 형식 기준을 충족 /etc/shadow하지만 해당 문자열에 대한 실제 비밀번호 해시는 없습니다. 결과적으로 모든 의도와 목적에 따라 해당 계정은 비밀번호를 보유한 것처럼 작동하지만 액세스에 사용하려는 비밀번호는 올바른 비밀번호가 아닌 것으로 거부됩니다.

man useradd또는 useradd 설명서를 참조하십시오 .

-p, --password 비밀번호

crypt (3)에서 리턴 한 암호화 된 비밀번호 입니다. 기본값은 비밀번호를 비활성화하는 것입니다.

참고 : 프로세스를 나열하는 사용자는 비밀번호 (또는 암호화 된 비밀번호)를 볼 수 있으므로이 옵션은 권장되지 않습니다.

비밀번호가 시스템의 비밀번호 정책을 준수하는지 확인해야합니다.


32

manuseradd :

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

해시 된 암호를 전달해야합니다.
평문 암호가 아닙니다.


16

useradd암호 자체가 아닌 암호 해시를 전달해야합니다. 명령에 다음 변형을 사용하여 명령에 해시 된 비밀번호를 제공 할 수 있습니다 useradd.

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

사용 가능한 방법을 찾으려면 다음을 사용하십시오.

mkpasswd --method=help

명령 행에서 비밀번호를 전달하지 않으려면 비밀번호를 파일에 넣고 (편집기를 사용 echo하거나 사용하지는 않음 ) 이와 같이하십시오.

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

명령 행에서 해시 된 비밀번호를 전달하지만 일반 텍스트는 전달하지 않습니다.

mkpasswdexpect패키지 와 함께 제공 됩니다.


2
MD5를 사용하지 마십시오! 사용 SHA-2
Josef

9
수행 이 일시적으로 (어떤 프로세스가 다른 프로세스의 명령 줄을 읽을 수있다)과는 $ 역사 또는 유사한 메커니즘을 통해 디스크에 일반 텍스트로 저장되는 초래할 수있는 다양한 커널 인터페이스를 통해 암호를 노출하는 메모를.
CVn

@ MichaelKjörling : 아주 좋은 지적입니다. 편집 한 답변을 참조하십시오.
추후 공지가있을 때까지 일시 중지되었습니다.

1
물론 여전히 일반 텍스트 비밀번호를 디스크에 저장하고 있습니다. 최소한 sysadmin은 선택 사항을 제공합니다. 어쩌면이 시점에서 우리는 처음에는 더미 암호를 사용하고 즉시 passwd다른 암호 로 변경하기 위해 실행하는 것이 좋습니다 ...
CVn

2
절대적으로 Dennis는 훨씬 낫지 만 암호는 여전히 디스크에서 일반 텍스트로 끝납니다. 일부 상황과 특정 위협 모델에서는 실제로 문제가 될 수 있습니다. 그럴 필요 는 없습니다 .
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.