Gönderen Konu: [Nasıl] Linux dosya izinleri  (Okunma sayısı 23669 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

« : »
GNU/Linux üzerinde dosya izinlerini görmek için "ls" komutunu "-l" parametresi ile kullanabiliriz.

Kod: [Seç]
drwx------ 2 deniz deniz 4096 Tem 14 12:59 deneme
-rw-rw-r-- 1 deniz deniz    4 Tem 14 14:02 deniz
Sol tarafta izinleri/hakları göstermektedir.İlk sırada bulunan "d" işaret bunun bir dizin olduğunu gösteriyor. Devamında gelen "r" okuma, "w" yazma, "x" ise çalışma hakkını simgeliyor.
Hemen altından devam edelim, "-" bunun bir düz dosya olduğunu  belirtiyor. Devamında sahibi için okuma ve yazma hakkı, grubu için okuma ve yazma hakkı, diğerleri içinse sadece okuma hakkı verilmiş.

İkinci satırı anlatırken üç bölümde anlattım. Çünkü ilk üçlü sıra (r, w,x) sahibi, ikinci üçlü sıra grubu, sonra üçlü sıra ise diğerlerini temsil eder.

Yani -rwx-rx-r örneğini verirsek, ilk sırada bulunan "r, w ve x" sahibi için okur, yazar ve çalıştırır haklarını verirken ikinci sırada "r, x" gurubu için sadece okur ve çalıştırabilir ama yazamaz haklarını, diğerleri içinse "r" sadece okur ama yazıp, çalıştıramaz haklarını göstermektedir



İkinci sırada bulunan deniz dosyası için çalıştma hakkı yoktu, bu hakkı vermek için,
Kod: [Seç]
chmod +x deniz
komutunu vermemiz dosya ya çalıştırma hakkını verecektir.

Dosya izinlerini/haklarını sayısal olarak da tanımlayabiliriz ki sadece çalıştırma izni için değil, toplu yetki verme durumlarında daha çok kullanılır.
400   =   Sahibi okur
200   =   Sahibi yazar
100   =   Sahibi çalıştırır
040   =   Grubu okur
020   =   Grubu yazar
010   =   Grubu çalıştırır
004   =   Diğerleri okur
002   =   Diğerleri yazar
001   =   Diğerleri çalıştırır
yazdıklarımıza istinaden deniz dosya üzerinde deneme yapalım,


Bu tabloda gördüğümüz gibi deniz dosyasının yetkileri şu şekilde oldu,
Kod: [Seç]
-rwxr-x--- 1 deniz deniz 4 Tem 14 14:02 Ubuntu-tr/denizSahibinin okuması (400), yazması (200), çalıştırması (100), grubunun okuması (40), çalıştırması (10) = 750



Bütün yetkilerin toplamı 777 eder ki bu herkes için tüm yetkiler verilmiş demektir.
Windows tarafında özellikle dosya paylaşımında sorun yaşayan bazı kişiler sorunu çözmek için paylaşıma "Everyone" eski tabirle "Everyone Full Control" verirler ki bu aslında sakıncalıdır.
Bizim taraf içinde dosya çalıştırma yada benzer haklarsa sorun çıkmaması için dosyaya 777 hakkı verilir ki bu da tehlikelidir. Halbuki dosyanın sorunsuz çalışması için doğru hakların verilmesi yeterlidir, 777 bu durumda ihtiyaç değildir. Bilgisayarınızı ev bilgisayarı yada sunucu olması, için de fink atacak kişiler için çok önem teşkil etmeyecektir. Bu durumda dosya güvenliğini sağlamak ta önemlidir.

Örn;


Yukarıda ki örnekte, deniz dosyasına 777 hakkı verilmiştir.
Kod: [Seç]
drwx------ 2 deniz deniz 4096 Tem 14 12:59 deneme
-rwxrwxrwx 1 deniz deniz    4 Tem 14 14:02 deniz

Gördüğünüz gibi "deneme" dizininde sadece sahibi okuma, yazma ve çalıştırma hakkına sahipken "deniz" dosyası için herkes tüm yetkiye sahiptir, yazabilir, çalıştırabilir.
Konuya çok vakıf olmayan arkadaşlar için algılarının dışında bir güvenlik açığıdır, lütfen dosya haklarınıza kendi güvenliğiniz için dikkat edin.







« Son Düzenleme: 14 Temmuz 2012 - 18:43:14 Gönderen: arpia »

« Yanıtla #1 : »
@arpia, çok güzel bir kaynak olmuş. Eline sağlık. Geçenlerde yaşadığım sorunları bu kaynak olsa idi yaşamazmışım :)
Up and Running...

« Yanıtla #2 : »
Teşekkür ederim @bahdem, birilerine fayda sağlarsa ne mutlu :)

« Yanıtla #3 : »
Teşekkürler @arpia,peki bu dosya izinleri değişikliklerini Nautilus'ta yine sayılar kullanarak yapabilir miyiz?

« Yanıtla #4 : »
Nautilus için, benim bildiğim kadarı ile sabip, grup ve diğerleri ayrı ayrı yetkilendiriliyor, bunun dışında yolu varsa benim bilgim dışında ne yazık ki :)

