[linux] Bash 스크립트로 사용자 계정과 비밀번호를 자동으로 추가하는 방법은 무엇입니까?

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

알아야 할 몇 가지 경고.

  1. pcrypt가 실행되는 동안 일반 텍스트는 ps 명령을 통해 모든 사용자에게 표시됩니다.
  2. 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),))