내 스크립트 중 하나에서 다른 컴퓨터의 디렉터리 배열을 기반으로 사용자를 만듭니다.
문제는 비밀번호 없이 생성된 이 사용자가 비밀번호가 있는 것처럼 행동한다는 것입니다. 그는 sudo 권한이 있지만 비밀번호를 요구하기 때문에 sudo를 전혀 할 수 없습니다.존재하지 않는다. 간단히 그를 루트로 설정할 수 있다는 것을 알고 있지만 시스템은 로컬 루트 권한이 있는 사용자의 개입 없이 작동하도록 설계되어야 합니다.
또한 passwd에서는 passwd를 제공해야 하므로 관련 사용자로 passwd를 사용할 수 없습니다.존재하지 않는 비밀번호입니다.
이는 예상된 동작이라고 생각합니다. 그러나 최종 기본 비밀번호는 무엇이며 이 문제를 피하려면 어떻게 해야 합니까?
편집: 스크립트가 수행하는 작업은 다음과 같습니다.
1: /opt/sshgw/home에서 생성되거나 업데이트되어야 하는 SSH 게이트웨이 시스템의 사용자 홈 디렉토리를 동기화합니다(sshgw는 SSH 게이트웨이를 의미합니다).
2: 스크립트를 실행하는 컴퓨터의 모든 사용자에 대한 모든 인증 키를 삭제합니다.
3: 휠 그룹에서 각 사용자를 제거하고usermod -L 실행(저는 스크립트 작성자가 아니며 그가 왜 계정을 잠갔는지 잘 모르겠습니다.) 하지만 이 시점에서만기존의사용자가 수정되었습니다.
4: 사용자가 sshgw에서 검색되고 로컬 시스템에 존재하지 않는 경우 사용자가 생성되고 지정된 경우 해당 사용자가 Wheel 그룹에 추가됩니다. 그런 다음 공개 키를 올바른 홈 디렉터리에 추가합니다.마지막으로 usermod -U를 실행합니다..
/etc/passwd의 사용자 입력은 정상입니다.
passwd가 호출되면 다음과 같이 사용자에게 현재 비밀번호를 묻는 메시지가 표시됩니다(비밀번호 없이 방금 생성된 사용자에게는 비밀번호가 존재할 수 없습니다).
[splatpope@monitor sshgw]$ passwd
Changing password for user splatpope.
Changing password for splatpope.
(current) UNIX password:
범인은 usermod -U인 것 같아요.
답변1
기본적으로 사용자는 잠긴 계정으로 생성됩니다. 비밀번호 해시를 포함해야 하는 필드에는 /etc/shadow
가 포함됩니다 !!
. 계정이 잠기면 해당 계정은 루트만 사용할 수 있습니다(루트는 su할 수 있지만 로그인할 수는 없음). 계정을 "잠금 해제"하면(삭제만 가능) !!
비밀번호를 변경할 수 있습니다.
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
[test@test ~]$ exit
logout
[root@test ~]# passwd -u test
Unlocking password for user test.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@test ~]# passwd -u test -f
Unlocking password for user test.
passwd: Success
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
New password:
답변2
요넥스의 답변사실을 다뤘다.예기본 비밀번호는 없습니다.
계정을 생성할 때 새로 생성된 사용자에게 비밀번호를 제공하려면 다음을 수행하세요.
useradd ... -p $(mkpasswd $Password) ... user_name
이는 다음을 가정합니다.
- 이 사용자에게 제공하려는 비밀번호는
$Password
변수에 있습니다. mkpasswd
비밀번호를 암호화하는 유틸리티가 있습니다 (whois
내 데비안 상자에 있는 패키지에 있음).
그러나 기본 동작은 계정을 비활성화하는 것입니다. 인용 출처 useradd(8)
:
-p, --password 비밀번호
crypt(3)에 의해 반환된 암호화된 비밀번호입니다. 기본값은 비밀번호를 비활성화하는 것입니다.