请注意,我是一个完全的 linux 新手,在回答这个问题时请记住这一点,因为我对 linux 的了解非常有限。
操作系统: Debian 挤压
我正在使用 ZSH 并创建了一个名为webuseradd
它的函数,如下所示:
function webuseradd () {
echo creating user $1;
mkdir /usr/share/nginx/$1;
# sshlogin is required to allow user to ssh and sftp
sudo useradd -G lshell,sshlogin -b /usr/share/nginx/$1/home -d /usr/share/nginx/$1/home -m --skel /etc/httpskel -K UMASK=027 $1;
# /usr/share/nginx/$1 will be the chroot so set it to root
sudo chown root:root /usr/share/nginx/$1;
sudo su - $1;
mkdir /usr/share/nginx/$1/home/.ssh;
ssh-keygen -t rsa;
exit;
# force the user into a limited, jailed shell
sudo chsh -s /usr/bin/lshell $1;
}
但是,如果我称之为它,我得到的输出:
$ webuseradd test
creating user test
No directory, logging in with HOME=/
用户创建得很好,但是当我尝试su
进入用户时出现问题。如果我exit
脚本然后继续以下输出:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
如何确保创建密钥并将其放置在具有正确权限的正确位置?我确信我所做的其他一些事情是不可取的,所以如果你发现任何事情,请说。
如果您以 root 身份运行此函数,则无需调用
su
然后运行多个命令。此外,这无论如何也行不通。您将获得一个交互式外壳,然后当您退出该外壳时脚本将继续。只需
sudo
直接运行您需要的命令:(而且您不需要mkdir
;ssh-keygen
会为您执行此操作)我假设您在以 root 身份登录时没有运行此功能,因为您使用了所有 sudo。
我可能会像这样修改你的脚本。
在安全说明上。您真的不应该创建或存储用户私钥。私钥应该是私有的,而不是存储在可能被盗的服务器上。如果需要强大的安全性,您正在以错误的方式工作。