Harici bir sabit sürücü için bilgisayarlardaki kullanıcı izinlerini taşıyabilir miyim?


16

Büyük olasılıkla makineden makineye taşınacak harici bir USB 3 disk sürücüm (2 TB kapasite) var. Diskin bir GUID bölüm tablosu ve bir ext4 bölümü vardır. Süreci ( sudo) yükseltmedikçe diske yazamıyorum .

Şu andan itibaren aşağıdakilerden birini veya her ikisini de denemeyi düşünüyorum ve her birinin eksilerini bilmek istiyorum -

  1. chmod 777 /mnt/externalDrive
  2. chown nobody:nogroup /mnt/externalDrive

777 iznini verir ve user1 (UID: 1005) yazarsa ve daha sonra diski user7'nin UID: 1005 olduğu başka bir bilgisayara taşırsam ne olur? User7 o bilgisayardaki dosyanın sahibi olur mu? Bana öyle geliyor ki periyodik chown -R nobody:nogroup /mnt/externalDriveolarak disk üzerinde çalışmam gerekecek .

Düşündüğüm şeylerden herhangi biri bariz bir kötü uygulama mı? Disk büyük olasılıkla video, müzik ve resim içerecek ve hiçbirinin bazı finansal veriler gibi korunması gerekmeyecek.


Seni takip edip etmediğimden emin değilim. Harici sürücüdeki izinleri ayarlamayı denediniz mi?
Ramesh

1
Evet. Bu iyi bir şey mi?
Lord Loh.

Yanıtlar:


19

Çok kullanıcılı sistemlerde sorun, özellikle de birden fazla sisteminiz varsa. ;) İstediğinizi yapmanın gerçekten güzel bir yolu yok. Akla gelen yaklaşımlar

  • harici sürücünüzü kullandığınız her makinede hesabınız için aynı UID'ye sahip olmak (aslında mümkün değildir, çünkü büyük olasılıkla tüm makineler kontrolünüz altında değildir)
  • sahip / grup kavramından habersiz bir dosya sistemi kullanmak (FAT veya NTFS akla geliyor, ama… aaah, hayır)

En etkili yaklaşım ortak uygulamalara geri dönmektir. Çoğu (en azından) Linux sisteminde, genellikle ortak GID'leri olan bazı gruplar vardır . Örneğin , çoğu Linux dağıtımında usersGID olan örnek olacaktır 100. İlgili kullanıcı hesabınızın bu grupta olmasını sağlayabilseydiniz,

  1. sürücünüzdeki tüm dosya ve dizinleri bu gruba ait yapın
  2. bir şekilde bu dosyalar ve dizinler üzerinde uygun grup izinlerine sahip olmayı başarabilir
  3. bir şekilde uygun grup sahipliği ile yeni dosyaların oluşturulmasını sağlar. izinleri.

Birinci ve ikinci noktaya ulaşmak kolaydır ( chown, chmod). Üçüncü nokta biraz daha aldatıcı.

