我正在创建一个网络应用程序,它允许我设置共享托管环境。一切都必须以编程方式完成,我怀疑我是否以完全不安全的方式处理事情。
目前,我正在创建 bash 脚本来安装和配置每个用户,然后从网络服务器执行这些脚本。但是,我仍然必须在脚本中以 sudo 身份运行命令。
例如,创建用户后,我需要以该用户身份登录并使用 wget 下载某些内容。为了达到这一点,我以 sudo 身份运行 adduser,然后从环境变量中输入密码,然后运行 sudo su 以该用户身份登录。所有这些都让人感觉非常可疑,但我还没有找到替代方案。
任何帮助将不胜感激!
答案1
可能的解决方案包含 2 个步骤:
- 设置无需密码的 sudo 访问
- 使用 sudo 以所需用户身份登录
步骤 1 被广泛描述。
例如,https://askubuntu.com/questions/147241/execute-sudo-without-password
假设您的用户名是“mark”,目标用户名是“john”:
执行:
sudo visudo
并添加到文件末尾:
mark ALL=(ALL) NOPASSWD: ALL
然后保存文件
第 2 步就容易多了:
sudo -i -u john
就这样。不用谢:-)