创建目录和用户,然后为创建的用户授予此创建的目录的权限

创建目录和用户,然后为创建的用户授予此创建的目录的权限

我想学习 shell 脚本,需要你的帮助。

问题:我的脚本应该首先创建一个X目录,然后创建一个用户,如果该用户不存在,它会创建一个对所创建的X目录具有完全读写权限的用户。我不知道我的错误在哪里。

我的代码

#!/bin/bash
echo "Please create a directory Name! "
read dn
cd
mkdir /home/$dn
ls /home


echo write the user Name!
read usrnm

if [ `sed -n "/^$usrnm/p" /etc/passwd` ]
then
    echo "the user $usernm" exists already
else
    useradd -M $usernm
    chown -R $usernm /home/$dn
    chmod -R u+rX /home/$dn
    echo $usernm is being successfully created!
    #cat /etc/group
fi

非常感谢您的善意反馈!

答案1

脚本中存在不少问题:

第 5 行mkdir /home/$dn- 如果用户输入的内容中包含空格,则可能会导致各种奇怪的情况,请将其替换为mkdir "/home/$dn"

9号线,echo write the user Name!不好。这 ”!”字符在 bash 中具有特殊含义,因此我会避免在脚本中按原样使用它。再次,请添加引号,例如echo 'write the user Name!'

在第 10 行中,您阅读了usrnm它,然后在不带双引号的情况下使用它,这非常糟糕,并且在第 16 行中,您使用了不同的多变的usernm

我已用更易于管理和更简单的命令替换了您的 sed 命令。

这是您的固定脚本:


#!/bin/bash
echo "Please create a directory Name! "
read dn
cd
mkdir "/home/$dn"
ls /home

echo 'write the user Name!'
read usrnm

if grep -qw "$usrnm" /etc/passwd 2>/dev/null
then
    echo "the user $usernm" exists already
else
    useradd -M "$usrnm"
    chown -R "$usrnm" "/home/$dn"
    chmod -R u+rX "/home/$dn"
    echo $usrnm is being successfully created!
fi

相关内容