Linux (Fedora 10)에서 사용자 계정을 만들고 bash 스크립트 (또는 필요한 경우)를 통해 자동으로 암호를 할당 할 수 있어야합니다.
Bash를 통해 사용자를 쉽게 만들 수 있습니다. 예 :
[whoever@server ]# /usr/sbin/useradd newuser
Bash에서 암호를 기능적으로 유사하지만 자동으로 지정할 수 있습니까?
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
답변
passwd 명령을 실행하여 파이프 입력을 보낼 수 있습니다. 따라서 다음과 같이하십시오.
echo thePassword | passwd theUsername --stdin
답변
chpasswd 를 사용할 수도 있습니다 .
echo username:new_password | chpasswd
그래서, 당신은 사용자의 암호를 변경 username
하는 new_password
.
답변
나는 나 자신에게 같은 것을 요구하고 있었고, 파이썬 스크립트에 의존하고 싶지 않았다.
이것은 하나의 bash 행에 정의 된 비밀번호를 가진 사용자를 추가하는 행입니다.
useradd -p $(openssl passwd -1 $PASS) $USER
답변
아래 코드는 우분투 14.04에서 작동했습니다. 다른 버전 / 리눅스 변형에서 사용하기 전에 사용해보십시오.
# quietly add a user without password
adduser --quiet --disabled-password --shell /bin/bash --home /home/newuser --gecos "User" newuser
# set password
echo "newuser:newpassword" | chpasswd
답변
Tralemonkey의 접근 방식이 마음에 들었지만 echo thePassword | passwd theUsername --stdin
서면으로는 제대로 작동하지 않았습니다. 그러나 이것은 나를 위해 일했습니다.
echo -e "$password\n$password\n" | sudo passwd $user
-e
\n
새 줄로 인식 하는 것입니다.
sudo
우분투에 대한 루트 액세스입니다.
큰 따옴표는 $
변수 를 인식 하고 확장하는 것입니다.
위의 명령은 암호 및 새 줄, 두 번에 통과하는 passwd
것입니다, passwd
필요합니다.
변수를 사용하지 않으면 아마도 효과가 있다고 생각합니다.
echo -e 'password\npassword\n' | sudo passwd username
작은 따옴표로 충분합니다.
답변
다음은 저에게 효과적이며 Ubuntu 14.04에서 테스트되었습니다. 사용자 입력이 필요없는 하나의 라이너입니다.
sudo useradd -p $(openssl passwd -1 $PASS) $USERNAME
@Tralemonkey에서 가져온
답변
-p 옵션을 사용할 수 있습니다.
useradd -p encrypted_password newuser
불행히도,이 경우 암호를 직접 해시해야합니다 (passwd가 암호를 대신 사용함). 불행히도 일부 데이터를 해시하는 표준 유틸리티가없는 것 같으므로 직접 작성해야합니다.
다음은 암호화를 위해 작성한 작은 Python 스크립트입니다. pcrypt라고 가정하면 위의 명령 줄을 다음과 같이 작성하십시오.
useradd -p $(pcrypt ${passwd}) newuser
알아야 할 몇 가지 경고.
- pcrypt가 실행되는 동안 일반 텍스트는 ps 명령을 통해 모든 사용자에게 표시됩니다.
- pcrypt는 이전 스타일의 crypt 기능을 사용합니다. MD5 해시와 같이 더 현대적인 것을 사용하는 경우 pcrypt를 변경해야합니다.
그리고 여기 pcrypt가 있습니다 :
#!/usr/bin/env python
import crypt
import sys
import random
saltchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
def salt():
return random.choice(saltchars) + random.choice(saltchars)
def hash(plain):
return crypt.crypt(arg, salt())
if __name__ == "__main__":
random.seed()
for arg in sys.argv[1:]:
sys.stdout.write("%s\n" % (hash(arg),))