我有一些用于备份数据的脚本。其中一些需要 root 访问权限,因此我将它们与 一起使用sudo
。但是,有时我会感到困惑,例如对于 mySQL 备份,它也需要 mySQL root 密码。
我现在已经在这样的 Bash 脚本中实现了一种解决方法
echo "Please enter root password"
sudo echo "Ok"
sudo mysqldump --all-databases --opt -u root -p > ~/backup.dump
这样做的思路是:sudo 密码会被缓存,如果一开始就输入了,那么在 mySQL 备份的时候就不会再提示了,这样就不会再和 mySQL root 密码混淆了。
这种方法使用起来安全吗?或者是否存在问题?
答案1
是的,
该方法与任何正常使用的方法一样安全sudo
。
当您使用 时sudo
,密码将被缓存,这是默认配置。
您可以使用一个虚拟命令将密码放入该标准缓存中,该命令不执行任何操作,以 root 身份执行 - 这当然并不危险。
sudo
仅有的
因为您的示例使用了mysqldump
,它也使用了密码,所以我想明确一点,上面的内容与 mysql 密码无关,它只与sudo
示例行中的 有关sudo mysqldump ...
。
尤其是,它不能解决mysqldump
在脚本中为等提供密码的问题,而不会让它显示在命令行上ps
,top
或系统上的任何进程管理器 GUI 上的所有用户。
补充信息:
设置超时
密码缓存的超时sudo
默认为 15 分钟,可以通过timestamp_timeout
在 中设置进行更改sudoers
。使用sudo visudo
添加如下行
Defaults timestamp_timeout=30
至/etc/sudoers
。(设置timestamp_timeout
为0
以禁用缓存。)