Gilles'in işaret ettiği gibi, setfacl
varsayılan izinler temel olarak yerine geçen maksimum izinleri belirtir umask
. Yeni oluşturulan dosyalar rw
, dosyayı oluşturan uygulama özel olarak yürütülebilir olmasını istemedikçe olacaktır.
$ mkdir test
$ touch test/oldfile
$ getfacl test/oldfile
# file: test/oldfile
# owner: myuser
# group: myuser
user::rw-
group::r--
other::r--
$ setfacl -m d:g:mygroup:rwx test
$ touch test/newfile
$ getfacl test/newfile
# file: test/newfile
# owner: myuser
# group: myuser
user::rw-
group::r-x #effective:r--
group:mygroup:rwx #effective:rw-
mask::rw-
other::r--
Yukarıdaki etkili izinlere dikkat edin. (Yürütme bitini oluşturduğu dosyalara, örneğin gcc
yürütülebilir dosyalar ve cp
kopyalanan dosyanın yürütülebilir olup olmadığını ayarlamayı isteyen birkaç program vardır .)
Yoksa ilk setfacl komutunun istediğiniz şekilde çalıştığını mı söylediniz, ikincisi de öyle değildi? Başka bir deyişle, eski dosyalarda izinleri düzeltmek mi istiyorsunuz, diğer normal dosyaları yürütme izinleri vermeden dizinlerin sürülebilir olduğundan emin misiniz?
Benim sürümüm tam olarak istediğiniz gibi setfacl
izin verir X
, örneğin:
setfacl g:mygroup:rwX
$ setfacl --version
setfacl 2.2.49
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ find test -ls
107513 4 drwxr-xr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-r--r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxr-xr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ setfacl -Rm g:somegroup:rwx test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rwxr-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ setfacl -Rm g:somegroup:rwX test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rw-r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
Sürümünüz setfacl
bunu desteklemiyorsa neden kullanmıyorsunuz find
?
izinlerin üzerine yazma, dosyalar için rw ve dirs için rwx olarak ayarlama
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
grup ACL izinlerini mevcut grup izinlerine göre ayarlama
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
Muhtemelen grup maskesinin etkili izinler sağlayıp sağlamadığını kontrol etmek isteyeceksiniz. Değilse, bunu da çalıştırmanız gerekir:
$ find . -type d -exec chmod g+rwX '{}' ';'