Root hesabını rsync için etkinleştirmeli miyim?


10

Kök hesabı nasıl etkinleştirebilirim? Ben genellikle tavsiye edilmez biliyorum ama rsync kullanarak sunucumu yedeklemek için etkileşimli olmayan bir komut dosyası kurmak istiyorum. Kullanabilirdim --rsync-path="sudo rsync"ama sonra sudo şifremi açık bir şekilde saklamam gerekecekti ki bu da root hesabını etkinleştirmekten çok daha kötü görünüyor.

Yanıtlar:


10
  1. mybackupİstemci ve sunucuda yeni, ayrı kullanıcı hesapları oluşturma
  2. sudo passwd -l mybackupDoğrudan giriş yapılmasını önlemek için bu hesapların şifrelerini kilitleyin
  3. Aracılığıyla izin ver sudo, bu yeni hesaplar çok özel çalıştırmak için /usr/bin/rsync/ --some-long-command /from/here /to/thereroot olarak komut NOPASSWD:içinde /etc/sudoerskullanaraksudo visudo
  4. Kullanarak uzak ana bilgisayara yerel için yeni parolasız SSH anahtarları oluşturun sudo -u mybackup ssh-keygen
  5. Ekle sudo -u crontab -euzaktan çalıştırmak için bir ya da diğer ucunda rsynckullanarak sshve ulaşım gibi tuşlar

Bu şekilde sadece komut olabilir kök olarak çalıştırılamaz açıkça izin bu bir ve aynı zamanda şifre kilitli olduğu için yüklü SSH anahtar çiftinin diğer yarısı, sahibidir etkinleştirebilirsiniz sadece uzaktan kullanıcı yalnızca sudo erişimi olan bir kişi veya ayarladığınız crontab olabilir.


Sudo'larda çok özel bir komuta izin vermeyi hiç düşünmemiştim ('rsync' e izin verdim). Büyük öneri!
Olivier Lalonde

2
+1 "çok özel bir ... komutu" kaydettiği için. Aksi halde, kullanıcıya çalıştırma hakkı sudo rsyncvermek ve kullanıcının rsync'e iletilen seçenekleri seçmesine izin vermek, kullanıcının /etc/sudoersörneğin dosyayı okumak / yazmak ve kendisine tam sudo erişimi vermek için rsync'i kullanabileceği anlamına gelir .
Suzanne Dupéron

7
  1. /etc/sudoersKomutu çalıştıran herhangi bir kullanıcının (veya tüm kullanıcıların) rootşifresiz olarak çalıştırmasına izin vermek için düzenleyebilirsiniz (belki de rsync ile biraz tehlikeli).

  2. Komutu / betiği / tüm komutunu çalıştıramaz rootmısınız? Bu cron üzerinden çalışacağını varsayıyorum, bu yüzden sadece rootüzerinden bir iş ekleyin :

    sudo crontab -e
    

    Not: cron komutunuzu bir bash -e "..."parantez içine alarak veya sadece ayrı bir komut dosyasında yaparak oldukça karmaşık şeyler yapabilirsiniz. Belirlenmediği varsayılarak, root(üzerinden cron) çalıştırılırsa root, izin sorununuzu çözecek şekilde çalışır.


Sorun, betiği yerel makineme kurar ve root olarak çalıştırırsam, sunucuda izin sorunları olacaktır. Komut dosyasını sunucumda kurar ve kök olarak çalıştırırsam, yerel makine izin sorunları olan makine olacaktır. Başka bir deyişle, hem yerel hem de sunucu makinelerde kök ayrıcalıklarına sahip olmam gerekiyor.
Olivier Lalonde

Her iki uçta bir komut dosyası yazabilir ve sudonormal kullanıcılar tarafından çalıştırılmasına izin verebilirsiniz . Bu izin vermekten daha güvenli olurdu rsync.
Oli

Sudo harika bir fikir. Hangi kullanıcının hangi komutu çalıştırabileceğini tam olarak belirleyebilirsiniz. Yap.
Frank

6

Kök kullanıcıya bir şifre verebilirsiniz (ancak vermemelisiniz)

sudo passwd root

Düzenleme: Setuid bit komut dosyaları için çalışmaz. Aksi takdirde, yedekleme programındaki setuid bitini kullanabilirsiniz.

sudo chown root backup
sudo chmod u+s backup

Belki de yedeklemeyi cron işi olarak çalıştırmak istersiniz?


1
Kök en kendi kullanıcı env gibi sudo ishal beri "root" belirtmek gerekmez olduğunu kökü. ( sudo whoamidöner, kök) bu yüzden sadece sudo passwdgereklidir.
Marco Ceppi

setuid komut dosyaları için çalışmaz
enzotib

Doğru, komut dosyaları she-bang satırında adlandırılan kabuk tarafından yürütülür. Yanlış bilgi için özür dilerim.
Frank
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.