Linux Komutu 'setfacl' öğrenin
Setfacl yardımcı programı, dosyaların Erişim Kontrol Listelerini (ACL'ler) ayarlar ve dizinler. Üzerinde Komut satırı, bir komut dizisini bir dosya dizisi takip eder (bunun ardından başka bir komut dizisi vb. gelebilir).
- Seçenekler -m, ve -x komut satırında bir ACL bekleyin. Birden çok ACL girişi virgül karakterleriyle (`,') ayrılır. Seçenekler -M, ve -X bir dosyadan veya standart girdiden bir ACL okuyun. ACL giriş formatı, ACL GİRİŞLERİ Bölümünde açıklanmıştır.
- NS --Ayarlamak ve --set-dosyası seçenekler bir dosyanın veya dizinin ACL'sini ayarlar. Önceki ACL değiştirilir. Bu işlem için ACL girişleri izinleri içermelidir.
- NS -m (--değiştir) ve -M (--modify-dosyası) seçenekler ACL'yi değiştirir dosya veya dizin. Bu işlem için ACL girişleri izinleri içermelidir.
- NS -x (--kaldır) ve -X (--remove-dosyası) seçenekler ACL girişlerini kaldırır. Yalnızca ACL girişleri izinler alanları, POSIXLY_CORRECT tanımlanmadıkça parametre olarak kabul edilir.
kullanarak dosyalardan okurken -M, ve -X seçenekler, setfacl çıktıyı kabul eder
ACL'leri desteklemeyen bir dosya sisteminde setfacl kullanılıyorsa, setfacl dosya modu izin bitlerinde çalışır. ACL izin bitlerine tam olarak uymuyorsa, setfacl dosya modu izin bitlerini yansıtacak şekilde değiştirir. ACL mümkün olduğu kadar yakın, standart hataya bir hata mesajı yazar ve daha büyük bir çıkış durumu ile geri döner. 0.
Setfacl'ı kullanma
İlk önce, dosyanızdaki bir klasör için temel bir liste oluşturmayı deneyin. ev dizini. Bunu ilk kez denediğiniz için, oynamak için yeni bir tane yapın. Bu şekilde, kendinizi önemli belgelere kilitleme riskine girmezsiniz.
mkdir ~/acl testi.
Ardından, sisteminizdeki başka bir kullanıcıya klasöre erişim izni vermek için setfacl'ı kullanın. Setfacl kullanır -m Bir dosyanın erişim kontrol listelerini değiştirmek için bayrak. Bu genellikle bir kullanıcı veya grup eklemek anlamına gelir.
setfacl -m u: kullanıcı adı: rwx ~/acl-test/
NS sen ilk kolondan önce bir kullanıcı adından bahsettiğiniz komutu söyler. NS rwx ikincisi hibeleri takiben ryemek wayin ve execute izinleri.
Aynısı belirterek gruplar için çalışır G onun yerine sen ilk kolondan önce.
setfacl -m g: grup adı: rwx ~/acl-test/
Tüm gruba izin vermesi dışında önceki örnekle aynı şekilde çalışır.
NS -x bayrak tam tersi çalışır -m. Belirtilen kullanıcı veya gruba erişimi iptal edecektir.
setfacl -x u: kullanıcı adı: w ~/acl-test/
Komut, dizine kullanıcının yazma erişimini iptal eder.
Ayrıca, mevcut tüm kullanıcılar için izinleri doğrudan değiştirebilirsiniz. Bu, dosyanın sahibini ve izin verilen ek kullanıcıları içerir. Bu, mevcut komutu kullanan ancak kullanıcı adını atlayan bir kısayoldur.
setfacl -m u:: rx ~/acl-test/
Bu, mevcut tüm kullanıcılara okuma ve yürütme izinleri verir, ancak yazma erişimini kaldırır.
Aynı şey ile çalışır -x işaretleme ve izinleri kaldırma.
setfacl -x u:: w ~/acl-test/
Bu, esasen önceki örnekle aynıdır, tersine çevrilmiştir.
setfacl ayrıca erişim kontrol listelerini bir dosyadan diğerine kopyalamanıza izin verir. Kullanıcınızın test klasörüne tam erişimi olduğundan emin olun ve üzerinde çalışacak iki yeni dosya oluşturun.
~/acl-test/file{1,2}.txt'e dokunun.
Şimdi, ilk dosyanın izinlerini değiştirin.
setfacl -m u: kullanıcı adı: rx ~/acl-text/file1.txt.
Şimdi, geçerli ACL bilgisini alma komutu olan getfacl'ın sonuçlarını setfacl'e aktarabilirsiniz.
getfacl ~/acl-test/file1.txt | setfacl --set-file=- ~/acl-text/file2.txt.
İkinci dolgu, birinciyle aynı izinlere sahip olacaktır.
Son olarak, komut tarafından oluşturulan tüm genişletilmiş ACL girişlerini kaldırabilirsiniz. Bu, dosyayı başlangıçta sahip olduğu kullanıcı ve grup izinleriyle bırakacaktır. Bunu yapmak için -b bayrağını kullanın.
setfacl -b ~/acl-testi/
Bunlar setfacl'ın en yaygın kullanımlarıdır. Daha derine inmek istiyorsanız, bu kılavuzun sonraki bölümü komutun eksiksiz bir teknik dökümüdür.
Setfacl'ın Teknik Dağılımı
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] dosyası...
setfacl --restore=dosya.
izinler
Dosya sahibine ve CAP_FOWNER yeteneğine sahip işlemlere bir dosyanın ACL'lerini değiştirme hakkı verilir. Bu, dosya moduna erişmek için gereken izinlere benzer. (Mevcut Linux sistemlerinde, CAP_FOWNER yeteneğine sahip tek kullanıcı root'tur.)
Seçenekler
-b, --tümünü kaldır
- Tüm genişletilmiş ACL girişlerini kaldırın. Sahibin, grubun ve diğerlerinin temel ACL girişleri korunur.
-k, --remove-varsayılan
- Varsayılan ACL'yi kaldırın. Varsayılan ACL yoksa hiçbir uyarı verilmez.
-n, --maskesiz
- Etkili haklar maskesini yeniden hesaplamayın. setfacl'nin varsayılan davranışı, açıkça bir maske girişi verilmediği sürece ACL maske girişini yeniden hesaplamaktır. Maske girişi, sahip olan grubun tüm izinleri ile tüm adlandırılmış kullanıcı ve grup girişlerinin birleşimine ayarlanır. (Bunlar tam olarak maske girişinden etkilenen girişlerdir).
--maske
- Bir ACL maskesi girişi açıkça verilmiş olsa bile, etkin haklar maskesini yeniden hesaplayın. (bkz. -n seçenek.)
-d, --varsayılan
- Tüm işlemler için geçerlidir Varsayılan ACL. Giriş kümesindeki normal ACL girişleri, Varsayılan ACL girişlerine yükseltilir. Giriş kümesindeki varsayılan ACL girişleri atılır. (Bunun olması durumunda bir uyarı verilir).
--restore=dosya
- 'getfacl -R' veya benzeri tarafından oluşturulan bir izin yedeğini geri yükleyin. Tam bir dizin alt ağacının tüm izinleri, bu mekanizma kullanılarak geri yüklenir. Giriş, sahip yorumları veya grup yorumları içeriyorsa ve setfacl root tarafından çalıştırılıyorsa, tüm dosyaların sahibi ve sahip grubu da geri yüklenir. Bu seçenek, `--test' dışında diğer seçeneklerle karıştırılamaz.
--Ölçek
- Test modu. Herhangi bir dosyanın ACL'lerini değiştirmek yerine, ortaya çıkan ACL'ler listelenir.
-R, --özyinelemeli
- İşlemleri tüm dosya ve dizinlere özyinelemeli olarak uygulayın. Bu seçenek `--restore' ile karıştırılamaz.
-L, --mantıksal
- Mantıksal yürüyüş, sembolik bağları takip edin. Varsayılan davranış, sembolik bağ argümanlarını takip etmek ve alt dizinlerde karşılaşılan sembolik bağları atlamaktır. Bu seçenek `--restore' ile karıştırılamaz.
-P, --fiziksel
- Fiziksel yürüyüş, hepsini atla sembolik bağlar. Bu aynı zamanda sembolik bağlantı argümanlarını da atlar. Bu seçenek `--restore' ile karıştırılamaz.
--versiyon
- setfacl sürümünü yazdırın ve çıkın.
--Yardım
- Komut satırı seçeneklerini açıklayan yardımı yazdırın.
Komut satırı seçeneklerinin sonu. Kalan tüm parametreler, bir tire ile başlasalar bile dosya adları olarak yorumlanır.
Dosya adı parametresi tek bir tire ise, setfacl standart girdiden dosyaların listesini okur.
ACL Girişleri
setfacl yardımcı programı aşağıdaki ACL giriş biçimlerini tanır:
[d[varsayılan]:] [u[ser]:]kullanıcı kimliği [:izinler]
- Adlandırılmış bir kullanıcının izinleri. Dosya sahibinin izinleri ise kullanıcı kimliği boş.
[d[varsayılan]:] g[grup]:gid [:izinler]
- Adlandırılmış bir grubun izinleri. Eğer sahip olan grubun izinleri gid boş.
[d[varsayılan]:] m[sor][:] [:izinler]
- Etkili haklar maskesi
[d[varsayılan]:] o[diğer][:] [:izinler]
- Başkalarının izinleri
Sınırlayıcı karakterler ve sınırlayıcı olmayan karakterler arasındaki boşluk yok sayılır.
İzinler dahil olmak üzere uygun ACL girişleri, değiştirme ve ayarlama işlemlerinde kullanılır. (seçenekler -m, -M, --Ayarlamak ve --set-dosyası). olmadan girişler izinler alan için kullanılır silme girişler (seçenekler -x ve -X).
İçin kullanıcı kimliği ve gid bir ad veya numara belirtebilirsiniz.
NS izinler alan, izinleri gösteren karakterlerin birleşimidir: okuma (r), yazı yazmak (w), uygulamak (x), yalnızca dosya bir dizinse veya bazı kullanıcılar için zaten yürütme iznine sahipse yürütün(X). Alternatif olarak, izinler alan sekizli bir rakam (0-7) olabilir.
Otomatik Olarak Oluşturulan Girişler
Başlangıçta dosyalar ve dizinler, sahip, grup ve diğerleri için yalnızca üç temel ACL girişini içerir. Bir ACL'nin geçerli olması için yerine getirilmesi gereken bazı kurallar vardır:
- Üç temel giriş kaldırılamaz. Bu temel giriş türlerinin her birinin tam olarak bir girişi olmalıdır.
- Bir ACL, adlandırılmış kullanıcı girdileri veya adlandırılmış grup nesneleri içerdiğinde, aynı zamanda etkin bir hak maskesi de içermelidir.
- Bir ACL, herhangi bir Varsayılan ACL girişi içerdiğinde, üç Varsayılan ACL temel girişi de (varsayılan sahip, varsayılan grup ve varsayılan diğerleri) mevcut olmalıdır.
- Bir Varsayılan ACL, adlandırılmış kullanıcı girişleri veya adlandırılmış grup nesneleri içerdiğinde, aynı zamanda varsayılan bir etkin haklar maskesini de içermelidir.
Kullanıcının bu kuralları sağlamasına yardımcı olmak için setfacl, aşağıdaki koşullar altında mevcut girdilerden girdiler oluşturur:
- Bir ACL, adlandırılmış kullanıcı veya adlandırılmış grup girdileri içeriyorsa ve maske girişi yoksa, grup girişiyle aynı izinleri içeren bir maske girişi oluşturulur. sürece -n seçeneği verildiğinde, maske girişinin izinleri, maske girişinden etkilenen tüm izinlerin birliğini içerecek şekilde ayrıca ayarlanır. (bkz. -n seçenek açıklaması).
- Bir Varsayılan EKL girişi oluşturulmuşsa ve Varsayılan EKL sahip, sahiplik grubu veya başkaları girişi içermiyorsa, Varsayılan EKL'ye ACL sahibinin, sahip olan grubun veya başka bir girişin bir kopyası eklenir.
- Bir Varsayılan ACL, adlandırılmış kullanıcı girişleri veya adlandırılmış grup girişleri içeriyorsa ve maske girişi yoksa, varsayılan Varsayılan EKL'nin grup girişiyle aynı izinleri içeren bir maske girişi eklenir. sürece -n seçeneği verildiğinde, maske girişinin izinleri, maske girişinden etkilenen tüm izinlerin birliğini içerecek şekilde ayrıca ayarlanır. (bkz. -nseçenek açıklaması).
Örnekler
- Ek bir kullanıcıya okuma erişimi verme
- setfacl -m u: lisa: r dosyası
- Tüm gruplardan ve tüm adlandırılmış kullanıcılardan yazma erişimini iptal etme (etkili haklar maskesini kullanarak)
- setfacl -m m:: rx dosyası
- Bir dosyanın ACL'sinden adlandırılmış bir grup girişini kaldırma
- setfacl -x g: personel dosyası
- Bir dosyanın ACL'sini diğerine kopyalama
- getfacl dosya1 | setfacl --set-file=- dosya2
- Erişim ACL'sini Varsayılan ACL'ye kopyalama
- getfacl -a dizin | setfacl -d -M- dizini
Posix 1003.1e Taslak Standardı 17'ye Uygunluk
POSIXLY_CORRECT ortam değişkeni tanımlanırsa, setfacl'nin varsayılan davranışı aşağıdaki gibi değişir: Standart olmayan tüm seçenekler devre dışı bırakılır. ``varsayılan:'' öneki devre dışı. NS -x ve -X seçenekler ayrıca izin alanlarını da kabul eder (ve yok sayar).