아래 스크립트는 제가 시도한 것이지만 실행 시 여전히 사용자 비밀번호와 기타 정보를 묻습니다.
#!/bin/bash
PASSWORD="somepassword"
USERNAME="default"
if id -u "$USERNAME" >/dev/null 2>&1; then
userdel -r -f $USERNAME
adduser --disabled-password --gecos "" $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
else
adduser $USERNAME
adduser --disabled-password --gecos "" $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
fi
답변1
경고하다: 스크립트에서 비밀번호를 암호화되지 않은 상태로 두는 것은 매우 나쁜 생각입니다. 그래도 이 작업을 선택했다면 적어도 루트를 통해 파일에 대한 권한을 600으로 변경하세요. 이렇게 하면 간단한 공격으로부터 보호됩니다.
그 다음에:
내가 본 첫 번째 문제는 adduser
else 부분을 두 번 호출한다는 것입니다.
그러면 모든 질문을 묻는 첫 번째 실행이 시작됩니다.
두 번째 호출은 잘 작동합니다.
게다가 then과 else 부분 사이에는 많은 공통 옵션이 있습니다. 스크립트는 다음과 같이 작성할 수 있습니다.
#!/bin/bash
$PassWord="somepassword"
UserName="default"
if id -u "$UserName" >/dev/null 2>&1; then
userdel -r -f "$UserName"
fi
adduser --disabled-password --gecos "" "$UserName"
userdir=/home/"$UserName"
[[ -d $userdir ]] || mkdir "$userdir" # only needed for system users.
# which usually do not have a password.
usermod -a -G sudo "$UserName"
echo "$UserName:$PassWord" | chpasswd
답변2
adduser
이를 자율 스크립트에서 사용하려고 하면 결과가 끔찍할 것입니다. 나는 useradd
아래의 스크립트를 완전히 수정한 좋은 이전 버전을 사용하게 되었습니다 .
#!/bin/bash
PASSWORD="somepassword"
USERNAME="default"
if id -u "$USERNAME" >/dev/null 2>&1; then
userdel -r -f $USERNAME
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
else
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
fi