diff --git a/debian-config.sh b/debian-config.sh index ed217c9..9506f33 100755 --- a/debian-config.sh +++ b/debian-config.sh @@ -2,7 +2,7 @@ echo "Usage: this.sh [NewUser]" echo "Example: this.sh alice" -echo "curl https://git.faronear.org/fon/sysconfig/raw/branch/main/debian-config.sh | sudo bash" +echo "curl https://git.faronear.org/fon/sysconfig/raw/branch/main/debian-config.sh > ~/debian-config.sh && sudo bash ~/debian-config.sh" if [ v$1 != v ] then @@ -16,18 +16,8 @@ apt update apt install -y emacs git curl screen sudo automake rsync echo -echo "=== Making dir /faronear" -if [ ! -d "/faronear" ] -then - mkdir /faronear -fi -echo - echo "=== Making dir /faronear/fon" -if [ ! -d "/faronear/fon" ] -then - mkdir /faronear/fon -fi +mkdir -p /faronear/fon echo echo "=== Git cloning to /faronear/fon/sysconfig" @@ -39,7 +29,7 @@ fi echo echo "=== Configure root home" -source /faronear/fon/sysconfig/home-config.sh /faronear/fon/sysconfig/nixhome +source /faronear/fon/sysconfig/home-config.sh /faronear/fon/sysconfig/nixhome root echo echo "=== Change root password? for yes, for omit:" diff --git a/home-config.sh b/home-config.sh index e138bf5..da2d910 100755 --- a/home-config.sh +++ b/home-config.sh @@ -31,12 +31,15 @@ else fi fi -# $2 应当为用户名。为空则默认是 root -if [ "$2" ] +# $2 应当为用户名 +if [ "$2" == 'root' ] +then + HomePath=/root +elif [ "$2" ] then HomePath=/home/$2 else - HomePath=/root + HomePath=~ fi if [ -d "$HomePath" ] @@ -63,35 +66,30 @@ then done echo - if [ $2 ] # 如果 $2 不存在,则默认为是 root 用户,不需要设置 .ssh - then - - mkdir -p $HomePath/.ssh - chmod 700 $HomePath/.ssh - # 注意,由 root 为新用户创建的配置文件的 owner 是 root,而不是新用户,导致新用户无法读取该文件而密钥登录失败,因此要重设 owner。 - chown $2:$2 $HomePath - if [ -e '$HomePath/.ssh/authorized_keys' ] - then - mv $HomePath/.ssh/authorized_keys $HomePath/.ssh/authorized_keys.backup-$(date +%Y%m%d%H%M%S) - fi - - echo "=== Append or link or omit [$HomePath/.ssh/authorized_keys] to config ssh server? for append, for link, <> for omit:" - read -p ">>> " CopyOrLinkOrOmitAuthorizedKeys - - if [ "$CopyOrLinkOrOmitAuthorizedKeys" = 'l' ] - then - echo "--- Linking $SourcePath/authorized_keys to $HomePath/.ssh/authorized_keys ..." - ln -s $SourcePath/.ssh/authorized_keys $HomePath/.ssh/authorized_keys - elif [ "$CopyOrLinkOrOmitAuthorizedKeys" = 'a' ] - then - echo "--- Copying $SourcePath/authorized_keys to $HomePath/.ssh/authorized_keys ..." - cat $SourcePath/.ssh/authorized_keys >> $HomePath/.ssh/authorized_keys - chmod 600 $HomePath/.ssh/authorized_keys - fi - echo - + mkdir -p $HomePath/.ssh + chmod 700 $HomePath/.ssh + # 注意,由 root 为新用户创建的配置文件的 owner 是 root,而不是新用户,导致新用户无法读取该文件而密钥登录失败,因此要重设 owner。 + chown $2:$2 $HomePath + if [ -e '$HomePath/.ssh/authorized_keys' ] + then + mv $HomePath/.ssh/authorized_keys $HomePath/.ssh/authorized_keys.backup-$(date +%Y%m%d%H%M%S) fi + echo "=== Append or link or omit [$HomePath/.ssh/authorized_keys] to config ssh server? for append, for link, <> for omit:" + read -p ">>> " CopyOrLinkOrOmitAuthorizedKeys + + if [ "$CopyOrLinkOrOmitAuthorizedKeys" = 'l' ] + then + echo "--- Linking $SourcePath/authorized_keys to $HomePath/.ssh/authorized_keys ..." + ln -s $SourcePath/.ssh/authorized_keys $HomePath/.ssh/authorized_keys + elif [ "$CopyOrLinkOrOmitAuthorizedKeys" = 'a' ] + then + echo "--- Copying $SourcePath/authorized_keys to $HomePath/.ssh/authorized_keys ..." + cat $SourcePath/.ssh/authorized_keys >> $HomePath/.ssh/authorized_keys + chmod 600 $HomePath/.ssh/authorized_keys + fi + echo + popd else echo "!!! Not existing $HomePath, please try again."