我准备在 DigitalOcean Ubuntu 18.04.2 中运行标准 LAMP 堆栈的文件系统mysql
来运行ecryptfs
Wordpress 网站。
它运行良好,但需要禁用 AppArmor 才能启动 MySQL(在安装时ecryptfs
),并且由于我在 Wordpress 上运行 CIVICRM,因此仍然存在与数据库查询相关的古怪行为,这些查询没有得到很好的响应。但是,总的来说,在这个阶段,WP 已经启动并运行。我在下面使用的过程是将文件夹复制到文件夹中mysql
,ecrypfs
然后将其绑定安装回以/var/lib/mysql
避开和中的更改my.cnf
。apparmor
但是,mysql
在我删除 mysql 的配置文件之前,它仍然拒绝启动apparmor
。
安装
ecryptfs
sudo apt-get update sudo apt-get install ecryptfs-utils
停止
mysql
服务sudo service mysql stop
制作加密文件夹
sudo mkdir /usr/local/enc/mysql
重命名当前
mysql
文件夹sudo cd /var/lib sudo mv mysql mysql.bak
将加密文件夹挂载到
mysql
文件夹中sudo mount -t ecryptfs /usr/local/enc/mysql /var/lib/mysql
会有问题询问,我已采取默认
[1,1,n,n,yes]
或者,您可以通过 nano /etc/fstab 添加自动挂载,添加以下行,但密码也需要在这里,这并不安全:
/usr/local/enc/mysql /var/lib/mysql ecryptfs key=passphrase:passwd=xxxxxxxx,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n 0 0
将当前文件夹中的所有内容复制
mysql
到加密文件夹中sudo cp -R -p /var/lib/mysql.bak /var/lib/mysql
将内容上移
/var/lib/mysql
1 级sudo cd /var/lib/mysql sudo mv mysql.bak/* . sudo rmdir mysql.bak
此时,您可以检查文件是否清晰,
/var/lib/mysql
但相关文件/usr/local/enc/mysql
是否为乱码/加密尝试重新启动
mysql
,但遇到错误sudo service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
10. 检查 2 个文件夹的所有权限均正确后,我尝试apparmor
按照以下步骤禁用 mysql
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
将加密文件夹作为别名添加到 apparmor
sudo nano /etc/apparmor.d/tunables/alias add this line to the file: alias /var/lib/mysql -> /usr/local/enc/mysql/,
现在就
mysql
可以开始了,我的 Wordpress 也可以用sudo service mysql start
但是,我还是希望 Apparmor 能够正常工作,而不是禁用 mysql 配置文件。有没有什么建议可以做到这一点?
答案1
我做了更多的挖掘,我想我找到了答案。尽管我从一些帖子中看到 apparmor 并不关心挂载源文件夹,但显然它在挂载时会查看源文件夹的来源。这实际上是很好的安全性。我尝试在 apparmor 中将源文件夹添加为别名,现在它可以正常工作了。我还将挂载更改为自动挂载。我上次描述的怪癖也消失了。我将针对这些要点编辑我的原始帖子。
我现在的后续问题是 ecryptfs 支持 mysql 的性能,对此有什么建议吗?谢谢。
答案2
我使用 AppArmor、mysql 和 encryptfs 的经验是,你必须同时为源位和已安装位设置别名
/etc/apparmor.d/tunables/别名
alias /var/lib/mysql/ -> /usr/local/encrypted-source/mysql/,
alias /var/lib/mysql/ -> /usr/local/encrypted/mysql/,
注意这是 Ubuntu 20.04
查看 /etc/apparmor.d/usr.sbin.mysqld,发现很多东西都很明显。