Eu recomendaria que você usasse a conta root em primeiro lugar. Se você configurá-lo assim:
- Configure o seu
sshd_config
na máquina de destino para PermitRootLogin without-password
.
- Use
ssh-keygen
na máquina que executa o backup para criar uma chave privada SSH (somente se você ainda não tiver uma chave SSH). Não defina uma senha. Google um tutorial, se você precisar de detalhes para isso, deve haver uma abundância.
- Anexe o conteúdo da
/root/.ssh/id_rsa.pub
máquina de backup ao /root/.ssh/authorized_keys
da sua máquina de destino.
- Agora sua máquina de backup tem acesso root à sua máquina de destino, sem precisar usar a autenticação de senha.
a configuração resultante deve ser bastante segura.
sudo
, especialmente combinado com NOPASSWD
o recomendado nos comentários, não possui benefícios de segurança ao usar apenas a conta raiz. Por exemplo, esta sugestão:
adicione o seguinte ao seu /etc/sudoers
arquivo:rsyncuser ALL= NOPASSWD:/usr/bin/rsync
essencialmente dá rsyncuser
permissões de root de qualquer maneira. Você pergunta:
@MartinvonWittich Fácil de obter um shell raiz completo porque rsync
executado com sudo
? Caminhe [m] e [por] isso por favor.
Bem, simples. Com a configuração recomendada, rsyncuser
agora pode ser executado rsync
como root sem sequer ser solicitada uma senha. rsync
é uma ferramenta muito poderosa para manipular arquivos, então agora rsyncuser
tem uma ferramenta muito poderosa para manipular arquivos com permissões de root. Encontrar uma maneira de explorar isso levou apenas alguns minutos (testado no Ubuntu 13.04, requer dash
, bash
não funcionou):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Como você pode ver, eu criei um shell raiz; whoami
identifica minha conta como raiz, posso criar arquivos /etc
e posso ler /etc/shadow
. Minha exploração foi definir o bit setuid no dash
binário; faz com que o Linux sempre execute esse binário com as permissões do proprietário, neste caso raiz.
Ter uma raiz real não é [recomendado] por boas razões. - redanimalwar 15 horas atrás
Não, trabalhar desajeitadamente na conta raiz em situações em que é absolutamente apropriado usá-la não é por boas razões. Essa é apenas outra forma de programação de cultos de carga - você realmente não entende o conceito por trás do sudo x root, aplica cegamente a crença de que "a raiz é ruim, o sudo é bom" porque você leu em algum lugar.
Por um lado, há situações em que sudo
definitivamente é a ferramenta certa para o trabalho. Por exemplo, quando você está trabalhando interativamente em uma área de trabalho gráfica do Linux, digamos Ubuntu, então é necessário ter sudo
bom uso nos casos raros em que às vezes você precisa de acesso root. O Ubuntu intencionalmente possui uma conta root desabilitada e obriga a usar sudo
por padrão para impedir que os usuários sempre usem a conta root para efetuar login. Quando o usuário apenas deseja usar, por exemplo, o navegador da Web, fazer login como root seria uma coisa perigosa. e, portanto, não ter uma conta root por padrão impede que pessoas estúpidas façam isso.
Por outro lado, há situações como a sua, em que um script automatizado requer permissões de root para algo, por exemplo, para fazer um backup. Agora, usar sudo
a solução para a conta raiz não é apenas inútil, também é perigoso: à primeira vista, rsyncuser
parece uma conta comum e sem privilégios. Mas, como eu já expliquei, seria muito fácil para um invasor obter acesso root completo se ele já tivesse rsyncuser
acesso. Portanto, agora você tem uma conta root adicional que não se parece com uma conta root, o que não é uma coisa boa.
root
conta em primeiro lugar.sudo
, especialmente combinado comNOPASSWD
o recomendado nos comentários, não melhora realmente a segurança da sua máquina.