Tüm dosya ve klasörlere kullanıcı izinleri verme


9

Sistemdeki tüm dosya ve klasörlere erişimi olan bir kullanıcı istiyorum. Bunun amacı, uzak bir makineyi yedeklemek için yerel bir makinede RSYNC kullanmaktır.

Şu anda kullanıcıyı kullanırken backupsbiz gruplarına Bu kullanıcıyı eklemiş olsa ve sudove adminrsync hala gibi mesajlar verir:

rsync: opendir "/ location / to / folder" başarısız oldu: İzin verilmedi (13)

rsync: send_files "/ location / to / file" dosyasını açamadı: İzin verilmedi (13)

Kullanıcıya backupsher şeye erişim izni verdiğimiz herhangi bir fikir (kullanıcıyı tüm gruplara eklemekten yoksun - yedeklemeye çalıştığımız uzak sunucu, her hesabın sistemde kendi kullanıcısına sahip olduğu özel bir barındırma sunucusudur).

Herhangi bir yardım için teşekkürler.


1
Yol örnekleri verebilir misiniz? 'S olanlar varsa /proc, /devvb sonra hatalardır beklenebilir.
Phil

kullanıcı eklemek backupsiçin sudove adminhiçbir şey değişmez.
favadi

@Phil Tüm / home dizinini yedeklemeye çalışıyorum. Başarısız olan dosyalar / dizinler, /home/a/c/account/users/mail:usernameizinleri olan drwx------ve sahip oldukları gibi dizinlerdir mail:4096. Kullanıcıların backupsgrupta olduğu sudoveya admingruplara erişim izni olmadığı için erişime sahip olmadığı için mi varsayıyorum ? Bilmiyorum, ama böyle klasörler / dosyalar üzerinde hata.
Thomas Clayson

@favadi Bunu zaten yaptım ... hala çalışmıyor.
Thomas Clayson

rsyncKomutu sudo ile çalıştırmanız gerekecek .
Phil

Yanıtlar:


6

Kullanıcıyı backupskullanıcı grubuna eklemek, sudohesabın sistemdeki tüm dosyalara otomatik olarak erişmesine izin vermez. Kullanıcıya sudokomutu çalıştırma izni verir .

Ortak anahtar kimlik doğrulamasını kullandığınızdan (muhtemelen bir parola olmadan), buna güvenlik ve uygulama kolaylığı göz önünde bulundurularak yaklaşacağım. Kullanmak sshkullanıcıyı yalnızca çok özel komutları yürütecek şekilde kısıtlamanızı sağlar. Bu durumda, kullanıcı izin verebilir backupsyürütmek için rsyncsüper izinlerle.

Anahtar değişimini zaten yaptınız ve kimlik doğrulamasının başarılı olduğunu doğruladınız. Gelen authorized_keysEğer destek çıkmaları uzak ana dosyanın /homedizini, bir ekleyebilir command=kullanıcı tarafından kullanılan anahtar direktifini backups. Bu yönerge sadece sağlayacak o zaman komut çalıştırılacak bu anahtar kimlik doğrulaması için kullanılır. Yani anahtarın ilk alanı şuna benzer:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

Daha da ileri gidebilir ve anahtara daha fazla seçenek ekleyebilirsiniz from=myhost,no-pty,no-X11-forwarding.

Bu size iyi bir güvenlik sağlamalı ve temel dosya sistemi izinlerini değiştirmenizi gerektirmemelidir. Muhtemelen authorized_keysbeklediğiniz gibi çalışana kadar dosyaya yerleştirdiğiniz komutla oynamanız gerekecektir ; beyninizi etrafına sarmak biraz zaman alabilir. Will'da belirtilen komut authorized_keystemel rsyncolarak bağlanan ana bilgisayardan geçireceğiniz seçenekleri geçersiz kılar .

Çok iyi bilgi man sshd. AUTHORIZED_KEYS FORMAT bölümünü özellikle okumak istiyorsunuz.


