首页 > 解决方案 > 在 bash 脚本中更改用户

问题描述

我想为我的树莓派创建一个安装脚本,它通过配置/强化 ssh、安装防火墙和 fail2ban 来保护默认安装,最后摆脱 Raspbian 的默认用户。所有其他部分都可以工作,但最后一部分总是向我显示错误。新用户被创建并添加到 sudo 组。之后我想删除旧用户'pi'。由于脚本在“pi”的用户上下文中使用 sudo 运行,我想我可以通过切换到“su”来解决这个问题,但我只是收到一个错误,即用户无法被删除,因为它被进程使用:

echo "Enter the new user name? Only lower case letters allowed!" 
read user
sudo adduser $user && adduser $user sudo
echo "default user 'pi' will now be deleted"
su -c "deluser -remove-home pi"

如果我检查“用户”,用户“pi”就消失了,但我仍然可以使用此帐户登录。如何在脚本中解决这个问题?

我尝试了在这里找到的答案:如何使用 su 以该用户身份执行其余的 bash 脚本?在这里:https ://unix.stackexchange.com/questions/361327/how-to-login-as-different-user-inside-shell-script-and-execute-a-set-of-commands但似乎没有工作。我搜索了谷歌,但我找不到任何有效的解决方案。甚至有可能我正在尝试吗?

标签: bashauthenticationraspberry-pisudo

解决方案


我通常在脚本set -eux的开头添加。bash这允许调试和查找错别字和错误。

尝试在脚本中切换用户

sudo -i -u ${user} $(command to delete pi here)

推荐阅读