Klasörü, içinde oluşturulan herhangi bir şeyin izinleri devralacak şekilde nasıl ayarlarım?


18

Tüm kullanıcılar (bu durumda aile üyeleri) tarafından erişilebilir olması gereken tüm veriler için bir / veri klasörü (aslında bir bölüm) var. Hepimizin bireysel kullanıcı hesapları vardır ve çoğu zaman bu PC'de her zaman oturum açarız.

Yeni klasörler de dahil olmak üzere, onları kim oluşturursa oluştursun hepimiz dosyalara erişebilmemiz için izinleri nasıl ayarlayabilirim? Bir klasör oluşturursam, kullanıcı ve grubumu alır, böylece başkasına yazamaz.


ziyaretçiler için. Yalnızca grup adının devralınmasını istiyorsanız chmod -R g+s /parentdir. Not: chmod -R Gerekirse bundan önce çalıştırın
Thamme Gowda

1
Yukarıdakilere dikkat edin: -Rbayrak chmodçok nadiren kullanışlıdır çünkü nadiren aynı izinlere sahip dizinler (her zaman yürütme iznine ihtiyaç duyan) ve normal dosyalar (nadiren yürütme iznine ihtiyaç duyan) isteriz
Zanna

Yanıtlar:


17

Diğer bir yaklaşım, dosya izinlerinin bir üst kümesi olan Erişim Kontrol Listelerini kullanmaktır.

Her şeyden önce, acl Acl yükle paketini yüklemeliyiz :

sudo apt-get install acl

Ubuntu 14.04'ten önce , bölüm aclaşağıdakilerin çalışması için seçenekle birlikte monte edilmelidir . Bu ilave edilebilir /etc/fstabolduğu gibi

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

veya önceden yüklenmiş bir dosya sistemi için

sudo mount -o remount,acl /media/shared

Ardından, okuma / yazma modunda paylaşıma erişmesine izin verilen tüm kullanıcıların ekleneceği yeni bir grup oluşturmanız gerekir. Ona diyorumusershare . Mevcut bir grup kullanılabilir.

sudo addgroup usershare

Şimdi kullanıcıları ekliyoruz enzotib ve steevcbu gruba :

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(bir sonraki girişte geçerlidir).

Ardından rwxgrup için izinleri olan bir EKL ekliyoruzusershare zaten içinde bulunan tüm dosyalara için/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Son olarak rwxgrup için izinleri olan varsayılan bir EKL ekliyoruzusershare sonra içeride oluşturulan tüm dosyalar için/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Şimdi tüm kullanıcılar usershare grubun altındaki tüm dosyalarda tam izinlere sahip /media/shared. Her kullanıcının kendi ve diğerlerinin ev dizinlerindeki izinleri etkilenmez.

Bu çözümü test ettim ve işe yarıyor gibi görünüyor, ancak önerileri ve düzeltmeleri bekliyoruz.

Not : dikkate alınan dizinde oluşturulan yeni dosyalar ve dizinler usersharegrup için yazma iznine sahip olur , ancak klasöre kopyalanan veya taşınan dosyalar orijinal izinlerini korur. Kullanıcı, anladığım kadarıyla, yalnızca yeni oluşturulan dizinlere yazma erişimi gerektiriyorsa, bu bir sorun değildir. Aksi takdirde izinleri el ile değiştirmelidir. Kullanıcıların umask'ını tanımlayarak bunun üstesinden gelmek için bu cevaba bakın 002.


ACL'yi çok iyi bilmiyorum, rw-r - r-- gibi izinlere sahip bir dosyayı ana klasörünüzden paylaşılan klasöre test edip kopyalayabilir ve izinlerin usersharegrup için varsayılan rwx'e değişip değişmediğini görebilir misiniz?
düzenlemek

@arrange: hayır, amaçlandığı gibi çalışmıyor. Cevaba işaret edecek. Thank you
enzotib

Ben varsayılan olarak aktif seçeneği ile monte edilmelidir , çünkü /etc/fstab/ remountadım gerekli olmadığını eklemek istiyorum . ext4acl
enzotib