« Yanıtla #5 : »
Eline sağlık @arpia. Bir ara dergiye geçmiştik böyle bir konuyu fakat forumda derli toplu bir şekilde olmaması büyük eksiklikti :)
@bahdem, demek ki SUDO'nun 3. sayısını okumamışsın :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?

Böylece yalan, dünyanın düzenine dönüştürülüyor.

« Yanıtla #6 : »
Eline sağlık @arpia. Bir ara dergiye geçmiştik böyle bir konuyu fakat forumda derli toplu bir şekilde olmaması büyük eksiklikti :)
Teşekkür ederim @heartsmagic, SUDO 3. sayıda ki çok detaylı, güzel bir anlatım :)

« Yanıtla #7 : »
Emeğinize sağlık, gayet güzel bir döküman olmuş. :)
» genelde hiçbir şey planladığım gibi gitmez.
» kişisel blog.

« Yanıtla #8 : »
@heartsmagic, evet hocam eski sayilara dönük okumaya başladım ama o kadar geriye gelemedim daha :( Bide ben bu dergileri basılı olarak saklıyorum. Sorun teşkil eder mi?
Up and Running...

« Yanıtla #9 : »
Dergilerimiz okunsun da yeniden eskiye veya eskiden yeniye doğru okunsun hiç sorun değil :)
@bahdem, hiçbir sorun teşkil etmez elbette.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?

Böylece yalan, dünyanın düzenine dönüştürülüyor.

« Yanıtla #10 : »
Uçbirim üzerinden tüm alt klasörler ve dosyalara aynı izinlerin uygulanmasını nasıl sağlayacağız?

« Yanıtla #11 : »
@hckr genelde man sayfalari bu tarz temel komutlar icin cok iyi anlatima sahiptir. http://manpages.ubuntu.com/manpages/precise/en/man1/chmod.1.html

Kod: [Seç]
sudo chmod -R izinler dizin

« Yanıtla #12 : »
Konuyu hortlatmış olucam biraz ama tam da benim sorunumu anlattığı için yeni bir başlık açmak istemedim. Şimdi ben apache kurdum Ubuntu' ya. Localhost' tan index.html dosyasına erişim sağlayamıyorum. Verdiği hata:
Kod: [Seç]
Forbidden