Tamam, sanırım takip ediyorum. Bu yönergeyi yetkili_anahtarlar dosyasına eklemek, süper kullanıcı izinlerine sahip bir uzaktan komut çalıştırmanıza izin verir mi? rsync -e ssh -az backups@domain.com:/home /location/of/local/folderUzak makinede süper kullanıcı olarak çalışmasını bildirmek için komutu nasıl değiştirebilirim ? Yoksa otomatik olarak mı yapacak? Zaman ayırdığınız ve yardım ettiğiniz için teşekkürler. :)
Thomas Clayson

1
Yönerge, komutu otomatik olarak süper kullanıcı olarak çalıştırmanıza izin vermez. Kimlik doğrulaması için bu belirli anahtar kullanıldığında, kullanıcıyı SADECE belirtilen komutla sınırlar. Süper kullanıcı izinleri "sudo" dan gelir. Teknik olarak, tüm "rsync" komutunuzu yetkili_anahtarlar dosyasına koyabilir ve sadece ssh bağlantısını yedekleme ana bilgisayarından başlatabilirsiniz. Kimlik doğrulama tamamlandıktan sonra tüm süreç otomatik olarak başlayacaktır. Bağlantıyı "ssh backups @ remotehost sudo rsync" gibi bir şeyle başlatacağım
George M

Beyninizi sarmak biraz zaman alır, ancak sonunda tıkladığında ve ne yapabileceğinizi fark ettiğinizde oldukça havalı olur.
George M

2

Seçeneklerden biri, uzak sistemde bir rsync sunucusu çalıştırmaktır.

Temel olarak, bir oluşturmak rsync.confile uid=rootdaha sonra kullanılmak rsync -az rsync://domain.com.

Başka birinin yazdığı bir örnek için bkz. Http://pastebin.com/5hQx1mRV ve Ubuntu'da bir sunucuyu etkinleştirmenin bazı temel özellikleri için rsync arka plan programını yapılandırma .

Bunun güvenliğini göz önünde bulundurmanız gerektiğini unutmayın. Daha iyi bir yaklaşım, uzak sistemin yerel sisteminize aktarılmasını sağlamaktır.


Çok iyi görünüyor teşekkürler. Bu daha sonra /backup/lcuzak sunucudaki klasörden her şeyi yeniden gönderir mi? İşe yaraması için pathbiraz değiştirebilir miyim /home?
Thomas Clayson

Düzenleme için teşekkürler dostum. Bununla ilgili tek sorun, bulunduğumuz yerde statik bir IP adresi garanti edemememiz ve bunu cron üzerinden yapmak istiyoruz, böylece her zaman olur. "Zorlarsak", IP adresimiz değişirse çalışmayı durdurabilir. : /
Thomas Clayson

@ThomasClayson: Dinamik DNS bunun içindir. :)
Warren Young

1

Temel dosya sistemi destekliyorsa ACL'yi kullanabilirsiniz .

Grup yedeklemesini her dosya ve dizinin ACL'sine eklemelisiniz. Ancak yeni oluşturulan dosya ve dizin için otomatik olarak eklenecek şekilde, önce varsayılan ACL'yi varolan tüm dizinlere ayarlamanız gerekir. Yani uzak sunucuda:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

O zaman mevcut tüm dizinler için rx iznine sahip olmalı ve dosyalar için okumalısınız. Bunu 2 komutla yapabilirsiniz (bu sefer -d olmadan)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

Bu, her bir dosyanın sahibi olan mevcut kullanıcı ve grubu değiştirmeden dosyaları grup yedeklemesine okumak için ekstra izin verir.

Not: bulmayı hızlandırmak için | xargs komutu xargs komutuna aşağıdaki seçeneği ekleyebilirsiniz: -P nn ile paralel işlem sayısı. Makinenizde bulunan cpu sayısına + 1 ayarlayabilirsiniz.


Paralel xargs bu durumda işleri hızlandırmaz, çünkü darboğaz CPU değil I / O'dur.
Mikel

Linux, diskte değişiklik yapmadan önce bellekte önbellek kullanır, böylece kullanıcı açısından daha hızlı hissedilir. Ve küçük bir dizüstü bilgisayar hdd bile, paralel olarak birden fazla ACL ayarlama yükünü kaldırabilir. O kadar G / Ç değil. Deneyin :)
Huygens

Ben sadece burada kullanabilirsiniz superuser.com/a/422954/53206 okudum : sudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home:) çok daha basit!
Huygens
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.