[Nasıl] Linux dosya izinleri

Başlatan arpia, 14 Temmuz 2012 - 14:56:54

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

arpia

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


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,
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,
-rwxr-x--- 1 deniz deniz 4 Tem 14 14:02 Ubuntu-tr/deniz
Sahibinin 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.

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.








zeusmaster

@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...

arpia

Teşekkür ederim @bahdem, birilerine fayda sağlarsa ne mutlu :)

hckr

Teşekkürler @arpia,peki bu dosya izinleri değişikliklerini Nautilus'ta yine sayılar kullanarak yapabilir miyiz?

arpia

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 :)

heartsmagic

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.

arpia

Alıntı yapılan: heartsmagic - 15 Temmuz 2012 - 02:40:18
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 :)

Barış Can

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

zeusmaster

@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...

heartsmagic

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.

hckr

Uçbirim üzerinden tüm alt klasörler ve dosyalara aynı izinlerin uygulanmasını nasıl sağlayacağız?

cagriemer

@hckr genelde man sayfalari bu tarz temel komutlar icin cok iyi anlatima sahiptir. http://manpages.ubuntu.com/manpages/precise/en/man1/chmod.1.html

sudo chmod -R izinler dizin

siqptare

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:
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.

heartsmagic

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.

siqptare

@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.

arpia

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...

heartsmagic

@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.

blacksnow

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.
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?

ersinkandemir

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.



blacksnow

Dediğinizi denedim.Sonuç bu:
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.

mozhan

benim bildigim söyle yapman gerekiyor
sudo chmod +x dosya
When we ride on our enemies..

https://github.com/mustafaozhan

blacksnow

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?

mozhan

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

arpia

#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.

mozhan

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