You don't have permission to access / on this server.
Apache/2.2.22 (Ubuntu) Server at localhost Port 80
Bunun üzerine araştırıp konunun izinlerle ilgili olduğunu anladım ve bu konuya geldim. /var/www/* klasörünün izinlerini sahibine rwx ve grubuna(users) r-x olarak düzenledim(chmod 750). Diğerlerine hiçbir izin vermedim.  Şimdi anlamadığım sorun şu:
Ben bu bilgisayarın sahibiyim(siqptare) ve sahibinin tüm izinleri var. Ancak ben bu klasör içindeki dosyaları okuyup yazabiliyorum(klasör içerisinde test.php ve index.html dosyaları var) ancak firefox a localhost/test.php yazıp çalıştırmaya kalktığımda yukarıdaki hata ile karşılaşıyorum. Tüm izinleri verdiğimde(chmod 777) sorunsuz çalışıyor ancak bunun tehlikeli olduğunu söylemişsiniz. Benim isteğim sadece sahibine(siqptare) rwx izinlerini verip dosyalar üzerinde her türlü değişikliği yapmak ve çalıştırmak. Acaba bunun için yapmam gereken nedir ?
Ubuntu 12.04 LTS kullanıyorum.

« Yanıtla #13 : »
Biraz karışmış ortalık sanki. @siqptare, yanlış anlamadıysam senin yorumlatmak istediğin dosyayı yorumlayacak kişi Apache'dir. Kısacası www-data kullanıcısı. Haliyle sen 750 yaparsan sahibi her şeyi yapar, dosyanın grubu okur/çalıştırır, diğerleri ise hiçbir şey yapamaz. Apache kullanıcısının en asından bu dosyayı okuyabilmesi lazım.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?

Böylece yalan, dünyanın düzenine dönüştürülüyor.

« Yanıtla #14 : »
@heartsmagic öncelikle yanıtınız için teşekkür ederim.
Benim anlamadığım bilgisayarımda benden başka kullanıcı yok bu durumda root kullanıcı olmam gerekmez mi? Yani ben illa dosya izinlerini 777 yaparak mı çalışmalıyım. /var/www dizininin sahibini chown komutuyla kullanıcı adım olan "siqptare" yaptım. Bu durumda dizin sahibi ben olmuyor muyum? Acaba ben bu konuyu yanlış mı yorumluyorum anlayamadım bir türlü. Sadece sahibine gerekli izinleri verip bu dizin içinde her türlü işlemi yapma hakkını nasıl kazanabilirim? Linux' te yeni olduğum için neyin olup neyin olamayacağını pek kestiremiyorum.

« Yanıtla #15 : »
Klasör içindeyken izinleri buraya çıktı (ls -l) ile dökseydiniz iyi olurdu.
root'tan başka sizin kullanıcınız var.

İzineri 755 olarak deneyin...

« Yanıtla #16 : »
@siqptare, dizinin sahibi sensen ve oradaki dizindeki sahip hakkı için yazma izni varsa istediğin gibi yazıp çizebilirsin. Kısacası dizinin sahibi senin kullanıcın ve izinler 700 olsa bile istediğin gibi at koşturabilirsin. Fakat, bir önceki iletimi dikkatlice okursan olayın senin kullanıcın olmadığını anlarsın. Oradaki dosyayı Apache'nin yorumlayabilmesi, yani okuyabilmesi lazım. Onun için de eğer dosyanın grubu Apache kullanıcıysa *4* gibi bir şey, çalıştırılacak bir şeyse de *5* gibi bir şey olmalı. Eğer dosyanın grubu Apache kullanıcısına ait değilse işte o aşamda @arpia'nın önerdiği gibi 755 yapmalısın dosya izinlerini.

Esasında bu başlık da bu konuyu anlatıyor :)

Bu arada sistemdeki tek normal kullanıcı senin kullanıcındır doğru ancak daha birçok başka sistemsel kullanıcı mevcut. Üzerine bir de sonradan kurulan Apache gibi uygulamaların da kullanıcıları olabilir. 
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?

Böylece yalan, dünyanın düzenine dönüştürülüyor.

« Yanıtla #17 : »
Konu üzerinden uzun zaman geçmiş fakat aklıma takılan bir şey var.

İlk önce a adında bir dizin oluşturuyorum.Sonra bu dizinin içine cat komutuyla bir b dosyası oluşturuyorum.

b dosyasının izinleri şu şekilde : -rw- rw- r--

a dizinin izinleri de bu şekilde : drw- --- ---

Yapmak istediğim bu haldeyken a dizinini silmek.
Kod: [Seç]
tnc@tnc-ubuntu:~/Masaüstü$ rm -r a
rm: `a/a' silinemedi: Erişim engellendi
rm: `a' silinemedi: Dizin boş değil

Sonuç olarak hem dizin hem de dosya üzerinde 'w' yetkim olduğu için silebileceğimi düşünüyorum ama olmuyor.Ayrıca izinler bu durumdayken a dizini unity masa üstünden çöpe at,çöpü boşalt şeklinde silinebiliniyor.Terminalden silemediğim dizin masaüstünde nasıl silinebiliyor?

« Yanıtla #18 : »
Dizinin içerisinde dosya varsa -f parametresini de (force) eklemek gerekiyor. rm -rf a diye deneyin.
Where there's a shell, there's a way.



« Yanıtla #19 : »
Dediğinizi denedim.Sonuç bu:
Kod: [Seç]
tnc@tnc-ubuntu:~/Masaüstü$ rm -rf a
rm: `a/b' silinemedi: Erişim engellendi

a dizinine 'x' yetkisini verdiğimde dizini rm -r a ile silebiliyorum.Ama unity masaüstü üzerinden 'x' yetkisi olmasa bile dosyayı silebiliyorum.Asıl anlamak istediğim konu bu durum.

« Yanıtla #20 : »
benim bildigim söyle yapman gerekiyor
sudo chmod +x dosya
When we ride on our enemies..

https://github.com/mustafaozhan

« Yanıtla #21 : »
Ne istediğimi tam olarak anlatamadım galiba.Dosya/dizin izinlerinin nasıl verildiğini biliyorum.Ben izinlerin ne işe yaradığını öğrenmeye çalışıyorum.Sorduğum soruda da 'w' yetkisi olmasına rağmen bir dosyayı silemiyorum.Bunun nedenini sormaktayım.Aslında şöyle sorayım bir dizini silmek için 'w' yetkisi yeterli değil midir?

« Yanıtla #22 : »
w (write) okuma yapmak için diye biliyorum (bu arada diye biliyorum yazıyorum herşeyde dikkatini çekerim emin değilim ama öyle olmalı )
When we ride on our enemies..

https://github.com/mustafaozhan

« Yanıtla #23 : »
w (Write - yazmak) r (Read - okumak)

Sizin şuanki durum, dosyanın sahini yazıp çizebilir şeklinde. Siz bu durumda dosya sahibi olmaya bilirsiniz.
chmod ile yetki verebilirsiniz. Yada sahibinden başkası hiç bir şekilde çalıştırma, okuma, yazma yapmasın diyorsanız, chown ile sahipliğini alabilirsiniz.

chmod ve chown gibi komutları forumda yada arama motorlarında araştırıp güzel bilgiler edinebilirsiniz.

Ek: Bir arkadaşımız +x ile örnek vermiş. x (Executable - çalıştırılabilir) yani çalıştırma izni veriyor, başlıkta da anlattığı gibi silme işlemi ile yani yazma ile bir alakası yoktur.
« Son Düzenleme: 21 Aralık 2014 - 23:43:27 Gönderen: arpia »

« Yanıtla #24 : »
teşekürler düzelttiğin için bende + x i okuma ve yazma sanıyordum
When we ride on our enemies..

https://github.com/mustafaozhan