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
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Ff1207.hizliresim.com%2Fz%2Fg%2F9qd0r.png&hash=22b28bb6f5b9d7f9b85269c2148cb5caf9f98434) (http://bit.ly/c25MCx)
İ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,
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fg1207.hizliresim.com%2Fz%2Fg%2F9qf5x.png&hash=f93f3dc15cdb7f081ce67e96afecc54391f5728e) (http://bit.ly/c25MCx)
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;
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fg1207.hizliresim.com%2Fz%2Fg%2F9qfc4.png&hash=47f8daf8b52d43886dade2a0955f8bfb71314304) (http://bit.ly/c25MCx)
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.
@arpia, çok güzel bir kaynak olmuş. Eline sağlık. Geçenlerde yaşadığım sorunları bu kaynak olsa idi yaşamazmışım :)
Teşekkür ederim @bahdem, birilerine fayda sağlarsa ne mutlu :)
Teşekkürler @arpia,peki bu dosya izinleri değişikliklerini Nautilus'ta yine sayılar kullanarak yapabilir miyiz?
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 :)
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 :)
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 :)
Emeğinize sağlık, gayet güzel bir döküman olmuş. :)
@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?
Dergilerimiz okunsun da yeniden eskiye veya eskiden yeniye doğru okunsun hiç sorun değil :)
@bahdem, hiçbir sorun teşkil etmez elbette.
Uçbirim üzerinden tüm alt klasörler ve dosyalara aynı izinlerin uygulanmasını nasıl sağlayacağız?
@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
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.
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.
@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.
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...
@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.
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?
Dizinin içerisinde dosya varsa -f parametresini de (force) eklemek gerekiyor. rm -rf a diye deneyin.
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.
benim bildigim söyle yapman gerekiyor
sudo chmod +x dosya
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?
w (write) okuma yapmak için diye biliyorum (bu arada diye biliyorum yazıyorum herşeyde dikkatini çekerim emin değilim ama öyle olmalı )
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.
teşekürler düzelttiğin için bende + x i okuma ve yazma sanıyordum
Linux'ta dosya izinleri açısından bir faydası dokuncaksa http://kodputer.com/linux-dosya-izinleri/ burada çok detaylı bir açıklama mevcut. İnceleyebilirsiniz
Konuyu hortlatıyorum affınıza sığınarak...
Bir dizinin altındaki tüm dosyaların ve onun tüm alt dizinlerinin altındaki tüm dosyaların yetkilerini aşağıdaki şekilde nasıl değiştirebilirim? Dizinleri değil, sadece dosyaları etkileyecek şekilde.
-rw-r--r--
Bu mümkün müdür acaba? Sayısal değeri 644'müş sanırım.
İlgili dizinde chmod 644 *
denermisin.
[mention=627911]@szgnblt[/mention]
Örnek olarak oluşturduğum dizinde denedim. Hepsinin izinleri farklıydı. Çalıştırdığım dizindekiler için işe yaradı ama bulunduğum dizinin içindeki dizinlerin içindeki dosyalar için yaramadı.
Ben Thunar dosya yöneticisi kullanıyorum, izinlerini değiştirmek istediğin dosya veya dizinlere sağ tık> özellikler> izinler bölümünden istediğini yapabilirsin...
Zamanında şöyle bir şeyler yazmıştım bu işlem için.
https://forum.ubuntu-tr.net/index.php?topic=54944.0
Çalışma mantığını anlamak için, öncelikle örnek bir dizin üzerinde denemeler yapabilirsin.
Sudo chmod-R 644 *
denermisin
[mention=627914]@illedelinux[/mention] Öyle yapılıyor ancak tek tek yapmam çok ama çok uzun sürer. Dizinlerde çalıştırma olayı yok, dosyalarda var. Bunun için sıkıntı oluyor.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 27 Haziran 2017 - 21:50:06
[mention=627918]@mhmtkrktr[/mention] İnceleyeceğim, umarım yapabilirim. Sizin bir öneri komutunuz var mı peki mesajımda belirttiğim sorun için?
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 27 Haziran 2017 - 21:50:44
[mention=627924]@szgnblt[/mention] Bu komut çalışıyor ancak dizinleri de etkiliyor maalesef. :(
Benim dediğimde tek tek yapmana gerek yok, dosyaların olduğu dizine yaparsan hepsi bir hamlede olur, saniyelik iş...
find * -type f -print0 | xargs -0 chmod 644
[mention=627928]@illedelinux[/mention] Zaten öyle yaptım, alt dosya ve dizinlere uygula da dedim lakin bu şekilde yapınca çalıştırma izinlerini kaldıramıyorum. Dizinin izin ayarlarında çalıştırmayla alakalı bir durum yok.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 27 Haziran 2017 - 22:24:03
[mention=627932]@szgnblt[/mention] Sanırım bu işe yaradı, çok teşekkür ederim. Peki buradaki mantık nedir tam olarak?
Tüm dosyalarda arama yapıyor. -type d yaparsak dizinlerde arama yapıyor. Xargs ile aradığımız argümanları istediğimiz komutla düzenleme yapıyoruz. Umarım anlatabilmişimdir. Sorunun çözüldüğünü sevindim.
[mention=627934]@szgnblt[/mention] Anladım diyebilirim. Tekrardan teşekkür ediyorum. :)
Merhaba bir ara ubuntu kullanırken cevabı bulmuştum ama şuan bulamıyorum. Sorunum "Windows kullanırken yedeklerimi aldığım D: diskimden Ubuntu 18.04 üzerinde herhangi bir dosya klasör silemiyorum" cevaplarınız için şimdiden teşekkürler.
Peki flaş bellekte bir dosyanın izinleri 700 yapınca, o dosyaya bir kişi başka bir bilgisayardan bir şey yapabilir mi? (Klasör ise içindekilerini görebilir mi?)