如何启用根帐户?我知道通常不建议这样做,但是我想设置一个非交互式脚本来使用rsync备份服务器。我可以使用,--rsync-path="sudo rsync"
但随后我需要将我的sudo密码明确存储,这似乎比启用root帐户要糟糕得多。
如何启用根帐户?我知道通常不建议这样做,但是我想设置一个非交互式脚本来使用rsync备份服务器。我可以使用,--rsync-path="sudo rsync"
但随后我需要将我的sudo密码明确存储,这似乎比启用root帐户要糟糕得多。
Answers:
mybackup
在客户端和服务器上创建新的单独的用户帐户sudo passwd -l mybackup
这些帐户的密码,以防止直接登录sudo
,这些新帐户来运行一个非常具体的/usr/bin/rsync/ --some-long-command /from/here /to/there
命令,作为根与NOPASSWD:
在/etc/sudoers
使用sudo visudo
sudo -u mybackup ssh-keygen
sudo -u crontab -e
另一端以rsync
使用ssh
和键作为传输器运行遥控器这样,可以以root身份运行的唯一命令是您明确允许的命令,并且可以激活它的唯一远程用户是已安装的ssh密钥对的另一半的所有者,因为该密钥也已锁定了密码只能是拥有sudo访问权限的人,或者是您设置的crontab。
sudo rsync
并允许用户选择传递给rsync的选项意味着,例如,用户可以使用rsync读取/写入/etc/sudoers
文件,并授予自己完整的sudo访问权限。
您可以编辑/etc/sudoers
以允许任何正在运行命令的用户(或所有用户)以root
没有密码的方式运行它(使用rsync可能有点危险)。
您不能只运行整个命令/脚本/什么root
?我假设这将通过cron运行,所以只需root
通过以下方式添加作业:
sudo crontab -e
注意:您可以通过将cron命令包装在bash -e "..."
大括号中来完成相当复杂的事情,或者只在单独的脚本中执行。假设它不是setuid'd,如果root
(通过cron
)运行它,它将按照原样运行,root
这样应该可以解决您的权限问题。
sudo
普通用户运行该脚本。这比仅仅允许更为安全rsync
。
您可以(但不应)使用以下命令为根用户提供密码:
sudo passwd root
编辑:Setuid位不适用于脚本。否则,您可以在备份程序上使用setuid位。
sudo chown root backup
sudo chmod u+s backup
也许,您甚至想将备份作为cron作业运行?
sudo whoami
返回,根),所以只sudo passwd
需要。