因为课程项目的原因,需要配置若干个LightSail实例环境。一种比较方便的方式是在启动实例时执行一段脚本。操作系统为Ubuntu。
环境需求有以下几个:建立ubuntu之外的账户;除了公钥之外,可以使用密码SSH登录;可以进行免密码sudo。三个Linux经典操作。
建立新账户
1 | # Add user. -m create home. -s set shell |
其中newuser为用户名,-m
选项创建/home
下的newuser
文件夹,-s
指定登录Shell。
下面为新账户设定密码:1
2# set password
echo 'newuser:123456' | sudo chpasswd
一般设置密码的方式是passwd
命令,然而这种方式必须是交互式的,不适用于脚本中。使用chpasswd
可以将账户密码以标准输入的形式输入,格式为“账户:密码”。其缺点是需要在命令里显式写下密码,如果想要保密可以将密码先存在文件里,然后cat
到chpasswd
的标准输入中。在实例启动阶段,就echo
好了。
允许SSH密码登录
1 | # enable password authentication for ssh |
本质是编辑/etc/ssh/sshd_config
文件,这里简便起见用sed
命令写死。-i
指in place,否则sed会把结果print出来,52
是行号,c
表示替换。随后重启SSHD服务。
允许新账户免密sudo
1 | # password-free sudo for newuser |
sudo权限设置文件位于/etc/sudoers
,这里也是用sed
写死,a
表示添加。