Quanto ao Q1, estou supondo que você tenha colocado o traço duplo antes de "rsh" como um "en-dash", ou seja, um único caractere: - então o rsync está interpretando como um nome de arquivo em vez de uma opção programa.
Para o segundo trimestre, se você quiser conceder a um usuário não-root permissão para fazer coisas com arquivos que, de outra forma, não seria capaz de manipular, terá que alterar as permissões dos arquivos ou elevar as permissões do usuário, por exemplo através do uso de sudo
.
sudo
pode ser configurado para permitir que certos usuários executem certos comandos como root sem prompt de senha, então o que você precisa fazer é separar as coisas que você precisa fazer como root em um script que as faz (e somente eles) e, em seguida, permitir que esse script seja chamado como raiz. Aqui está um exemplo de um dos meus arquivos /etc/sudoers
:
Cmnd_Alias F2B_CLIENT_PING = /usr/bin/fail2ban-client ping
nagios ALL = NOPASSWD: F2B_CLIENT_PING
O que isto faz é permitir que o usuário "nagios" execute "/ usr / bin / fail2ban-client ping" como root usando o sudo, sem que seja solicitada uma senha. Eu uso isso no meu monitoramento.
Você teria algo como:
Cmnd_Alias RSYNC_BACKUP = /usr/local/sbin/backup_my_stuff_with_rsync.sh
youruser ALL = NOPASSWD: RSYNC_BACKUP
e então no seu cron você chamaria sudo /usr/local/sbin/backup_my_stuff_with_rsync.sh
Você pode testá-lo na linha de comando primeiro para verificar se ele não solicita senha.
Observe que a execução de um script como root é um grande problema e, portanto, você deve garantir que seu script esteja seguro e correto. Se você puder encontrar alguma maneira de fazer isso como não raiz, seria melhor.