UNIX veya UNIX türevi bir işletim sistemi ile çalışan hemen hemen her kullanıcı "Permission denied" mesajı ile karşılaşmıştır. Mesaj bir çok kullanıcının root hesabını kullanmaya başlamasına neden olan sebeplerden birisidir. Root hesabının kullnaılması da sistemin bir süre sonra sonra işe yaramaz hale gelmesine neden olacaktır. Çünkü bir çok kullanıcı UNIX işleyişini bilmediği için, hata mesajından sakınmak isterken ciddi hatalar yapacak ve sistemi işlemez hale getirecektir. Bu sorunun ortaya çıkmadan önlenebilmesi için kullanıcının UNIX ve türevi istemlerin nasıl işlediğini bilmesi gereklidir.
UNIX ve türevi sistemlerde üç adet temel izin kullanılır: oku (r), yaz (w) ve çalıştır (x).
Sisteminizin / dizininde "ls -la" / komutunu çalıştıracak olursanız aşağıdakine benzer bir Çıktı göreceksiniz.
Bir UNIX sistemde her şey dosyadır. Bir diğer deyişle, klavye, monitör, sabit disk vb hepsi birer dosyadır. Dolayısıla da ls -al komutunun çıktısındaki ilk harf söz konu dosyanın türünü belirtir. Örneğin
bin dosyasının bir dizin olduğunu gösterir. Benzer olarak
satırları ise iki dosyayı göstermektedir. Sembolik bağlar ise aşağıdaki iki örnekte görüldüğü gibi "l" ile başlar ve aynı zamanda işaret ettikleri dosyalar ve dizinlerde tanımlanır.
İlk harfi izleyen alanda yer alan dokuz karakter ise dosyanın izinlerini tanımlar. İzinler her zaman oku,yaz, çalıştır sırası ile tanımlanır. Söz konusu dosyada tanımlı olan izin ilgili harf
ile "r,w,x" ile gösterilir. Tanımlanmamış izin ise "-" ile gösterilir. Bir dosya için tanımlı olan izinler dosyanın sahibi, grubu ve diğerleri için olmak üzere üç defa tanımlanır.
.cshrc ve profile birer dosya oldukları için "-" ile başlamaktadır. Her iki dosyanın sahibi root kullanıcısıdır. Dosya üzerinde okuma ve yazma hakına sahiptir ama dosya üzerinde çalıştırma izni yoktur. Dosyanın birincil grubu -wheel- dosya üzerinde okuma hakkına sahiptir ama yazma ve çalıştırma izni yoktur. Diğerleri de dosyayı okuyabilir ama dosyaya yazmaz ve dosyayı çalıştıramazlar.
Dosyanın sahibi ve birincil grubu izinlerin ardından gösterilir. Bunları ise dosyanın byte cinsinden büyüklüğü ile dosya üzerinde yapılan son düzenlemenin tarihi yer alır.En son olarak da dosyanın adı gösterilir.
Bir kullanıcnın bir dosya ile ne yapabileceği dosyanın izinlerine ve dosyanın da içinde bulunduğu dizinin izinlerine göre şekillenir. Bunun istisnası ise root kullanıcıdır. root kullanıcısı dosya ve dizinlerdeki izinlerden bağışıktır.
Eğer bir dosya üzerinde okuma (r) izni verilmiş ise söz konusu dosyanın içeriği cat veya bir metin düzenleyicisi ile görüntülenebilir. Benzer olarak bir dizine okuma izini verildiğinde içerisinde yer alan tüm dizinler ve dosyalar ls komutu ile listelenebilir.
Eğer yazma (w) izni verilmiş ise dosyanın içeriği bir metin düzenleyicisi ile değiştirilebilir. Bir dizin üzerinde yazma izini tanımlandığında ise o dizin içzerisinde alt dizinler ve dosyalar üzerinde yazma hakkı verilmiştir. Bu durumda dosya/dizin oluşturulabilir ve silinebilir.
Eğer çalıştırma (x) izni tanımlanırsa bir program ile bir dosya kabuk programı olarak çalıştırabilir. Eğer dizine çalıştırma izini verilirse bu durumda o dizine cd komutu ile geçebilirsiniz.
"ls -la" komutunun çıktısına yeniden dönelim.
"." her zaman için bulunduğunuz dizini ve ".." ise bir üst dizini belirtir. "/" dizini söz konusu olduğunda hem bir üst dizin hem de bulunduğunuz dizin aynıdır. Ancak bu durum / altında yer alan diğer alt dizinlerde farklılık gösterecektir. :)
.cshrc ve .profile dosyaları sistemde yer alana iki farklı kabuk ortamının yapılandırma dosyalarıdır. Bu dosyalar üzerinde sahibinin okuma ve yazma izni bulunurken grubu ve diğerleri için sadece okuma izni tanımlanmıştır. O halde bu dosyalar üzerinde bir işlem yapmak isterseniz ne olur?
Dosyaları bir metin düzenleyicisi, vi, vim veya cat ile açıp okuyabiliriz. Üzerinde düzenleme yapabilirsiniz ama yaptığınız değişiklikleri kayıt edemezsiniz.
/ dizinine geçiş yapabiliyoruz ama dosyayı kopyalamak, silmek veya yeniden isimlendiremiyoruz. Ancak aynı dosyayı kendi ev dizininize kopyaladığımızda durum değişecektir. Öncelikle kendi ev dizinizdeki izinlere bakalım.
Yeniden ".profile" dosyasını ev dizinine kopyalamayı deneyelim.
Kendi ev dizinizde dosya üzerinde daha önce denediğimiz ama başarılı olamayan işlemleri gerçekleştirebiliyoruz. Ancak dosyayı kendi evi dizinimize taşımak istersek taşıma işlemi başarısız olacaktır. Bu durumu tam olarak anlayabilmek için kopyalama, taşıma işlemlerinin nasıl gerçekleştiğini anlamak gereklidir. UNIX sistemlerde herşey bir dosyadır. Normal dosyalar
içerisinde veri barınıdran metin dosyalarıdır. Örneğin .profile ve .cshrc gibi. Dizinlerde aslında bir dosyadır. İçeriğinde, dizin içerisinde yer alan diğer dosyaların listesi yer alır. Bir dosyayı bir dizinden bir diğerine taşıdığınızda aslında listedeki dosyanın adını bir diğer dosyadaki listeye eklenmektesinizdir. Eğer o dizinde yazma izininiz yoksa dizinden istediğiniz dosyayı bir diğer dizine aktarmanız söz konusu değildir. yani dosyadan söz konusu dosyanın adını silmek, eklemek vb işlemleri yapamazsınız. Bir dosyayı bir başka dizine kopyamak içinde kopyalayacağınız dizinde yazma iznine sahip olmanız zorunludur. .profile dosyasını
ev dizinie taşımak istediğinizde / dizininde yazma izniniz olmadığı için .profile dosyasını ev dizinine taşımanız söz konusu değildir. Öte yandan ev dizininde yazma hakkınız olduğu için kopyalama işlemi gerçekleştirebilirsiniz. Bundan ötürü dosyayı kendi ev dizininize kopyalabilirsiniz.
Bunlardan başka UNIX'te ön tanımlı izinlere ince ayar yapmamıza olanak veren üç farklı özellik bulunmaktadır. Bunlardan ilki SUID-set user id bit. Çalıştırılabilir dosyaların olduğu dizinlerde "ls -l" komutunu çalıştırdığınızda dosya sahibinin çalıştırma izni (x) yerinde (s) veya (S) atanmış olduğunu görebilirsiniz.
SUID bit atanan dosyalarda geçici olarak herhangi bir kullanıcı root yetkileri ile dosyayı çalıştırabilir. Örneğin kullanıcı şifrelerinin yer aldığı veritabanındaki bilgi sadece root kullanıcısı tarafından değiştirilebilir. Öte yandan bir kullanıcı kendi kullanıcı şifresini passwd(1) kullanarakdeğiştirebilir. passwd(1) 'a ls(1) ile bakacak olursanız SUID bit atamasını görürsünüz.
passwd(1) dosyasında SUID bit atanmış olduğu için kullanıcı şifresini düzenlemek istediğinde varitabanının düzenlenebilmesi için geçici olarak root yetkileri ile işlem yapılacaktır. Eğer SUID biti s olarak tanımlanmış ise bu durumda dosyanın sahibi çalıştırma iznine sahiptir ama SUID biti S olarak atanmış ise bu durumda dosyanın sahibinin çalıştırma izni yoktur.
İkinci özellik SGID-set grup id bit. SUID bit benzemekle birlikte geçici olarak grup üyeliğini değiştirir. Genellikle bir programı çalıştırmak için kullanılır. SGID bit atanıp atanmadığını grup izinleri kısmında s veya S tanımı bulunup bulunmadığına bakılarak anlaşılabilir. SGID bit atamasına örnek olarak netstat(1) verilebilir.
netstat(1) için SGID bit atamasında S yerine s kullanıldığı için çalıştırma izini de verilmiş olmaktadır.
Üçüncü özellik ise dizinlere atanan stcky bit Bu özellik bir dizinin birden çok kullanıcı tarafından kullanılması durumunda daha da önem kazanmaktadır. Kendi ev dizinizdeki izinleri göz önüne aldığınızda dizinin sahibinin tüm yetkilere sahip olduğunu ama üyesi olduğu grup ve diğerlerinin ise izinlerinin kısıtlanmış olduğunu görebilirsiniz. Bu durum dizinin sahibi için uygun olurken, aynı dizine başka kullanıcıların erişebildiği, aynı anda birden çok kullanıcı tarafından erişilebilen, dosya oluşturulabilen ve düzenlenebilen hatta silenebilen bir dizinde sakıncalar yaratabilecektir. Hele hele UNIX'de bir dosyayı sildiyseniz ebediyen silmiş olduğunuzu düşünürseniz... Bu sakıncalar sticky bit ile ortadan kaldırılmaktadır.
Bir dizine stciky bit atandığında kullanıcılar dizindeki dodyaları düzenleyebilir, değiştirebilir ve sadece kendi oluşturdukları dosyaları silebilirler. Sticky bit atamasına verilebilecek olan en iyi örnek /tmp dizinidir.
UNIX sisteminizdeki izinler üç temel izin ile ek üç özelliğin birleşimi ile düzenlenir. Bu aynı zamanda diğer UNIX türevi işletim sistemleri için de geçerlidir.
İzinlerin chmod(1) ile Düzenlenmesi
UNIX sistemlerde izinler geliştirici ekip tarafından belirlenip uygulanır. Dolayısıyla da bu izinleri değiştirmek veya ince ayar yapmanıza gerek yoktur. Ancka ve ancak sistem yöneticisi veya güvenlik uzmanı iseniz ve bu izinleri düzenlemek için çok çok önemli bir gerekçeniz varsa düzenlemenizde sakınca yoktur, aksi halde olduğu gibi bırakmanızda yarar vardır.
Dosyalar üzerindeki izinleri düzenlemek için chmod(1) kullanılır. chmod(1) iki farklı kipte çalışır: Sayısal ve Sembolik
Sayısal kipte çalıştırıldığında chmod(1) izinleri düzenlemek için sayısal değerlerden, sembolik kipte ise harflerden yararlanılır. Sayısal kipte kullanıldığında dört basamaklı sayısal değerler izinleri düzenlemek için kullanılır.
İzinleri düzenlemek için r, w, x, s veya t harflerine karşılık olarak 4, 2 ve 1
sayıları aynı sıra ile kullanılır.
İlk sıradaki sayılar SUID,SGID ve sticky bit tanımlar. SUID=4,SGID=2 ve sticky bit=1 kullanılır. Bunları izleyen sayılar ise oku=4, yaz=2 ve çalıştır=1 olamak üzere sırası ile dosyanın sahibi, grubu ve diğerleri için olan izinleri tanımlar. Eğer bir izini tanımlamayacaksanız sayısal olarak 0 tanımlanmalıdır. ls(1) çıktısında görüldüğü gibi "-" tanımlanmamalıdır.
Bir dosya üzerinde SUID bit ataması ile sahibine rwx, grubu ve diğerlerine ise rx izini vermek istersek sayısal değerler aşağıda görüldüğü gibi olacaktır.
chmod(1) ile bu sayısal değerlerin girilebilmesi için sayıların toplanması gereklidir.
chmod(1) ile dosyanın izinlerini aşağıdaki komutu kullanarak tanımlayabiliriz.
chmod 4755 dosya_adı
Bunu kendi ev dizinizde oluşturacağınız bir dosya deneyip görebilirsiniz.
Bir dosya oluşturulduğunda dosyanın birincil grubu her zaman için o dosyayı oluşturan kullanıcının birincil grubu ile aynıdır. Bu özellik, dosyanın izinlerinin sadece dosyayı oluşturan kullanıcı ve root dışında başka bir kullanıcı tarafından değiştirilemeyeceği
için kritik öneme sahiptir.
Şimdi yaptığımız işlemi tersetn yaparak dosya izinlerini ilk duruma getirelim. Dosyanın ilk izinleri aşağıdaki gibiydi.
Dosyanın ilk durumunda s, S, t, or T yer almadığı için ilk değer sıfır olacaktır. Dosyanın sahibinin okuma, yazma, grubunun ve diğerlerinin ise sadece okuma izinleri bulunmaktadır. Bu durumda sayısal karşılıkları aşağıdaki gibi hesaplanabilir.
chmod(1) ile dosya izinleri ilk hale getirilebilir.
Yukarıdaki işlemi chmod(1) sembolik kipte çalıştırarak da gerçekleştirebiliriz. Sembolik kipte düzenleme yapmak sayısal kip ile karşılaştırıldığında biraz daha uzundur. Sembolik kipte çalışırken chmod izinleri sahip, grup, diğerleri ve hepsi için olmak üzere bir operatör ile birlkikte tanımlanmaktadır.
ve operator aşağıdakilerden birisi olabilir.
Sayısal kip için kullandığımız örneği sembolik kipte yeniden kullanalım. Dosyanın izinlerini aşağıdaki gibi yapmak için:
Bu komut istediğimiz sonucu vermedi ama oldukça yaklaştı. chmod(1) a+sx yazdığımız için SUID ve GUID bitlerini de atamış oluyoruz. Aynı komutu aşağıda görüldüğü gibi yeniden çalıştırıyoruz.
Yukarıdaki komutlar ile SUID bit atamasını gerçekleştirmiş olsanız da dosyanın sahibi hariç olmak üzere herkese çalıştırma izni verdik. Ancak halen istediğimiz gibi omadığı için bir defa daha işlem yapmamız gerekecek.
Sembolik kipte yaptığımız işlem sayısal kipteki ile aynı sonucu vermiş oldu. Yukarıdaki örneklerde gördüğünüz gibi izinleri chmod(1) ile değiştiriyorsanız ls(1) ile istediğiniz gibi olup olmadığını kontrol etmeniz yerinde olacaktır.
Bir kullanıcının bir dosya üzerindeki yetkileri hem dosyanın hem de dizinin izinlerine bağlı olarak belirlenir. Ev dizininizde bir dizin oluşturup içerisinde yaratacağınız bir dosya ile bunu görebilirsiniz.
Yukarıdaki çıktıya bakacak olursanız, deneme dizininde değişiklik yapılan zamanının dizinin yaratıldığı zaman değil, test dosyasının oluuşturulduğu zamana işaret ettiğini görebilirsiniz. UNIX sistemlerde dizinlerde dosya olduğu için deneme dizinin üzerinde değişiklik yapıldığı tarih ile test dosyasının oluşturulduğu tarih aynı olmaktadır. Bu dizinde izinlerin kullanıcıları nasıl sınırlandırdığını görmek için farklı bir kullanıcı hesabı ile -root olmamak koşulu ile- sisteme yeniden giriş yapmak yeterli olacaktır. Bunun için fahri adlı kullanıcı hesabını kullanacağım.
Dizinin izinlerine bakıldığında herkes için okuma izini tanımlı olduğu görülmektedir. Dolayısıyla da ls(1) ile dizin içeriğini görüntülenebilir. Ayrıca test dosyasının içeriğini görüntülenebilir. Dosyanın görüntülenmesi sırasında da bir hata mesajı döndürülmez.
fahri kullanıcsının dizine yazma izini bulunmadığı için dosya/dizin oluşturması söz konusu değildir.
Görüldüğü üzere /usr/home/goksin/deneme dizininde fahri kullanıcısının yazma izni bulunmamaktadır. Dolayısıyla da bu dizinde kendisine ait olan dosyalar/dizinler hariç olmak üzere diğer dosyalar/dizinler üzerinde yazma işlemleri yapamaz. Bunu yapabilmesi için ise dizine stickybit ataması yaparak fahri kullanıcısının /usr/home/goksin/deneme dizininde yazma işlemleri yapmasını sağlayabiliriz. Stickybit atamasını da sadece dizinin sahibi olan kullanıcı yapabilir. Sticky bit ataması yapmak yerine bir diğer çözüm ise gruplara okuma/yazma ve çalıştırma izinleri vermektir. Bu durumda ise kullanıcının söz konusu grubun üyesi olması gerekir.
Bir kullanıcının hangi grupların üyesi olduğunu groups(1) ile öğrenebilirsiniz. "groups kullanıcı_adı" olarak vereceğiniz komut ile aradığınız kullanıcı adının hangi grupların üyesi olduğunu öğrenebilirsiniz.
Farklı gruplara üye olan iki kullanıcı hesabının aynı dizini paylaşmasını istiyorsam dizin izinlerini herkese izin verecek şekilde düzenleyebilirim. Bu uygulama izini sistemde tanımlı olan tüm kullanıcılara vermek olacaktır. Diğer çözüm ise iki kullanıcı hesabını aynı grubun üyesi yapıp grub izini düzenlemek olacaktır. Bu durumda ise dosyanın birincil grubunu chown(1) ile değiştirmem gerekecektir. Bunu yapmak için root yetkilerini kullanarak ortak adlı bir grup oluşturup iki kullanıcıyı da bu grubun üyesi yapacağım. Bu işlemi gerçekleştirmek için pw(8) yararlanacağım.
pw(8) ile ortak grubu oluşturduktan sonra goksin ve fahri kullanıcılarını ortak grubuna üye yaptım. Grubu ve kullanıcıları da kontrol ettikten sonra yapılması gereken /usr/home/goksin/deneme dizininin birincil grubunu değiştirip, goksin ve fahri kullanıcısının dizin üserrindeki izinlerinin grup üyeliği ile istediğimiz şekle dönüştürmüş olacağım. Bunun için goksin kullanıcısının dizinin sahibi olması nedeniyle işlem yapması yeterli olacaktır, dolayısıyla da root yetkilerini kullanmamıza gerek yoktur. chown(8) ile dizinin birincil grubunu değiştirmek için işlem yapacak olan kullanıcının sisteme giriş yapması gereklidir. Yeniden giriş yapılmadan yeni grup düzenlemeleri geçerli olmayacaktır.
chown(8) "kullanıcı_adı:birincil_grup" notasyonu ile kullanıcı ve grup düzenlemleri yapmaktadır. kullanıcı adını kullanmadan sadece birincil grubu değiştirmek için :birincil_grup olarak tanımlama yapılması yeterlidir.
Bu işlemden sonra grup izinlerini değiştirmemiz durumunda sadece ortak grubunun üyesi olan goksin ve fahri kullanıcıları yeni düzenlemeye tabi olacaktır.
Sisteminizin / dizininde "ls -la" / komutunu çalıştıracak olursanız aşağıdakine benzer bir Çıktı göreceksiniz.
[goksin@daemon /usr/home/goksin]$ ls -al / total 69 drwxr-xr-x 21 root wheel 512 31 Oca 14:34 . drwxr-xr-x 21 root wheel 512 31 Oca 14:34 .. -rw-r--r-- 2 root wheel 798 19 Tem 2010 .cshrc -rw-r--r-- 2 root wheel 265 19 Tem 2010 .profile drwxrwxr-x 2 root operator 512 25 Ağu 09:03 .snap -r--r--r-- 1 root wheel 6206 19 Tem 2010 COPYRIGHT drwxr-xr-x 2 root wheel 1024 2 Ara 16:50 bin drwxr-xr-x 9 root wheel 1024 2 Ara 16:52 boot drwxr-xr-x 2 root wheel 512 25 Ağu 09:03 cdrom drwxr-xr-x 2 root wheel 512 25 Ağu 09:03 cdrom1 lrwxr-xr-x 1 root wheel 10 25 Ağu 09:11 compat -> usr/compat dr-xr-xr-x 7 root wheel 512 31 Oca 13:21 devdev drwxr-xr-x 2 root wheel 512 25 Ağu 09:04 distdist -rw------- 1 root wheel 4096 29 Oca 05:00 entropy drwxr-xr-x 20 root wheel 2560 31 Oca 14:00 etc lrwxr-xr-x 1 root wheel 8 25 Ağu 09:15 home -> usr/home drwxr-xr-x 3 root wheel 1536 2 Ara 16:51 lib drwxr-xr-x 2 root wheel 512 2 Ara 16:50 libexec drwxr-xr-x 2 root wheel 512 19 Tem 2010 media drwxr-xr-x 2 root wheel 512 19 Tem 2010 mnt dr-xr-xr-x 2 root wheel 512 19 Tem 2010 proc drwxr-xr-x 2 root wheel 2560 2 Ara 16:51 rescue drwxr-xr-x 13 root wheel 1024 28 Oca 18:12 rootroot drwxr-xr-x 2 root wheel 2560 2 Ara 16:52 sbin lrwxr-xr-x 1 root wheel 11 2 Ara 16:50 sys -> usr/src/sys drwxrwxrwt 14 root wheel 6656 31 Oca 14:04 tmp drwxr-xr-x 17 root wheel 512 25 Ağu 14:53 usr drwxr-xr-x 25 root wheel 512 31 Oca 13:21 var [goksin@daemon /usr/home/goksin]$
Bir UNIX sistemde her şey dosyadır. Bir diğer deyişle, klavye, monitör, sabit disk vb hepsi birer dosyadır. Dolayısıla da ls -al komutunun çıktısındaki ilk harf söz konu dosyanın türünü belirtir. Örneğin
drwxr-xr-x 2 root wheel 1024 2 Ara 16:50 bin
bin dosyasının bir dizin olduğunu gösterir. Benzer olarak
-rw-r--r-- 2 root wheel 798 19 Tem 2010 .cshrc -rw-r--r-- 2 root wheel 265 19 Tem 2010 .profile
satırları ise iki dosyayı göstermektedir. Sembolik bağlar ise aşağıdaki iki örnekte görüldüğü gibi "l" ile başlar ve aynı zamanda işaret ettikleri dosyalar ve dizinlerde tanımlanır.
lrwxr-xr-x 1 root wheel 10 25 Ağu 09:11 compat -> usr/compat lrwxr-xr-x 1 root wheel 8 25 Ağu 09:15 home -> usr/home lrwxr-xr-x 1 root wheel 11 2 Ara 16:50 sys -> usr/src/sys
İlk harfi izleyen alanda yer alan dokuz karakter ise dosyanın izinlerini tanımlar. İzinler her zaman oku,yaz, çalıştır sırası ile tanımlanır. Söz konusu dosyada tanımlı olan izin ilgili harf
ile "r,w,x" ile gösterilir. Tanımlanmamış izin ise "-" ile gösterilir. Bir dosya için tanımlı olan izinler dosyanın sahibi, grubu ve diğerleri için olmak üzere üç defa tanımlanır.
-rw-r--r-- 2 root wheel 798 19 Tem 2010 .cshrc -rw-r--r-- 2 root wheel 265 19 Tem 2010 .profile
.cshrc ve profile birer dosya oldukları için "-" ile başlamaktadır. Her iki dosyanın sahibi root kullanıcısıdır. Dosya üzerinde okuma ve yazma hakına sahiptir ama dosya üzerinde çalıştırma izni yoktur. Dosyanın birincil grubu -wheel- dosya üzerinde okuma hakkına sahiptir ama yazma ve çalıştırma izni yoktur. Diğerleri de dosyayı okuyabilir ama dosyaya yazmaz ve dosyayı çalıştıramazlar.
Dosyanın sahibi ve birincil grubu izinlerin ardından gösterilir. Bunları ise dosyanın byte cinsinden büyüklüğü ile dosya üzerinde yapılan son düzenlemenin tarihi yer alır.En son olarak da dosyanın adı gösterilir.
Bir kullanıcnın bir dosya ile ne yapabileceği dosyanın izinlerine ve dosyanın da içinde bulunduğu dizinin izinlerine göre şekillenir. Bunun istisnası ise root kullanıcıdır. root kullanıcısı dosya ve dizinlerdeki izinlerden bağışıktır.
Eğer bir dosya üzerinde okuma (r) izni verilmiş ise söz konusu dosyanın içeriği cat veya bir metin düzenleyicisi ile görüntülenebilir. Benzer olarak bir dizine okuma izini verildiğinde içerisinde yer alan tüm dizinler ve dosyalar ls komutu ile listelenebilir.
Eğer yazma (w) izni verilmiş ise dosyanın içeriği bir metin düzenleyicisi ile değiştirilebilir. Bir dizin üzerinde yazma izini tanımlandığında ise o dizin içzerisinde alt dizinler ve dosyalar üzerinde yazma hakkı verilmiştir. Bu durumda dosya/dizin oluşturulabilir ve silinebilir.
Eğer çalıştırma (x) izni tanımlanırsa bir program ile bir dosya kabuk programı olarak çalıştırabilir. Eğer dizine çalıştırma izini verilirse bu durumda o dizine cd komutu ile geçebilirsiniz.
"ls -la" komutunun çıktısına yeniden dönelim.
drwxr-xr-x 21 root wheel 512 31 Oca 14:34 . drwxr-xr-x 21 root wheel 512 31 Oca 14:34 .. -rw-r--r-- 2 root wheel 798 19 Tem 2010 .cshrc -rw-r--r-- 2 root wheel 265 19 Tem 2010 .profile
"." her zaman için bulunduğunuz dizini ve ".." ise bir üst dizini belirtir. "/" dizini söz konusu olduğunda hem bir üst dizin hem de bulunduğunuz dizin aynıdır. Ancak bu durum / altında yer alan diğer alt dizinlerde farklılık gösterecektir. :)
.cshrc ve .profile dosyaları sistemde yer alana iki farklı kabuk ortamının yapılandırma dosyalarıdır. Bu dosyalar üzerinde sahibinin okuma ve yazma izni bulunurken grubu ve diğerleri için sadece okuma izni tanımlanmıştır. O halde bu dosyalar üzerinde bir işlem yapmak isterseniz ne olur?
Dosyaları bir metin düzenleyicisi, vi, vim veya cat ile açıp okuyabiliriz. Üzerinde düzenleme yapabilirsiniz ama yaptığınız değişiklikleri kayıt edemezsiniz.
[goksin@daemon /usr/home/goksin]$ cd /
[goksin@daemon /]$ cp .profile profile_test
cp: profile_test: Permission denied
[goksin@daemon /]$ mv .profile profile_test
mv: rename .profile to profile_test: Permission denied
[goksin@daemon /]$ rm .cshrc
override rw-r--r-- root/wheel for .cshrc? y
rm: .cshrc: Permission denied
[goksin@daemon /]$
/ dizinine geçiş yapabiliyoruz ama dosyayı kopyalamak, silmek veya yeniden isimlendiremiyoruz. Ancak aynı dosyayı kendi ev dizininize kopyaladığımızda durum değişecektir. Öncelikle kendi ev dizinizdeki izinlere bakalım.
[goksin@daemon /usr/home/goksin]$ ls -al total 67182 drwxr-xr-x 46 goksin goksin 3584 1 Şub 15:25 . drwxr-xr-x 3 root wheel 512 21 Eyl 18:11 ..
Yeniden ".profile" dosyasını ev dizinine kopyalamayı deneyelim.
[goksin@daemon /usr/home/goksin]$ cp /.profile ~ [goksin@daemon /usr/home/goksin]$ ls -l .profile -rw-r--r-- 2 goksin goksin 265 19 Tem 2010 .profile [goksin@daemon /usr/home/goksin]$ mv .profile profile_test [goksin@daemon /usr/home/goksin]$ ls -l profile* -rw-r--r-- 2 goksin goksin 265 19 Tem 2010 profile_test [goksin@daemon /usr/home/goksin]$
Kendi ev dizinizde dosya üzerinde daha önce denediğimiz ama başarılı olamayan işlemleri gerçekleştirebiliyoruz. Ancak dosyayı kendi evi dizinimize taşımak istersek taşıma işlemi başarısız olacaktır. Bu durumu tam olarak anlayabilmek için kopyalama, taşıma işlemlerinin nasıl gerçekleştiğini anlamak gereklidir. UNIX sistemlerde herşey bir dosyadır. Normal dosyalar
içerisinde veri barınıdran metin dosyalarıdır. Örneğin .profile ve .cshrc gibi. Dizinlerde aslında bir dosyadır. İçeriğinde, dizin içerisinde yer alan diğer dosyaların listesi yer alır. Bir dosyayı bir dizinden bir diğerine taşıdığınızda aslında listedeki dosyanın adını bir diğer dosyadaki listeye eklenmektesinizdir. Eğer o dizinde yazma izininiz yoksa dizinden istediğiniz dosyayı bir diğer dizine aktarmanız söz konusu değildir. yani dosyadan söz konusu dosyanın adını silmek, eklemek vb işlemleri yapamazsınız. Bir dosyayı bir başka dizine kopyamak içinde kopyalayacağınız dizinde yazma iznine sahip olmanız zorunludur. .profile dosyasını
ev dizinie taşımak istediğinizde / dizininde yazma izniniz olmadığı için .profile dosyasını ev dizinine taşımanız söz konusu değildir. Öte yandan ev dizininde yazma hakkınız olduğu için kopyalama işlemi gerçekleştirebilirsiniz. Bundan ötürü dosyayı kendi ev dizininize kopyalabilirsiniz.
Bunlardan başka UNIX'te ön tanımlı izinlere ince ayar yapmamıza olanak veren üç farklı özellik bulunmaktadır. Bunlardan ilki SUID-set user id bit. Çalıştırılabilir dosyaların olduğu dizinlerde "ls -l" komutunu çalıştırdığınızda dosya sahibinin çalıştırma izni (x) yerinde (s) veya (S) atanmış olduğunu görebilirsiniz.
SUID bit atanan dosyalarda geçici olarak herhangi bir kullanıcı root yetkileri ile dosyayı çalıştırabilir. Örneğin kullanıcı şifrelerinin yer aldığı veritabanındaki bilgi sadece root kullanıcısı tarafından değiştirilebilir. Öte yandan bir kullanıcı kendi kullanıcı şifresini passwd(1) kullanarakdeğiştirebilir. passwd(1) 'a ls(1) ile bakacak olursanız SUID bit atamasını görürsünüz.
[goksin@daemon /usr/home/goksin]$ whereis -b passwd
passwd: /usr/bin/passwd
[goksin@daemon /usr/home/goksin]$ ls -l /usr/bin/passwd
-r-sr-xr-x 2 root wheel 6160 2 Ara 16:52 /usr/bin/passwd
[goksin@daemon /usr/home/goksin]$
passwd(1) dosyasında SUID bit atanmış olduğu için kullanıcı şifresini düzenlemek istediğinde varitabanının düzenlenebilmesi için geçici olarak root yetkileri ile işlem yapılacaktır. Eğer SUID biti s olarak tanımlanmış ise bu durumda dosyanın sahibi çalıştırma iznine sahiptir ama SUID biti S olarak atanmış ise bu durumda dosyanın sahibinin çalıştırma izni yoktur.
İkinci özellik SGID-set grup id bit. SUID bit benzemekle birlikte geçici olarak grup üyeliğini değiştirir. Genellikle bir programı çalıştırmak için kullanılır. SGID bit atanıp atanmadığını grup izinleri kısmında s veya S tanımı bulunup bulunmadığına bakılarak anlaşılabilir. SGID bit atamasına örnek olarak netstat(1) verilebilir.
[goksin@daemon /usr/home/goksin]$ ls -l /usr/bin/netstat
-r-xr-sr-x 1 root kmem 150316 2 Ara 16:52 /usr/bin/netstat
[goksin@daemon /usr/home/goksin]$
netstat(1) için SGID bit atamasında S yerine s kullanıldığı için çalıştırma izini de verilmiş olmaktadır.
Üçüncü özellik ise dizinlere atanan stcky bit Bu özellik bir dizinin birden çok kullanıcı tarafından kullanılması durumunda daha da önem kazanmaktadır. Kendi ev dizinizdeki izinleri göz önüne aldığınızda dizinin sahibinin tüm yetkilere sahip olduğunu ama üyesi olduğu grup ve diğerlerinin ise izinlerinin kısıtlanmış olduğunu görebilirsiniz. Bu durum dizinin sahibi için uygun olurken, aynı dizine başka kullanıcıların erişebildiği, aynı anda birden çok kullanıcı tarafından erişilebilen, dosya oluşturulabilen ve düzenlenebilen hatta silenebilen bir dizinde sakıncalar yaratabilecektir. Hele hele UNIX'de bir dosyayı sildiyseniz ebediyen silmiş olduğunuzu düşünürseniz... Bu sakıncalar sticky bit ile ortadan kaldırılmaktadır.
Bir dizine stciky bit atandığında kullanıcılar dizindeki dodyaları düzenleyebilir, değiştirebilir ve sadece kendi oluşturdukları dosyaları silebilirler. Sticky bit atamasına verilebilecek olan en iyi örnek /tmp dizinidir.
[goksin@daemon /usr/home/goksin]$ ls -al / total 69 drwxr-xr-x 21 root wheel 512 31 Oca 14:34 . drwxr-xr-x 21 root wheel 512 31 Oca 14:34 .. -rw-r--r-- 2 root wheel 798 19 Tem 2010 .cshrc -rw-r--r-- 2 root wheel 265 19 Tem 2010 .profile drwxrwxr-x 2 root operator 512 25 Ağu 09:03 .snap -r--r--r-- 1 root wheel 6206 19 Tem 2010 COPYRIGHT drwxr-xr-x 2 root wheel 1024 2 Ara 16:50 bin drwxr-xr-x 9 root wheel 1024 2 Ara 16:52 boot drwxr-xr-x 2 root wheel 512 25 Ağu 09:03 cdrom drwxr-xr-x 2 root wheel 512 25 Ağu 09:03 cdrom1 lrwxr-xr-x 1 root wheel 10 25 Ağu 09:11 compat -> usr/compat dr-xr-xr-x 7 root wheel 512 31 Oca 13:21 dev drwxr-xr-x 2 root wheel 512 25 Ağu 09:04 dist -rw------- 1 root wheel 4096 29 Oca 05:00 entropy drwxr-xr-x 20 root wheel 2560 31 Oca 14:00 etc lrwxr-xr-x 1 root wheel 8 25 Ağu 09:15 home -> usr/home drwxr-xr-x 3 root wheel 1536 2 Ara 16:51 lib drwxr-xr-x 2 root wheel 512 2 Ara 16:50 libexec drwxr-xr-x 2 root wheel 512 19 Tem 2010 media drwxr-xr-x 2 root wheel 512 19 Tem 2010 mnt dr-xr-xr-x 2 root wheel 512 19 Tem 2010 proc drwxr-xr-x 2 root wheel 2560 2 Ara 16:51 rescue drwxr-xr-x 13 root wheel 1024 28 Oca 18:12 root drwxr-xr-x 2 root wheel 2560 2 Ara 16:52 sbin lrwxr-xr-x 1 root wheel 11 2 Ara 16:50 sys -> usr/src/sys drwxrwxrwt 14 root wheel 6656 31 Oca 14:04 tmp drwxr-xr-x 17 root wheel 512 25 Ağu 14:53 usr drwxr-xr-x 25 root wheel 512 31 Oca 13:21 var [goksin@daemon /usr/home/goksin]$
UNIX sisteminizdeki izinler üç temel izin ile ek üç özelliğin birleşimi ile düzenlenir. Bu aynı zamanda diğer UNIX türevi işletim sistemleri için de geçerlidir.
İzinlerin chmod(1) ile Düzenlenmesi
UNIX sistemlerde izinler geliştirici ekip tarafından belirlenip uygulanır. Dolayısıyla da bu izinleri değiştirmek veya ince ayar yapmanıza gerek yoktur. Ancka ve ancak sistem yöneticisi veya güvenlik uzmanı iseniz ve bu izinleri düzenlemek için çok çok önemli bir gerekçeniz varsa düzenlemenizde sakınca yoktur, aksi halde olduğu gibi bırakmanızda yarar vardır.
Dosyalar üzerindeki izinleri düzenlemek için chmod(1) kullanılır. chmod(1) iki farklı kipte çalışır: Sayısal ve Sembolik
Sayısal kipte çalıştırıldığında chmod(1) izinleri düzenlemek için sayısal değerlerden, sembolik kipte ise harflerden yararlanılır. Sayısal kipte kullanıldığında dört basamaklı sayısal değerler izinleri düzenlemek için kullanılır.
- Özel izinler (SUID, SGID ve dizinler için sticky bit)
- Dosyanın sahibi için izinler (rwx)
- Dosyanın üyesi olduğu birincil grup için izinler(rwx)
- Diğerleri için izinler (rwx)
İzinleri düzenlemek için r, w, x, s veya t harflerine karşılık olarak 4, 2 ve 1
sayıları aynı sıra ile kullanılır.
(s/t) r w x = 421 421 421 (421)
İlk sıradaki sayılar SUID,SGID ve sticky bit tanımlar. SUID=4,SGID=2 ve sticky bit=1 kullanılır. Bunları izleyen sayılar ise oku=4, yaz=2 ve çalıştır=1 olamak üzere sırası ile dosyanın sahibi, grubu ve diğerleri için olan izinleri tanımlar. Eğer bir izini tanımlamayacaksanız sayısal olarak 0 tanımlanmalıdır. ls(1) çıktısında görüldüğü gibi "-" tanımlanmamalıdır.
Bir dosya üzerinde SUID bit ataması ile sahibine rwx, grubu ve diğerlerine ise rx izini vermek istersek sayısal değerler aşağıda görüldüğü gibi olacaktır.
400 421 401 401
chmod(1) ile bu sayısal değerlerin girilebilmesi için sayıların toplanması gereklidir.
400 = 4+0+0 = 4 421 = 4+2+1 = 7 401 = 4+0+1 = 5 401 = 4+0+1 = 5
chmod(1) ile dosyanın izinlerini aşağıdaki komutu kullanarak tanımlayabiliriz.
chmod 4755 dosya_adı
Bunu kendi ev dizinizde oluşturacağınız bir dosya deneyip görebilirsiniz.
[goksin@daemon /usr/home/goksin]$ touch test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rw-r--r-- 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$ chmod 4755 test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rwsr-xr-x 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$
Bir dosya oluşturulduğunda dosyanın birincil grubu her zaman için o dosyayı oluşturan kullanıcının birincil grubu ile aynıdır. Bu özellik, dosyanın izinlerinin sadece dosyayı oluşturan kullanıcı ve root dışında başka bir kullanıcı tarafından değiştirilemeyeceği
için kritik öneme sahiptir.
Şimdi yaptığımız işlemi tersetn yaparak dosya izinlerini ilk duruma getirelim. Dosyanın ilk izinleri aşağıdaki gibiydi.
-rw-r--r-- 1 goksin goksin 0 2 Şub 14:44 test
Dosyanın ilk durumunda s, S, t, or T yer almadığı için ilk değer sıfır olacaktır. Dosyanın sahibinin okuma, yazma, grubunun ve diğerlerinin ise sadece okuma izinleri bulunmaktadır. Bu durumda sayısal karşılıkları aşağıdaki gibi hesaplanabilir.
000 = 0+0+0 = 0 420 = 4+2+0 = 6 400 = 4+0+0 = 4 400 = 4+0+0 = 4
chmod(1) ile dosya izinleri ilk hale getirilebilir.
[goksin@daemon /usr/home/goksin]$ chmod 0644 test [goksin@daemon /usr/home/goksin]$ ls -la test -rw-r--r-- 1 goksin goksin 0 2 Şub 14:44 test [goksin@daemon /usr/home/goksin]$
Yukarıdaki işlemi chmod(1) sembolik kipte çalıştırarak da gerçekleştirebiliriz. Sembolik kipte düzenleme yapmak sayısal kip ile karşılaştırıldığında biraz daha uzundur. Sembolik kipte çalışırken chmod izinleri sahip, grup, diğerleri ve hepsi için olmak üzere bir operatör ile birlkikte tanımlanmaktadır.
- u = kullanıc/sahibi
- g = grup
- o = diğerleri
- a = herkes yada ugo
ve operator aşağıdakilerden birisi olabilir.
- + izini ver
- - izini iptal et
- = izini şuna eşitle
Sayısal kip için kullandığımız örneği sembolik kipte yeniden kullanalım. Dosyanın izinlerini aşağıdaki gibi yapmak için:
-rwsr-xr-x 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rw-r--r-- 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$ chmod a+sx test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rwsr-sr-x 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$
Bu komut istediğimiz sonucu vermedi ama oldukça yaklaştı. chmod(1) a+sx yazdığımız için SUID ve GUID bitlerini de atamış oluyoruz. Aynı komutu aşağıda görüldüğü gibi yeniden çalıştırıyoruz.
[goksin@daemon /usr/home/goksin]$ rm test
[goksin@daemon /usr/home/goksin]$ chmod u+s test
[goksin@daemon /usr/home/goksin]$ chmod go+x test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rwSr-xr-x 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$
Yukarıdaki komutlar ile SUID bit atamasını gerçekleştirmiş olsanız da dosyanın sahibi hariç olmak üzere herkese çalıştırma izni verdik. Ancak halen istediğimiz gibi omadığı için bir defa daha işlem yapmamız gerekecek.
[goksin@daemon /usr/home/goksin]$ rm test
[goksin@daemon /usr/home/goksin]$ chmod u+sx,go+x test
[goksin@daemon /usr/home/goksin]$ ls -la test
-rwsr-xr-x 1 goksin goksin 0 2 Şub 14:44 test
[goksin@daemon /usr/home/goksin]$
Sembolik kipte yaptığımız işlem sayısal kipteki ile aynı sonucu vermiş oldu. Yukarıdaki örneklerde gördüğünüz gibi izinleri chmod(1) ile değiştiriyorsanız ls(1) ile istediğiniz gibi olup olmadığını kontrol etmeniz yerinde olacaktır.
Bir kullanıcının bir dosya üzerindeki yetkileri hem dosyanın hem de dizinin izinlerine bağlı olarak belirlenir. Ev dizininizde bir dizin oluşturup içerisinde yaratacağınız bir dosya ile bunu görebilirsiniz.
[goksin@daemon /usr/home/goksin]$ mkdir deneme [goksin@daemon /usr/home/goksin]$ cd deneme [goksin@daemon /usr/home/goksin/deneme]$ touch test [goksin@daemon /usr/home/goksin/deneme]$ ls -la test total 6 drwxr-xr-x 2 goksin goksin 512 3 Şub 08:44 . drwxr-xr-x 47 goksin goksin 3584 3 Şub 08:44 .. -rw-r--r-- 1 goksin goksin 0 3 Şub 08:44 test [goksin@daemon /usr/home/goksin/deneme]$
Yukarıdaki çıktıya bakacak olursanız, deneme dizininde değişiklik yapılan zamanının dizinin yaratıldığı zaman değil, test dosyasının oluuşturulduğu zamana işaret ettiğini görebilirsiniz. UNIX sistemlerde dizinlerde dosya olduğu için deneme dizinin üzerinde değişiklik yapıldığı tarih ile test dosyasının oluşturulduğu tarih aynı olmaktadır. Bu dizinde izinlerin kullanıcıları nasıl sınırlandırdığını görmek için farklı bir kullanıcı hesabı ile -root olmamak koşulu ile- sisteme yeniden giriş yapmak yeterli olacaktır. Bunun için fahri adlı kullanıcı hesabını kullanacağım.
[goksin@daemon /usr/home/goksin]$ exit login: fahri password: fahri@/usr/home/fahri$ cd /usr/home/goksin fahri@/usr/home/goksin/deneme$ ls -al total 6 drwxr-xr-x 2 goksin goksin 512 3 Şub 08:44 . drwxr-xr-x 47 goksin goksin 3584 3 Şub 08:44 .. -rw-r--r-- 1 goksin goksin 0 3 Şub 08:44 test fahri@/usr/home/goksin/deneme]$
Dizinin izinlerine bakıldığında herkes için okuma izini tanımlı olduğu görülmektedir. Dolayısıyla da ls(1) ile dizin içeriğini görüntülenebilir. Ayrıca test dosyasının içeriğini görüntülenebilir. Dosyanın görüntülenmesi sırasında da bir hata mesajı döndürülmez.
fahri@/usr/home/goksin/deneme]$ cat test fahri@/usr/home/goksin/deneme]$
fahri kullanıcsının dizine yazma izini bulunmadığı için dosya/dizin oluşturması söz konusu değildir.
fahri@/usr/home/goksin/deneme]$ touch fahri.txt touch: fahri: Permission denied fahri@/usr/home/goksin/deneme]$ rm test override rw-r--r-- goksin/goksin for test? y rm: test: Permission denied fahri@/usr/home/goksin/deneme]$ mv test /usr/home/fahri mv: rename test to /usr/home/fahri/test: Permission denied fahri@/usr/home/goksin/deneme]$ cp test /usr/home/fahri/test fahri@/usr/home/goksin/deneme]$
Görüldüğü üzere /usr/home/goksin/deneme dizininde fahri kullanıcısının yazma izni bulunmamaktadır. Dolayısıyla da bu dizinde kendisine ait olan dosyalar/dizinler hariç olmak üzere diğer dosyalar/dizinler üzerinde yazma işlemleri yapamaz. Bunu yapabilmesi için ise dizine stickybit ataması yaparak fahri kullanıcısının /usr/home/goksin/deneme dizininde yazma işlemleri yapmasını sağlayabiliriz. Stickybit atamasını da sadece dizinin sahibi olan kullanıcı yapabilir. Sticky bit ataması yapmak yerine bir diğer çözüm ise gruplara okuma/yazma ve çalıştırma izinleri vermektir. Bu durumda ise kullanıcının söz konusu grubun üyesi olması gerekir.
Bir kullanıcının hangi grupların üyesi olduğunu groups(1) ile öğrenebilirsiniz. "groups kullanıcı_adı" olarak vereceğiniz komut ile aradığınız kullanıcı adının hangi grupların üyesi olduğunu öğrenebilirsiniz.
[goksin@daemon /usr/home/goksin]$ groups goksin goksin wheel operator [goksin@daemon /usr/home/goksin]$ groups fahri fahri [goksin@daemon /usr/home/goksin]$
Farklı gruplara üye olan iki kullanıcı hesabının aynı dizini paylaşmasını istiyorsam dizin izinlerini herkese izin verecek şekilde düzenleyebilirim. Bu uygulama izini sistemde tanımlı olan tüm kullanıcılara vermek olacaktır. Diğer çözüm ise iki kullanıcı hesabını aynı grubun üyesi yapıp grub izini düzenlemek olacaktır. Bu durumda ise dosyanın birincil grubunu chown(1) ile değiştirmem gerekecektir. Bunu yapmak için root yetkilerini kullanarak ortak adlı bir grup oluşturup iki kullanıcıyı da bu grubun üyesi yapacağım. Bu işlemi gerçekleştirmek için pw(8) yararlanacağım.
daemon# pw group add ortak daemon# cat /etc/group | grep "ortak" ortak:*:1003: daemon# pw group mod ortak -M goksin,fahri daemon# cat /etc/group | grep "ortak" ortak:*:1003:goksin,fahri daemon# groups goksin goksin wheel operator ortak daemon# groups fahri fahri ortak daemon#
pw(8) ile ortak grubu oluşturduktan sonra goksin ve fahri kullanıcılarını ortak grubuna üye yaptım. Grubu ve kullanıcıları da kontrol ettikten sonra yapılması gereken /usr/home/goksin/deneme dizininin birincil grubunu değiştirip, goksin ve fahri kullanıcısının dizin üserrindeki izinlerinin grup üyeliği ile istediğimiz şekle dönüştürmüş olacağım. Bunun için goksin kullanıcısının dizinin sahibi olması nedeniyle işlem yapması yeterli olacaktır, dolayısıyla da root yetkilerini kullanmamıza gerek yoktur. chown(8) ile dizinin birincil grubunu değiştirmek için işlem yapacak olan kullanıcının sisteme giriş yapması gereklidir. Yeniden giriş yapılmadan yeni grup düzenlemeleri geçerli olmayacaktır.
chown(8) "kullanıcı_adı:birincil_grup" notasyonu ile kullanıcı ve grup düzenlemleri yapmaktadır. kullanıcı adını kullanmadan sadece birincil grubu değiştirmek için :birincil_grup olarak tanımlama yapılması yeterlidir.
daemon# exit login: goksin password: [goksin@daemon /usr/home/goksin]$ chown :ortak deneme [goksin@daemon /usr/home/goksin]$ ls -al deneme total 6 drwxr-xr-x 2 goksin ortak 512 3 Şub 08:44 . drwxr-xr-x 47 goksin goksin 3584 3 Şub 11:10 .. -rw-r--r-- 1 goksin goksin 0 3 Şub 08:44 test [goksin@daemon /usr/home/goksin]$
Bu işlemden sonra grup izinlerini değiştirmemiz durumunda sadece ortak grubunun üyesi olan goksin ve fahri kullanıcıları yeni düzenlemeye tabi olacaktır.
Hiç yorum yok:
Yorum Gönder