在启动时自动解锁 LUKS

LUKS 是 Linux 上通用的磁盘加密方式。只有持有密码或密钥文件,才能解锁 LUKS 卷。其作用和 Windows 中的 BitLocker 类似,但是不使用封闭、且并不安全的 TPM。

注意:本文所述的操作,将会导致您的加密卷实质无效,并可能造成信息安全的重大损失。请在慎重思考,并明白自己正在做什么之后,再进行操作。

阅读更多

在 Office 365 上启用 SMTP 认证

Office 365 E5 Developer 版本附送了 Outlook 企业邮箱,绑定域名即可使用。但是默认没有启用 SMTP,因此无法通过邮件客户端收发邮件。

在查阅含糊不清的官方文档之后,发现按照预置的策略,SMTP 是默认关闭的。需要使用 PowerShell 开启。首先导入 Exchange Online 管理模块:

1
Import-Module ExchangeOnlineManagement

然后登录,将 admin@contoso.com 换成你的 Office 365 域管理员账号。

1
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com

Windows 会弹出窗口,进行 OAuth 认证。

在完成加载后,使用 Get-CASMailbox 命令列出用户:

1
2
3
4
5
6
7
8
9
PS C:\> Get-CASMailbox

Name
----
miku
stardust
xinhua
lty
yzl

可以对单个用户启用 SMTP,例如为用户 miku 启用 SMTP:

1
Set-CASMailbox -Identity miku -SmtpClientAuthenticationDisabled $false

如果要对所有用户启用 SMTP,可以执行下面这个命令:

1
Get-CASMailbox | Set-CASMailbox -SmtpClientAuthenticationDisabled $false

值得注意的是,该选项只为当前所有用户启用了 SMTP。如果后来添加了新的用户,则需要重新执行该命令,才能为新的用户启用 SMTP。

禁用 SSH 粘贴命令时背景高亮

有的 Linux 发行版的 SSH 默认配置下,粘贴命令时 Shell 会将粘贴的部分高亮。笔者认为这不好看,同时也会带来一些问题。

关闭该高亮只需在 inputrc 文件内加入以下这一行配置:

1
set enable-bracketed-paste off

如果想要系统级生效,请编辑 /etc/inputrc;如果想要用户级生效,请编辑 ~/.inputrc

自动化部署网站所需的权限设置

首先为网站内容目录设置权限:

1
2
3
4
5
6
7
usermod -a -G www-data operator
chown -R www-data:www-data /var/html/htdocs
chmod -R o-x /var/html/htdocs
chmod /var/html/htdocs -type d -exec chmod g+s {} \;
setfacl -d -R -m u::rwx /var/html/htdocs
setfacl -d -R -m g::rwx /var/html/htdocs
setfacl -d -R -m o::--- /var/html/htdocs

operator 加入 www-data 组使其有权限部署网站内容。

设置组的 setgid 标志位,可以确保子文件夹写入或修改后,依然属于 www-data 组。值得注意的是,Linux 会忽略文件夹的 setuid 标志位。

最后用 ACL 修改 umask。使用 ACL 修改的原因是,ACL 对 umask 的修改可以持久化。

同理,为 Nginx 配置目录设置权限:

1
2
3
4
5
6
7
8
useradd  webmaster
usermod -a -G webmaster operator
chown -R webmaster:webmaster /etc/nginx/sites
chmod -R o-x /etc/nginx/sites
chmod /etc/nginx/sites -type d -exec chmod g+s {} \;
setfacl -d -R -m u::rwx /var/html/htdocs
setfacl -d -R -m g::rwx /var/html/htdocs
setfacl -d -R -m o::--- /var/html/htdocs

最后,允许 webmaster 通过 sudo 重启 Nginx:

1
echo "%webmaster ALL= NOPASSWD: /usr/bin/systemctl restart nginx" >> /etc/sudoers