Ubuntu'da bir klasördeki birden çok kullanıcıya yazma izni verin


80

Tomcat6 kullanıcısına ait bir klasör var:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Başka bir kullanıcının (ruser) belge klasörüne yazma izinlerine izin vermek istiyorum. İki kullanıcı (tomcat6 ve ruser) aynı gruba ait değil. Kullanmayı denedim setfacl:

sudo setfacl -m  u:ruser:rwx document

ama bu bana setfacl: document: Operation not supportedhata veriyor . Lütfen bana yardım et.

Yanıtlar:


143

Bunu yapmanın iki yolu vardır: dizini "dünyaya" yazılabilir olarak ayarlayın ya da iki kullanıcı için yeni bir grup oluşturun ve dizini bu gruba yazılabilir hale getirin.

Açıkçası onu dünyaya yazılabilir yapmak kötü bir şey, bu yüzden ikinci seçenek tercih edilebilir.

Linux'taki kullanıcılar birden fazla gruba ait olabilir. Bu durumda yepyeni bir grup oluşturmak istiyorsanız, haydi şunu söyleyelim tomandruser:

sudo groupadd tomandruser

Şimdi grup var olduğu için iki kullanıcıyı da ekleyin:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Artık geriye kalan tek şey dizinde izinleri ayarlamak:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Artık sadece komuta grubu grubunun üyeleri dizin içindeki herhangi bir şeyi okuyabilir, yazabilir veya yürütebilir. Chmod ve chgrp komutlarının -R argümanını not edin: bu, hedef dizinin her alt dizinine tekrar girmelerini ve bulduğu her dosyayı ve dizini değiştirmelerini söyler.

Ayrıca, 770'i, 774başkalarının dosyaları okuyabilmesini, 775başkalarının da dosyaları okumasını ve yürütmesini vb. İstiyorsanız, istediğiniz gibi değiştirebilirsiniz . Grup ataması değişiklikleri, kullanıcılar oturumu kapatıp geri dönene kadar etkili olmaz. içinde.

Ayrıca, (muhtemelen yaparsınız) kullanıcılardan biri tarafından dizin içinde oluşturulan yeni dosyaların gruptaki diğer kullanıcılar tarafından otomatik olarak yazılabilir olmasını istiyorsanız , o zaman buraya bakın .


2
Muhtemelen doğru grup tarafından otomatik olarak sahip olunan yeni dosyalar ve alt dizinler oluşturmak için dizinler için set grubu kimliği bayrağını da ayarlamak istersiniz:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio

8
Chmod 770, 775 ya da her neyse kullanmaktan kaçınırdım. Bu, tüm dosyaların izinleriyle karışır . Bunun yerine, chmod -R g+wher şeyi mahvetmeden yazma izinleri eklemek gibi bir şey kullanın .
Christian Varga,

2
Bir kullanıcı orada yeni bir dosya oluşturduğunda (mysql by SELECT INTO OUTFILE), birincil grubuna izinler ayarlar ( mysqlbu durumda) ve dosyaya başka bir kullanıcı tarafından erişilemez. Bu geçici çözüm nasıl?
Olexa

2
Kullanıcıların, klasörün sahipliğini değiştirmeden bir klasöre yazma izni vermek istiyorsanız, örneğin bir public_html klasöründe Apache'nin izinleriyle uğraşmak istemezseniz?
codecowboy

2
Not: "Grup ataması değişiklikleri, kullanıcılar oturumu kapatıp tekrar oturum açana kadar etkili olmaz." Bunu özledim :)
Vladimir Vukanac 4:15

3

Örnek komut vermek için bir örnek gösterir w (write)/ r (read) / x (execute)verilen klasör yoluna izni /path/to/the/directoryiçin USER1ve USER2. Değiştirmek lütfen yalnızca yazma erişimi vermek istiyorsanız rwxile w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
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.