我如何启用 root 帐户?我知道通常不建议这样做,但我想设置一个非交互式脚本来使用 rsync 备份我的服务器。我可以使用,--rsync-path="sudo rsync"
但我需要以明文形式存储我的 sudo 密码,这似乎比启用 root 帐户更糟糕。
答案1
mybackup
在客户端和服务器上创建新的、独立的用户帐户- 锁定这些账户的密码
sudo passwd -l mybackup
以防止直接登录 - 通过允许这些新帐户以 root 身份运行
sudo
非常特定的命令/usr/bin/rsync/ --some-long-command /from/here /to/there
NOPASSWD:
/etc/sudoers
sudo visudo
- 使用以下命令为本地到远程主机创建新的无密码 SSH 密钥
sudo -u mybackup ssh-keygen
- 在一端或另一端添加以使用和键作为传输来
sudo -u crontab -e
运行远程rsync
ssh
这样,唯一的命令能以 root 身份运行是您明确允许的,并且唯一可以激活它的远程用户是已安装的 ssh 密钥对的另一半的持有者,因为它也有密码锁定,所以只有具有 sudo 访问权限的人或您设置的 crontab 才能激活它。
答案2
您可以进行编辑以允许运行该命令的任何用户(或所有用户)以无需密码的
/etc/sudoers
方式运行它(使用 rsync 可能有点危险)。root
你不能直接运行整个命令/脚本/其他东西吗
root
?我假设这将通过 cron 运行,因此只需root
通过以下方式添加作业:sudo crontab -e
注意:您可以通过将 cron 命令括在括号中
bash -e "..."
或直接在单独的脚本中执行来执行相当复杂的事情。假设它没有 setuid,如果root
运行它(通过cron
),它将以root
这样的方式运行,这应该可以解决您的权限问题。
答案3
你可以(但不应该)给 root 用户设置密码
sudo passwd root
编辑:Setuid 位不适用于脚本。否则,您可以在备份程序上使用 setuid 位。
sudo chown root backup
sudo chmod u+s backup
也许,您甚至想将备份作为 cron 作业来运行?