8
  1. Klasör yap.

    Örneğin:

    mkdir /mnt/family
    

    Onlara montaj bölümüne ihtiyacınız varsa ... ext4 ise ihtiyacınız olan tek /etc/fstabşey

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Grup myfam oluştur.

    addgroup myfam
    
  3. Bu gruba bazı kullanıcılar ekleyin

    adduser papa myfam  
    adduser mom myfam
    
  4. Şimdi alın ve izin verin.

    Bence değişmeden başlamalısın umask.

    12.04'te varsayılan dosya sistemi izinleri ve erişim hakları

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Şimdi en önemlisi. Bu satır setgid, bu klasör altında oluşturduğunuz her şeyi kullanıcılarınızın sahibi ve grubu olarak oluşturur myfam. Bu, sistemin kullanıcı birincil grubunu geçersiz kılmasına izin verir.

    chmod -R g+s /mnt/family   
    

3

Akla gelen en basit şey, her kullanıcıyı diğer kullanıcıların grubuna eklemektir.

Daha sonra her kullanıcının umask değerini 022'den 002'ye değiştirin, bu yapılabilir /etc/profile.

Düzenle

İlk adım aşağıdaki ile değiştirilebilir: tüm kullanıcıların users birincil grup olarak gruba dahil edin.

Edi2

@James_Henstridge'in önerdiği gibi, setgid bitini ana dizinde ayarlamak uygun olabilir, böylece oluşturulan yeni dosyalar ve dizinler kullanıcının bağımsız olarak aynı gruba sahip olur. Bu şekilde userskullanıcılar için birincil grup olarak kümeden kaçınabilirsiniz .


/dataYeni dosyaların grup sahipliğini devralması için tüm dizinlerde setgid bitini ayarlamanızı önermek üzere yanıtınızı düzenlemek isteyebilirsiniz .
James Henstridge

edit3 :) Bir dosyayı /dataklasöre kopyalarsanız , izinler devralınmaz, bu nedenle gw izinlerine sahip eski dosyalar başkaları tarafından değiştirilemez. edit4: usersbirincil grubunuz ve umask0002 olarak ayarlamak kesinlikle iyi bir fikir değildir, çünkü bu gruptaki herkes yeni oluşturulan dosyalarınızdan herhangi birini değiştirebilir.
düzenlemek

@arrange: edit4 ile ilgili olarak, usersyalnızca paylaşıma rw erişimine izin verilen kullanıcıların gruba girmesini önerdim . Bu bir kolaylık meselesiydi, bunun için başka bir grup da oluşturabilirdi. Edit3 ile ilgili olarak, doğru değil, kopyalanan dosya klasör grubunu alır.
enzotib

@enzotib: başka bir deyişle benim fikrimi tekrarlamak için: edit4 - Eğer usersbenim birincil grubum ve bu grupta daha fazla kullanıcı varsa o zaman paylaşılan dizin dışında bile dosyalarımı değiştirmek mümkün; edit3 - Klasör grubu değil, izinler yazdım .
düzenlemek

@arrange: puanınız doğru, sadece başka bir cevap yazdım, görüşünüzü duymak ilginç olabilir.
enzotib


0

Anlamıyorum, tüm linux-linux, linux-windows, linux - ???, Samba kullanıyor ?, SSH ?, Güvercinler ?; her neyse, kullanıcı adınızı (Grubunuz) kullanarak diğerlerini Gruba dahil etmeniz gerekir ve sizinle aynı izinleri alırlar.


Bu, bir bilgisayarda birden fazla kullanıcıdır. Eminim yararlı bir şey için varsayılan izinleri almak için bir yol olmalıdır.
steevc

0

GRUP İZNİ sorunum için cevap ararken bu soruya rastladım. Soruyu okudum ve görünüşe göre sorunun yerine getirmeye çalıştığı şeyi uyguluyorum.

Bu yüzden cevaplamak için uğraştım.

Zaten lan'ımdaki tüm kullanıcılar için yalnızca okuma ve yürütme özellikli bir paylaşım ayarına sahibim ve yalnızca hesabım paylaşılan klasörlere yazma iznine sahip.

Lan'ımda ubuntu 12.04 LTS Desktop Edition kullanan çok amaçlı bir sunucum var. Linux ve windows karma istemci makineleri var.

