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 ]#
chpasswd를 사용할 수도 있습니다.
echo username:new_password | chpasswd
를 '비밀번호'로 됩니다.username
로로 합니다.new_password
.
passwd 명령을 실행하여 파이핑된 입력을 전송할 수 있습니다.다음과 같은 작업을 수행합니다.
echo thePassword | passwd theUsername --stdin
저도 같은 질문을 하고 있었습니다.파이썬 스크립트에 의지하고 싶지 않았습니다.
다음 행은 정의된 비밀번호를 가진 사용자를 1개의 bash 행에 추가하는 행입니다.
useradd -p $(openssl passwd -crypt $PASS) $USER
다음 코드는 Ubuntu 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
에 들었다.echo thePassword | passwd theUsername --stdin
글처럼 잘 되진 않았지만요.하지만 이것은 나에게 효과가 있었다.
echo -e "$password\n$password\n" | sudo passwd $user
-e
\n
새로운 행으로서.
sudo
우분투의
큰따옴표는 다음 사항을 인식하기 위한 것입니다.$
변수를 확장합니다.
행을 하여 2회 합니다.passwd
'이것'이 바로 '이것'입니다.passwd
요합니니다다
변수를 사용하지 않는다면 이 방법이 효과가 있을 것 같습니다.
echo -e 'password\npassword\n' | sudo passwd username
여기에서는 작은 따옴표로 충분합니다.
Ubuntu 14.04에서 테스트한 내용은 다음과 같습니다.사용자 입력이 필요 없는 1개의 라이너입니다.
sudo useradd -p $(openssl passwd -1 $PASS) $USERNAME
@Tralemonkey에서 가져온 것
단일 라이너로 홈 디렉토리와 비밀번호를 가진 sudo 사용자를 만듭니다.
useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash -G sudo ${USERNAME}
-p 옵션을 사용할 수 있습니다.
useradd -p encrypted_password newuser
아쉽게도 패스워드를 직접 해시해야 합니다(패스워드는 패스워드를 대신합니다).유감스럽게도 일부 데이터를 해시하는 표준 유틸리티는 없는 것 같기 때문에 직접 작성해야 합니다.
여기 Python 스크립트가 있습니다.암호화를 위해 준비했습니다.pcrypt 라고 하는 경우는, 상기의 커맨드 라인을 다음과 같이 기술합니다.
useradd -p $(pcrypt ${passwd}) newuser
몇 가지 경고에 유의해야 합니다.
- pcrypt 실행 중에는 ps 명령어를 사용하여 모든 사용자가 플레인텍스트를 볼 수 있습니다.
- pcrypt는 구식 암호화 기능을 사용합니다.MD5 해시 등 보다 현대적인 것을 사용하고 있다면 pcrypt를 변경해야 합니다.
다음은 ccrypt입니다.
#!/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),))
--stdin
적혀 있어요하다
`passwd: unrecognized option '--stdin'`
이 방법은 효과가 있었습니다.
#useradd $USER
#echo "$USER:$SENHA" | chpasswd
여기에서는 다른 좋은 방법을 찾을 수 있습니다.
bash 스크립트에서 expect를 사용할 수 있습니다.
http://www.seanodonnell.com/code/ ?id = 21 에서
#!/usr/bin/expect
#########################################
#$ file: htpasswd.sh
#$ desc: Automated htpasswd shell script
#########################################
#$
#$ usage example:
#$
#$ ./htpasswd.sh passwdpath username userpass
#$
######################################
set htpasswdpath [lindex $argv 0]
set username [lindex $argv 1]
set userpass [lindex $argv 2]
# spawn the htpasswd command process
spawn htpasswd $htpasswdpath $username
# Automate the 'New password' Procedure
expect "New password:"
send "$userpass\r"
expect "Re-type new password:"
send "$userpass\r"
몇 년 뒤에 올 거란 건 알지만 아무도 유저모드를 추천하지 않았다니 믿을 수가 없어
usermod --password `perl -e "print crypt('password','sa');"` root
Hell,가 오래된 에서 이것을 , HPUX를 할 수 .usermod.sam
.
/usr/sam/lbin/usermod.sam -F -p `perl -e "print crypt('password','sa');"` username
-F는 스크립트를 실행하는 사용자가 현재 사용자인 경우에만 필요합니다.물론 해시를 작성하기 위해 Perl을 사용할 필요는 없습니다.대신 openssl 또는 다른 많은 명령을 사용할 수 있습니다.
난 내 셸 스크립트로 테스트를 해봤어.
$new_username
생성된 라는 뜻입니다.$new_password
password( 패스워드)라는 입니다.
센트의 경우OS
echo "$new_password" | passwd --stdin "$new_username"
Debian/Ubuntu의 경우
echo "$new_username:$new_password" | chpasswd
오픈의 경우수세
echo -e "$new_password\n$new_password" | passwd "$new_username"
여기 당신을 위해 그것을 할 대본이 있습니다.
필요에 따라서, 유저(또는 1명만)의 리스트를 추가할 수 있습니다.모두 한 번에 다른 패스워드를 사용할 수 있습니다.보너스로 스크립트의 마지막에 각 사용자의 패스워드 리스트가 표시됩니다.....원하는 경우 일부 사용자 유지 관리 옵션을 추가할 수 있습니다.
예를 들어 다음과 같습니다.
chage -m 18 $user
chage -M 28 $user
패스워드의 경과시간을 설정하는 스크립트로 이행합니다.
=======
#!/bin/bash
# Checks if you have the right privileges
if [ "$USER" = "root" ]
then
# CHANGE THIS PARAMETERS FOR A PARTICULAR USE
PERS_HOME="/home/"
PERS_SH="/bin/bash"
# Checks if there is an argument
[ $# -eq 0 ] && { echo >&2 ERROR: You may enter as an argument a text file containing users, one per line. ; exit 1; }
# checks if there a regular file
[ -f "$1" ] || { echo >&2 ERROR: The input file does not exists. ; exit 1; }
TMPIN=$(mktemp)
# Remove blank lines and delete duplicates
sed '/^$/d' "$1"| sort -g | uniq > "$TMPIN"
NOW=$(date +"%Y-%m-%d-%X")
LOGFILE="AMU-log-$NOW.log"
for user in $(more "$TMPIN"); do
# Checks if the user already exists.
cut -d: -f1 /etc/passwd | grep "$user" > /dev/null
OUT=$?
if [ $OUT -eq 0 ];then
echo >&2 "ERROR: User account: \"$user\" already exists."
echo >&2 "ERROR: User account: \"$user\" already exists." >> "$LOGFILE"
else
# Create a new user
/usr/sbin/useradd -d "$PERS_HOME""$user" -s "$PERS_SH" -m "$user"
# passwdgen must be installed
pass=$(passwdgen -paq --length 8)
echo $pass | passwd --stdin $user
# save user and password in a file
echo -e $user"\t"$pass >> "$LOGFILE"
echo "The user \"$user\" has been created and has the password: $pass"
fi
done
rm -f "$TMPIN"
exit 0
else
echo >&2 "ERROR: You must be a root user to execute this script."
exit 1
fi
===========
이게 도움이 됐으면 좋겠다.
건배, 카렐
Debian과 Red Hat에서 모두 사용할 수 있는 솔루션.perl에 의존하며 sha-512 해시를 사용합니다.
cat userpassadd
#!/usr/bin/env bash
salt=$(cat /dev/urandom | tr -dc A-Za-z0-9/_- | head -c16)
useradd -p $(perl -e "print crypt('$2', '\$6\$' . '$salt' . '\$')") $1
사용방법:
userpassadd jim jimslongpassword
원라이너로 효과적으로 사용할 수 있지만 비밀번호, 소금 및 사용자 이름을 적절한 위치에 직접 지정해야 합니다.
useradd -p $(perl -e "print crypt('pass', '\$6\$$salt\$')") username
IBM(https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm):
텍스트 파일, 예를 들어 텍스트 파일을 만듭니다.다음과 같이 txt 및 user: password 쌍으로 입력합니다.
user1:password1
user2:password2
...
usern:passwordn
텍스트를 저장합니다.txt 파일 및 실행
cat text.txt | chpassword
바로 그겁니다.솔루션은 (a) 확장 가능하며 (b) 명령줄에 비밀번호를 인쇄하지 않습니다.
트랄레몬키의 솔루션은 내게도 거의 먹힐 뻔 했지만, 완전히 먹히지는 않았어.결국 이렇게 된 거죠.
echo -n '$#@password@#$' | passwd myusername --stdin
에 포함되지: 의의가가가 가가가2 가가 :-n
에서는 에코가 '메아리'를 합니다.\n
암호화되어 있는 패스워드에 대해서, 작은 따옴표로 내용을 셸(솔루션)에 의해서 해석되지 않게 합니다.
그런데 이 명령어는 CentOS 5.6 시스템에서 루트로 실행되어 궁금할 경우를 대비했습니다.
{ echo $password; echo $password; } | passwd $username
Red Hat / Cent의 경우OS는 사용자를 생성하고 비밀번호를 추가하여 사용자를 sudoer로 만드는 코드입니다.
#!/bin/sh
echo -n "Enter username: "
read uname
echo -n "Enter password: "
read -s passwd
adduser "$uname"
echo $uname:$passwd | sudo chpasswd
gpasswd wheel -a $uname
사용방법:./my_add_user.sh USER PASSWD
코드:
#!/bin/bash
# my_add_user.sh
if [ "$#" -lt 2 ]
then
echo "$0 username passwd"
exit
fi
user=$1
passwd=$2
useradd $user -d /data/home/$user -m ;
echo $passwd | passwd $user --stdin;
스크립트로 사용자를 작성하기 위한 sudo 권한을 가진 다음 스크립트를 실행하십시오.
주의: 이 스크립트는 Redhat, Centos, Ubuntu, suse, kali, Arch, Bitname, BSD 등의 모든 Linux OS를 지원합니다.
#!/bin/bash
#author: bablish jaiswal
#purpos: Linux user creation with a storng password
clear
#echo "Hi, I am a function to create sudo user with strong password. Kindly share following information"
echo -e "\n\n\n"
printf "\e[6;33mHi, I am a function to create sudo user with a strong password. Kindly share following information\e[0m";echo
read -p "user name:- " name #input name
read -p "complete path for $name home directory? example: /home/$name :- " home #user home path
( useradd -m -d $home $name -s /bin/bash ) > /dev/null 2>&1
pass=$(cat /dev/urandom |tr -dc "[[:graph:]]" |head -c16)
(echo -e "$pass\n$pass" | passwd $name ) > /dev/null 2>&1
echo " "
printf "\e[6;33m-----------------------------Copy below credentials-------------------------\e[0m";echo
echo -e "User:- $name\nHomeDir:- $home\npassword:- $pass"
#svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{$1=""}1')
svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{print $2}')
echo "${name} ${svalue} NOPASSWD:ALL" >> /etc/sudoers && echo “Remark:- User $name is a sudo user”
언급URL : https://stackoverflow.com/questions/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script
'programing' 카테고리의 다른 글
대상 시스템에서 백그라운드에서 명령을 실행하도록 ssh를 가져오는 중 (0) | 2023.04.08 |
---|---|
한 셸 스크립트에서 다른 셸 스크립트로 모든 변수를 전달하시겠습니까? (0) | 2023.04.08 |
.Net 데이터 구조:Array List, List, HashTable, Dictionary, Sorted List, Sorted Dictionary -- 속도, 메모리, 사용 시기 (0) | 2023.04.08 |
".bat" 파일에서 명령줄 매개 변수를 확인하는 방법 (0) | 2023.04.08 |
Angularjs 세션스토리지 및 범위 (0) | 2023.03.30 |