提前询问 sudo 密码

提前询问 sudo 密码

我有一些用于备份数据的脚本。其中一些需要 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在脚本中为等提供密码的问题,而不会让它显示在命令行上pstop或系统上的任何进程管理器 GUI 上的所有用户。


补充信息:

设置超时

密码缓存的超时sudo默认为 15 分钟,可以通过timestamp_timeout在 中设置进行更改sudoers。使用sudo visudo添加如下行

Defaults    timestamp_timeout=30

/etc/sudoers。(设置timestamp_timeout0以禁用缓存。)

相关内容