Heres nasıl ayarladım:

Sunucumda, adında kullanıcı hesaplarım var adminveclientone

adminHesap ben ubuntu yüklü olduğunda oluşturulan hesap ve clientonehesap KULLANICI kullanılarak oluşturulan hesaptır ubuntu menüye HESAPLAR. Yalnızca standart bir izne sahiptir, yönetici ayrıcalıkları yoktur veusers gruba . Elbette bunları sadece terminali kullanarak yapabilirsiniz. İstemci makineleriniz için daha fazla ek kullanıcı hesabı ekleyin.

Paylaşılan bölüm / klasör fstab içinde yalnızca varsayılanlar seçeneği kullanılarak otomatik olarak numaralandırılır.

3. ağım bir çalışma grubu ortamında ve açık mylan çalışma grubunda.

Lan'ımdaki tüm makineler, mylan çalışma grubunu .

4. adlı paylaşılan klasörümde sharedzaten dosyalar var. Bu nedenle, aşağıdaki komutu kullanarak sahibini ve grubunu tekrar tekrar değiştiriyorum.

 sudo chown -Rv admin:users /shared

5.Ayrıca klasör ve dosya iznini de ayarladım /shared , komutu kullanarak özyinelemeli klasör için

 sudo chmod -Rv 750 /shared

mylançalışma grubumdaki konuk makinelerin chmod 750 kullanarak paylaşıma erişimi yok

kullanabilirsin

 sudo chmod -Rv 755 /shared

usersGrup içindeki gelecekteki tüm kullanıcı hesaplarının yalnızca okuma yürütme izni vardır.

6. istemci makinemde bir (windows xp) adında bir kullanıcı hesabı oluşturdum clientone . Ubuntu sunucumda oluşturulan kullanıcı adı ve parolayla aynı. clienttwoUbuntu sunucusunda adlı ikinci bir hesap da oluşturulur ve ikinci makinemde kullanılan kullanıcı hesabıyla aynıdır (linuxmint 15).

7.Müşteri makinemde clientonehesabı kullanarak giriş yaptıktan sonra , komutu çalıştırmaya gidiyorum ve giriyorum

 //192.168.10.254/shared

192.168.10.254ubuntu sunucumun ip adresidir, ubuntu sunucumda /sharedpaylaşılan klasördür İstemci makinemde iki (linuxmint 15), Menü> Ağ'a ve yazdığım Konum: iletişim çubuğuna gidiyorum:

 smb://192.168.10.254/shared

Sizden şifre istenmişse, kullanıcı hesabı şifrenizi girin. Ayrıca linux makinelerinizde KEYRING etkinse anahtarlık şifreniz.

Bu benim kendi ağ kurulumumda çalışıyor. Sunucum kalamar sunucusu, xbmc ve mediatomb sunucusu ve amahi sunucusu olarak hizmet veren çok amaçlı bir sunucudur.

Hala kurulumumun dosya paylaşım bölümünü iyileştirmenin yollarını arıyorum. Yukarıdaki talimat kurşun geçirmez bir çözüm değildir, satın almayı deneyebilirsiniz. ACL ”olayını otomatik olarak paylaşılan klasörlerle birlikte test edip deniyorum. Klasör paylaşım gereksiniminiz karmaşıklaştıkça, yukarıdaki talimatlar size başarıyı garanti etmez.

Eklenen Bilgi:

Sunucumda Amahi Sunucusu yüklü, paylaşılan klasörlere erişmek istediğim kullanıcı hesapları oluşturmak için de kullandım. Yeni klasör paylaşımları oluşturmak için de kullandım.

Farklı kullanıcılar için daha karmaşık kullanıcı izni istediğinizde, ACL gidecektir.


0

Benim adımda video dosyaları var, ama kızlarımın adıyla oturum açtığımda hesabı video dosyalarını göremiyor. Böylece, yaptığım şey kullanıcı hesaplarına gitti, kilidi açıldı (sağ üstte), ardından hesap türünü "standart" olarak "yöneticiye (hesabım budur) değiştirdi ve şimdi tüm video dosyaları, gerçekten her şey görünüyor hesabı altında oturum açtığınızda.

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.