ACL'leri Mac OS X'te nasıl kopyalarım?


13

Çoğu unix türevi ACL'leri bir dosyadan diğerine aşağıdakilerle kopyalayabilir:

getfacl filename1 | setfacl -f - filename2

Ne yazık ki Mac OS X, ACL işlemeyi chmod'a yuvarladıkları için getfacl ve setfacl komutlarına sahip değil. chmod -E, stdin'de ACL'lerin bir listesini kabul eder, ancak ACL'leri stdout'ta uygun bir formatta tükürecek bir komut bulamadım. En iyi ben geldim:

ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2

Daha sağlam bir çözüm var mı?

Bonus soru: Python'da, 10.6 ile gönderilmeyen herhangi bir modül kullanmadan bunu yapmanın güzel bir yolu var mı?


Şimdi 2020 yılı ve macOS hala getfacl/ setfacl. Oldukça dikkat çekici. github.com/jvscode/getfacl 10 yaşında Çalışmasını sağlayamadım. serverfault.com/a/303752/104173 karmaşık görünüyor ve get/setfaclişlevselliği değiştirmeye çalışırsa net değilim . MacOS'un bir sunucu platformu olmadığını anlıyorum, ancak yine de güvenlik saldırıları yaşayabilir. Bu konuşmayı apple.stackexchange.com'da yeniden başlatmaya değer mi?
Johnny Utahh

Yanıtlar:


8

ls -e Varsa, dosyayla ilişkili Erişim Denetim Listesi'ni (ACL) uzun (-l) çıktı olarak yazdırın.

bu gibi bir sonuç verir ...

drwxr-xr-x@ 19 localadmin   646B Aug  4 00:21  APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
                   ⬆    ⇧                      ⇶                                     ⬆

Şahsen bende "ihracat" var ~/.bash_profile

export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"

bu chmodmümkün kılıyor ...

sudo chmod + a "izin ver localadmin $ DIR_ALL" / APPBUNDLE

Gönderen chmodadam sayfasında, ipuçları gerçekten açıkladığınız gibi bir şey yapmak mümkün olabileceğini o ... bilgi bu biraz var ..

"ACL'ler, sembolik mod dilbilgisi uzantıları kullanılarak işlenir. Her dosya, sıralı bir giriş listesi içeren bir ACL'ye sahiptir. Her girdi bir kullanıcı veya gruba başvurur ve bir dizi izin verir veya reddeder. Bir kullanıcı ve bir grubunun adı aynı olduğunda, kullanıcı / grup adı, ad türünü belirtmek için "kullanıcı:" veya "grup:" ile önek olarak eklenebilir.

chmod -E STDD'den gelen ACL bilgilerini, satır satırlarıyla ayrılmış ACE'lerin sıralı bir listesi olarak okur. Bilgiler doğru şekilde ayrıştırılırsa, mevcut bilgiler değiştirilir.

Ayrıca, bir ihtiyar olan BatchMod'a , ama ACL'lerin yanı sıra TinkerToolSystem için bir haber vereceğim .


Bu benim için çalıştı, ama chmod komutunu değiştirmek zorunda kaldım: sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE(kullanıcı adı ve anahtarını değiştirme allow)
E. Moffat


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.