"Grup sahipliği" bölümü nispeten kolaydır: Sürücüdeki tüm dizinlerde SGID bitini ayarlayabilirsiniz. Dizinlere uygulanan SGID biti, çekirdeğe BSDish biçiminde davranmasını söyler: BSD, dosyayı / dizini oluşturan işlemin (Linux'un yaptığı gibi) birincil grubuna ait olmayan belirli bir dizin grubu altında oluşturulan her dosya / dizini yapar, ancak üst dizinin sahibi tarafından.

İzin biti biraz zor. Yeni oluşturulan dosyaları / dizinleri izinler şunlardır (diğerleri arasında) etkisinde umask, bit biraz maskesi söyleme değil sete açıkça belirtilmediği takdirde. umaskÖrneğin ortak bir değer 022, »grup« ve »diğerleri« için yazma bitlerinin genellikle ayarlanmaması gerektiği anlamına gelir. Grubunuz umaskiçin 002yazma izinlerinin temizlenmesini istemediğinizi belirterek olarak değiştirebilirsiniz, olumsuz tarafı dizin tabanlı bu değeri ayarlayamamanızdır ve genellikle oluşturduğunuz her dosya için birincil grup kümeniz.

Bu, ACL'ler kullanılarak çözülebilir: Bir ACL'de , bu ACL setiyle bir dizin içinde oluşturulan tüm dosya ve dizinler için geçerli olan bir maskve bir defaultizin kümesi ayarlayabilirsiniz. Yani probleminizin olası bir çözümü

  • harici sürücünüzü kullanmak istediğiniz tüm sistemlerde ortak bir grubun üyesi olduğunuzdan emin olmak
  • sürücünüzdeki tüm dosya ve dizinleri bu gruba ait yapın ve tüm dizinlerde SGID bitini ayarlayın
  • tüm dizinlerin ACL'sini, bir maske ve çekirdeğe grup için ayarlanmış yazma izinleriyle her yeni dosya / dizini oluşturmasını söyleyen varsayılan izinleri içerecek şekilde değiştirin.

Daha fazla bilgi için setfacl(1)ve bölümüne bakın acl(5).


1
Ext4, spinics.net/lists/linux-fsdevel/msg57240.html adresinde onun ve gid eşlemesi için yüzen bir yama vardı , ama bunun geldiğini düşünmüyorum ...
Rmano

11

Orada başka benzer soru ve bindfs orada önerilir:

mkdir /home/$user/sda1
bindfs -u $user -g $group /mnt/sda1 /home/$user/sda1

OSX kullanıcıları şu şekilde noownersaçıklanan montaj seçeneğini önerir :

Birimin tamamı için sahiplik alanını yok sayın. Bu, tüm nesnelerin kullanıcı kimliği 99 ve grup kimliği 99'a ait olarak görünmesine neden olur. Kullanıcı kimliği 99, geçerli etkili kullanıcı kimliği olarak yorumlanırken, grup kimliği 99 doğrudan kullanılır ve `` bilinmiyor '' olarak tercüme edilir.


bindfs oldukça yavaş. Muhtemelen bir FUSE dosya sistemi olduğu için.
Navin

4

Bir dosyanın sahibi ve grubu sayılar olarak saklanır. Böylece dosya, bağlı olduğu sistemde hangi kullanıcının (veya hiçbirinin) bağımsız olarak uid = 1005'e ait olacaktır.

Kullanıcıyı / grubu kimseyle değiştirmek sorununuzu çözmez. Bu durumda dosyalara yalnızca hiç kimse (veya hiç kimse grubunun üyeleri) erişemez.

Ne yazık ki, ext4'te izin kontrollerini devre dışı bırakmanın bir yolu olduğunu düşünmüyorum. Örneğin, bkz. Ext3 veya ext4 dosya sisteminde dosya izinlerini devre dışı bırakmak mümkün mü?


2

Andreas Wiese , tüm ana bilgisayarlarda ortak grup kimliğiniz varsa sorununuzu setgidbit ve ACL ile çözebileceğinizi söylüyor

Linux dağıtımlarında önceden tanımlanmış grup kimlikleri soruyorum.

Kendi araştırmalarından sonra, bu grubun tüm temaslı dağıtımlarda var olduğu bulundu: Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris'te sysgrup paylaşım kimliği 3.

Bununla:

$ sudo chgrp -R sys /mnt/data/dir
$ sudo chmod -R g+s /mnt/data/dir
$ sudo setfacl -R -m g:sys:rwx /mnt/data/dir
$ sudo setfacl -R -d -m g:sys:rwx /mnt/data/dir

ve bunun tadı:

$ sudo adduser user sys

Eğer userokuma / üzerinde herhangi bir dosyayı yazabilmek /dir.

Çoğu iş setgidbiraz işe yarayabilir ama maalesef genellikle çok az kontrolünüz vardır umask. Böylece ACL tam bir çözüm sağlamak için kullanılır.

Ayrıca bakınız:

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.