MAC’te dosya ve klasörlerin gelişmiş yetkileri (ACL)

MAC OS X işletim sistemi de Linux gibi Unix temellidir ve Linux’la pek çok benzerliği bulunur. Dosya izinleri de bunlardan birisidir. Mac ve Linux’ta dosyaların sahipleri, aynı gruptaki kullanıcılar ve diğer kullanıcılar için izinleri ayrı ayrı belirlenebilir.

Dosyanın özelliklerini ve izinlerini görmek için `ls -l` komutu kullanılabilir. Örneğin:

ls -l
total 59
drwxrwxr-x+ 97 root  admin  3298  8 Ara 15:43 Applications
drwxr-xr-x+ 63 root  wheel  2142  9 Kas 12:57 Library
[email protected]  3 root  wheel   102  8 Ara 12:19 Network
[email protected]  4 root  wheel   136  9 Kas 12:59 System
lrwxr-xr-x   1 root  wheel    49  8 Eyl  2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x   7 root  admin   238  8 Ara 10:58 Users
[email protected]  3 root  admin   102  8 Ara 12:19 Volumes
[email protected] 39 root  wheel  1326  9 Kas 12:59 bin
[email protected]  2 root  admin    68  2 Eki 12:35 cores
dr-xr-xr-x   3 root  wheel  7634  8 Ara 12:19 dev
[email protected]  1 root  wheel    11  2 Eki 12:34 etc -> private/etc
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 home
[email protected]  1 root  wheel   313 23 Ağu 05:35 installer.failurerequests
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 net
[email protected]  6 root  wheel   204  2 Eki 12:35 private
[email protected] 59 root  wheel  2006  9 Kas 12:59 sbin
[email protected]  1 root  wheel    11  2 Eki 12:34 tmp -> private/tmp
[email protected] 12 root  wheel   408  2 Eki 12:39 usr
[email protected]  1 root  wheel    11  2 Eki 12:34 var -> private/var

İlk sütun dosya veya klasörün (kullanıcı, aynı gruptaki kullanıcılar ve diğer kullanıcılar için) izinlerini belirtir.

d/l => directory (klasör) / file (dosya)
r => read (okuma)
w => write (yazma)
x => execute (çalıştırma)

Bazı dosyalarda ilk sütunun sonunda + veya @ işareti olduğunu görüyoruz. Bu dosyalar için klasik POSIX izinlerine ek olarak ACL (access control list) yetkileri tanımlanmıştır. `ls -le` veya `ls [email protected]` komutlarıyla ayrıntılarını görebilirsiniz:

ls [email protected]
drwxr-xrwx   28 mustafa  staff   952  8 Ara 17:45 Desktop
drwxr-xrwx   18 mustafa  staff   612  7 Ara 09:35 Documents
drwxr-xrwx  103 mustafa  staff  3502  7 Ara 21:33 Downloads
[email protected]  37 mustafa  staff  1258  8 Ara 22:39 Dropbox
	com.apple.FinderInfo	  32 
[email protected]  19 mustafa  staff   646 30 Kas 14:25 Google Drive
	com.apple.FinderInfo	  32 

 

Şimdi gelelim, durup dururken bu ACL’den neden bahsettiğime. Sisteminizdeki pek çok hatanın kaynağı dosyalarınızın izinlerini bozmanız olabilir. Benim örneğimde, bilgisayarımı şirket ağına bağlaması için götürdüğüm IT görevlisi bana bir şey sormadan kullanıcı klasörümdeki tüm dosyaların yetkilerini değiştirmişti. Bunun üzerine bana ait olan dosyaları silmek veya değiştirmek istediğimde her seferinde şifre sormaya başladı. Word, Excel her açılışta “kaydedilmemiş dökümanlarını kurtarmaya çalışıyoruz” şeklinde uyarı vermeye başladı. Evernote her açılışta “notunu kaydedemiyorum” hatası vermeye başladı. Hatta, Android Studio projemi derlememeye başladı.

Benim bulduğum çözüme gelirsek, ACL tanımlarını kaldırmak için `chmod -RN DOSYA_ADI` komutunu kullandım. Sonra da tüm dosyalarımın izinlerini 644, tüm klasörlerimin izinlerini 755 yaptım.

chmod -RN DOSYA_ADI
find ./ -type d -exec chmod 755 {} \;
find ./ -type f -exec chmod 644 {} \;

Not: bu komutlar benim sorunumu çözdü, ama sizin sisteminizde başka yazılımların çalışmasında hataya neden olabilir.

Not 2: (çok hızlı gelen edit) benim sistemimde de kullanıcı dizinimin altında çalıştırmam gereken dosyalar varmış. pek doğru bir iş olmasa da Android SDK’sını kullanıcı klasörümün altına koymuşum. bu dosyalar için kendime `chmod u+x DOSYA_ADI` komutuyla çalıştırma izni vermem gerekti.