我应该为root帐户启用rsync吗?


10

如何启用根帐户?我知道通常不建议这样做,但是我想设置一个非交互式脚本来使用rsync备份服务器。我可以使用,--rsync-path="sudo rsync"但随后我需要将我的sudo密码明确存储,这似乎比启用root帐户要糟糕得多。

Answers:


10
  1. mybackup在客户端和服务器上创建新的单独的用户帐户
  2. 锁定sudo passwd -l mybackup这些帐户的密码,以防止直接登录
  3. 允许通过sudo,这些新帐户来运行一个非常具体的/usr/bin/rsync/ --some-long-command /from/here /to/there命令,作为根与NOPASSWD:/etc/sudoers使用sudo visudo
  4. 使用以下命令为本地主机创建新的无密码SSH密钥 sudo -u mybackup ssh-keygen
  5. 添加到sudo -u crontab -e另一端以rsync使用ssh和键作为传输器运行遥控器

这样,可以以root身份运行的唯一命令是您明确允许的命令,并且可以激活它的唯一远程用户是已安装的ssh密钥对的另一半的所有者,因为该密钥也已锁定了密码只能是拥有sudo访问权限的人,或者是您设置的crontab。


这正是我没有想到允许在sudoers中使用非常特定的命令的原因(我允许使用“ rsync”)。很棒的建议!
Olivier Lalonde

2
+1表示“非常具体的...命令”。否则,授予用户运行权sudo rsync并允许用户选择传递给rsync的选项意味着,例如,用户可以使用rsync读取/写入/etc/sudoers文件,并授予自己完整的sudo访问权限。
SuzanneDupéron2013年

7
  1. 您可以编辑/etc/sudoers以允许任何正在运行命令的用户(或所有用户)以root没有密码的方式运行它(使用rsync可能有点危险)。

  2. 您不能只运行整个命令/脚本/什么root?我假设这将通过cron运行,所以只需root通过以下方式添加作业:

    sudo crontab -e
    

    注意:您可以通过将cron命令包装在bash -e "..."大括号中来完成相当复杂的事情,或者只在单独的脚本中执行。假设它不是setuid'd,如果root(通过cron)运行它,它将按照原样运行,root这样应该可以解决您的权限问题。


问题是,如果我在本地计算机上设置脚本并以root身份运行它,则它将在服务器上出现权限问题。如果我在服务器上设置脚本并以root身份运行它,那么本地计算机将是权限存在问题的计算机。换句话说,我需要在本地和服务器上都具有root特权。
Olivier Lalonde

您可以在每一端编写一个脚本,并允许sudo普通用户运行该脚本。这比仅仅允许更为安全rsync
奥利

Sudo是个好主意。您可以精确地指定哪个用户可以运行哪个命令。做吧
弗兰克(Frank)

6

您可以(但不应)使用以下命令为根用户提供密码:

sudo passwd root

编辑:Setuid位不适用于脚本。否则,您可以在备份程序上使用setuid位。

sudo chown root backup
sudo chmod u+s backup

也许,您甚至想将备份作为cron作业运行?


1
您不需要指定“ root”,因为sudo作为root的env运行,其用户 root。(sudo whoami返回,根),所以只sudo passwd需要。
Marco Ceppi

setuid不适用于脚本
enzotib

正确,脚本由she-bang行中命名的shell执行。很抱歉提供错误信息。
法兰克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.