Linux에서 관리자 사용자를 자동으로 생성하는 작동하는 bash 스크립트 만들기

Linux에서 관리자 사용자를 자동으로 생성하는 작동하는 bash 스크립트 만들기

아래 스크립트는 제가 시도한 것이지만 실행 시 여전히 사용자 비밀번호와 기타 정보를 묻습니다.

#!/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으로 변경하세요. 이렇게 하면 간단한 공격으로부터 보호됩니다.

그 다음에:

내가 본 첫 번째 문제는 adduserelse 부분을 두 번 호출한다는 것입니다.

그러면 모든 질문을 묻는 첫 번째 실행이 시작됩니다.
두 번째 호출은 잘 작동합니다.

게다가 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

관련 정보