drwxr-xr-x ifadesi ne anlama gelir?
Linux dosya izinlerini 755 moduna göre analiz edin. drwxr-xr-x dizgisindeki her karakterin işlevini, dizinlerdeki x yetkisini ve chmod 777 komutunun neden hatalı olduğunu öğrenin.
drwxr-xr-x ifadesinin anlamı
drwxr-xr-x, sahibinin değişiklik yapabildiği, diğer tüm kullanıcıların ise yalnızca okuyabildiği ve içeriğine erişebildiği bir dizini tanımlar. Sekizlik (octal) sistemde bu mod 755 olarak ifade edilir. Linux, ls -l çıktısının her satırının başında bu on karakteri görüntüler. Bu karakterler her zaman aynı sırada ve aynı anlama gelir; dolayısıyla bir dizgiyi öğrenmek, hepsini anlamanızı sağlar.
Kendi testlerinizin sonuçlarını doğru yorumlayabilmeniz için bir kural diğerlerinden önce gelir: root kullanıcısı izin bitlerini yok sayar. Çekirdek, root kullanıcısına CAP_DAC_OVERRIDE yetkisini (isteğe bağlı erişim denetimi geçersiz kılma) tanır; bu nedenle root, mod izin vermese dahi dosyaları açabilir. Bu sayfadaki her örnek, bitler ne olursa olsun root için başarılı olur. Kuralların nasıl işlediğini gözlemlemek istediğinizde normal bir kullanıcı ile oturum açın.
On karakter, teker teker
İncelemek üzere bir dizin ve bir dosya oluşturun. Buradaki işlemler yeni dizinin dışındaki hiçbir şeye dokunmaz.
mkdir -p ~/permdemo/inner
printf 'hello\n' > ~/permdemo/inner/notes.txt
ls -ld ~/permdemo ~/permdemo/inner ~/permdemo/inner/notes.txtVarsayılan umask değeri olan 022 ile, iki dizin satırı drwxr-xr-x ile başlar ve dosya satırı -rw-r--r-- ile başlar.
- karakter bir izin değil, dosya türüdür.
dbir dizindir.-normal bir dosyadır.lsembolik bir bağdır.cvebkarakter ve blok aygıt düğümleridir.sbir soket,pise adlandırılmış bir borudur (named pipe). Bu karakter sekizlik değerin dışında yer alır; bu yüzdendrwxr-xr-x,dile başlayan bir değer yerine 755 olur.
Bundan sonra gelen dokuz karakter üçerli üç gruptur ve sıraları asla değişmez.
- 2 ila 4. karakterler sahip üçlüsüdür; dosyanın sahibine uygulanan bitlerdir.
- 5 ila 7. karakterler grup üçlüsüdür; dosyanın grubuna uygulanan bitlerdir.
- 8 ila 10. karakterler diğerleri üçlüsüdür; diğer herkese uygulanan bitlerdir.
Bir üçlü içindeki yuvalar her zaman r, ardından w ve x şeklindedir; tire işareti ilgili bitin kapalı olduğu anlamına gelir. Harflerin konumu asla değişmez. r-x, yazma izni olmadan okuma iznidir. -w-, okuma izni olmadan yazma iznidir; bu yasal ancak nadir görülen bir durumdur.
Bu durumda drwxr-xr-x şu şekilde ayrılır: dizin için d, sahip için rwx, grup için r-x ve diğerleri için r-x.
Bazı sistemler on birinci bir karakter daha yazdırır. Sondaki bir nokta, drwxr-xr-x., dosyanın bir SELinux (security enhanced Linux) bağlamı taşıdığı anlamına gelir; Fedora ve Rocky gibi SELinux dağıtımları bunu varsayılan olarak yazdırır. Sondaki bir artı işareti, drwxr-xr-x+, dosyanın bu dokuz bitin ötesinde ek kurallar kümesi olan bir POSIX ACL (erişim denetim listesi) taşıdığı anlamına gelir. Bu ek kuralları getfacl <path> ile okuyabilirsiniz.
r, w ve x izinleri bir dizin üzerinde farklı işlevlere sahiptir
Yeni başlayanların en sık yaptığı hata budur. Harfler hem dosya hem de dizin için aynıdır. Ancak sağladıkları yetkiler farklıdır.
- Bir dosya üzerindeki
riçeriği okumayı sağlar. Bir dizin üzerindekirise içindeki dosya isimlerini listeler; bu da düzlskomutunun ihtiyaç duyduğu şeydir. - Bir dosya üzerindeki
wiçeriği değiştirir. Bir dizin üzerindekiwise dizin içindeki girdileri eklemeyi veya silmeyi sağlar. Bir dosyayı silmek dizin üzerinde yapılan bir değişikliktir; bu nedenle silme yetkisi dizin üzerindeki yazma iznine bağlıdır, dosyanın kendi izinlerinin bu konuda bir etkisi yoktur. - Bir dosya üzerindeki
xonu bir program olarak çalıştırır. Bir dizin üzerindekixise dizin içinde gezinmeyi (traverse) sağlar; bu, çekirdeğin bir yol çözümlemesi sırasında dizin içindeki bir ismi çözümleyebileceği anlamına gelir.
Gezinme (traverse) yetkisi insanları şaşırtan kısımdır. Bir dizin üzerindeki x hiçbir şeyi çalıştırmaz. /srv/site/index.html dosyasını açmak için sırasıyla / üzerinde x, /srv üzerinde x, /srv/site üzerinde x ve son olarak dosyanın kendisi üzerinde r izni gerekir. Eğer bu zincirdeki bir dizin sizin için x iznine sahip değilse, yol çözümlemesi orada durur ve dosyanın kendisi herkes tarafından okunabilir olsa bile çağrıyı yapan kişiye Permission denied hatası döndürülür. namei -l /srv/site/index.html komutu, zincirdeki her adımı izinleri ve sahibiyle birlikte yazdırır; böylece hangi halkanın erişimi engellediğini görebilirsiniz.
r iznine sahip ancak x izni olmayan bir dizin, tanınması gereken tuhaf bir ara durumdur. Normal bir kullanıcı isimleri listeleyebilir, çünkü listeleme yetkisi r ile verilir; ancak hiçbir girdinin durumunu (stat) sorgulayamaz. Bu nedenle ls -l komutu boyut ve izin sütunlarını soru işaretleri ile doldurur ve her biri için ls: cannot access ...: Permission denied çıktısını verir.
İzinleri 755 biçimine dönüştürme
Her üçlü, üç bitlik bir sayıdır. r 4, w 2, x 1 değerindedir. Aktif olan bitleri toplayın.
rwx4 + 2 + 1 = 7 ederrw-4 + 2 = 6 ederr-x4 + 1 = 5 ederr--4 eder---0 eder
Bu durumda drwxr-xr-x sahibi için 7, grup için 5 ve diğerleri için 5 değerindedir: 755. -rw-r--r-- 6, 4, 4 değerindedir: 644. drwxrwxr-x 7, 7, 5 değerindedir: 775; bu, 755'in grup için yazma izni eklenmiş halidir. Karakterleri elle saymanıza gerek yoktur, çünkü stat her iki biçimi de aynı anda görüntüler.
stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt%A harf biçimini, %a sekizlik (octal) biçimi, %U ve %G ise dosya sahibini ve grubunu belirtir.
İnsanların aradığı izin dizgeleri
Bunlar, gerçek bir sunucuda karşılaştığınız, sekizlik değerleri ve nerede kullanıldıklarıyla birlikte izin modlarıdır.
-rw-r--r--değeri 644'tür. Bir servisin yalnızca okuduğu, yapılandırma dosyası veya HTML sayfası gibi sıradan dosyalar.-rw-------değeri 600'dür. Gizli veriler: bir SSH özel anahtarı veya bir uygulamanın.envdosyası.-rw-rw-r--değeri 664'tür. Ekip üyelerinin yazma erişimine ihtiyaç duyduğu, bir grup tarafından paylaşılan dizindeki dosyalar.-rwxr-xr-xdeğeri 755'tir./usr/local/bin/backup.shve/usr/bindizinlerinin çoğu gibi betikler ve ikili dosyalar.-rwx------değeri 700'dür. Yalnızca sahibinin çalıştırabileceği özel bir betik.drwxr-xr-xdeğeri 755'tir. Neredeyse tüm sistem dizinleri ve bir web sitesinin belge kök dizini.drwx------değeri 700'dür.~/.sshve kısıtlanmış bir sunucudaki ev dizinleri.drwxrwxr-xdeğeri 775'tir. Sahibinin grubunun yazabileceği bir dizin.drwxrwsr-xdeğeri 2775'tir. Aynı dizin, artı setgid biti; böylece içeride oluşturulan yeni dosyalar dizinin grubunu devralır.drwxrwxrwtdeğeri 1777'dir./tmp. Sondakitsticky bit'tir; bu sayede bir kullanıcı yalnızca kendi dosyalarını silebilir.-rwsr-xr-xdeğeri 4755'tir./usr/bin/passwdve/usr/bin/sudogibi, sahibi yetkileriyle çalışan bir setuid ikili dosyası.-rw-rw-rw-değeri 666,drwxrwxrwxdeğeri ise 777'dir. Herkese yazma izni verir; sunucu ortamında bu neredeyse her zaman bir hatadır.lrwxrwxrwxdeğeri, her sembolik bağın gösterdiği değerdir. Linux, bir bağ üzerindeki mod bitlerini görmezden gelir ve hedefi denetler; bu nedenle bu dizge hiçbir anlam taşımaz.
Hangi üçlü sizin için geçerli
Yeni başlayanların yanlış anladığı ikinci kural şudur: Çekirdek tam olarak bir üçlü seçer ve orada durur.
Kullanıcı kimliğiniz dosyanın sahibiyle eşleşirse, sahip üçlüsünü alırsınız; grup ve diğer bitlerine asla bakılmaz. Aksi takdirde, dosyanın grubu sizin gruplarınızdan biriyse, grup üçlüsünü alırsınız. Bu da olmazsa, diğer üçlüsünü alırsınız.
Buradan iki sonuç çıkar. Sahip üçlüsü, en kısıtlayıcı olanı olsa bile geçerlidir. -r--rw-rw- olarak görüntülenen 0466 moduna sahip bir dosya, sahibine yalnızca okuma izni verirken diğer herkesin yazmasına izin verir; çünkü sahip kontrolü ilk sırada eşleşir ve sonrasındaki hiçbir şey okunmaz. Bu durum yasal olmakla birlikte, ilk kez karşılaşıldığında herkesin kafasını karıştırır.
Grup üçlüsü, sizin üyesi olduğunuz gruplar listesine göre değil, dosyanın grubu tarafından belirlenir. ls -l her satırda iki isim yazdırır: sahip ve ardından grup. Dosya üzerinde yalnızca o ikinci grubun söz hakkı vardır. Yirmi gruba üye olmanız, yalnızca dosya bu gruplardan birini taşıyorsa işinize yarar.
id
stat -c '%U %G %A %n' ~/permdemo/inner/notes.txtid kullanıcı adınızı ve üyesi olduğunuz tüm grupları yazdırır. stat dosyanın sahibini ve grubunu yazdırır. Bu ikisini karşılaştırdığınızda, çekirdeğin sizin için hangi üçlüyü kullanacağını anlarsınız.
Paylaşılan bir dizinin genellikle bir grup ve setgid biti almasının nedeni budur. sudo chmod 2775 /srv/shared, drwxrwsr-x olarak görüntülenir ve içinde oluşturulan dosyalar, oluşturan kişinin kişisel grubu yerine dizinin grubunu miras alır; böylece bir sonraki kişi bu dosyalara yazmaya devam edebilir. Her servise kendi hesabını vermek bu hikayenin diğer yarısıdır ve bu konu VPS üzerinde servis başına bir Linux kullanıcısı başlığında ele alınmıştır.
umask her yeni dosyanın modunu belirler
Yeni bir dosya modunu sizden almaz. Dosyayı oluşturan programdan, umask değerinizin temizlediği bitler çıkarılarak belirlenir. umask, kaldırılacak bitlerin bir maskesidir; dolayısıyla daha büyük bir umask değeri daha özel dosyalar üretilmesini sağlar.
Çoğu dağıtım 022 değeriyle gelir. Normal bir dosya oluşturan program 0666 modunu talep eder. Dizin oluşturan bir program ise 0777 modunu talep eder. umask, her iki talepten de 022 değerini temizler; böylece dosyalarda 644, dizinlerde ise 755 modunu elde edersiniz. Bu, yeni bir VPS üzerinde her yerde gördüğünüz ikilinin tam karşılığıdır.
umask
umask -S
touch ~/permdemo/new.txt && mkdir -p ~/permdemo/newdir
ls -ld ~/permdemo/new.txt ~/permdemo/newdirumask -S, 0022 komutuna göre okunması daha kolay olan harf değerlerini yazdırır. Daha sıkı bir varsayılan için ~/.profile içerisinde umask 027 değerini ayarlayın: dosyalarda 640, dizinlerde 750. Böylece grubunuz çalışmalarınızı okuyabilir ancak başka kimse erişemez.
İki sınır önemlidir. umask yalnızca bitleri temizleyebilir, asla ekleyemez; bu nedenle ne ayarlarsanız ayarlayın, yeni oluşturulan bir dosya asla çalıştırılabilir olmaz. Ayrıca bir systemd servisi shell profilinizi asla okumaz, bu yüzden değeri unit dosyası içerisinde ayarlayın.
[Service]
UMask=0027Web dosyalarının 644, web dizinlerinin 755 olmasının nedeni
Bir web sunucusu kendi kullanıcı hesabı altında çalışır; bu hesap Debian ve Ubuntu üzerinde www-data, Rocky ve Alma üzerinde ise nginx olarak adlandırılır. Bu süreç, sunduğu dosyaları okumaya ve üzerlerindeki dizinleri geçmeye (traverse) ihtiyaç duyar. Dosyaları yazması için hiçbir neden yoktur ve statik bir site buna asla izin vermemelidir.
Bir dosyada 644 izni, sahibine yazma, herkese ise okuma yetkisi verir; böylece dağıtım kullanıcısı yayın yapabilir ve web kullanıcısı dosyaları sunabilir. Bir dizinde 755 izni, sahibine yazma, herkese ise geçiş yetkisi verir; böylece web kullanıcısı, herhangi bir şey ekleyip silemeden dizin yolunu takip edebilir. Bu sayede uygulamadaki bir hata, sunulan sayfaların üzerine yazılamamasını sağlar.
Geçiş kuralı tam bu noktada devreye girer. Eğer site /home/deploy/site dizininde bulunuyorsa ve /home/deploy dizininin izinleri 750 ise, web kullanıcısı ana dizine hiçbir şekilde giremez ve istek, /var/log/nginx/error.log içerisinde şuna benzer bir satırla HTTP 403 hatasıyla sonuçlanır:
open() "/home/deploy/site/index.html" failed (13: Permission denied), client: 203.0.113.5Buradaki 13 değeri, çekirdeğin izin reddi olan EACCES hatasıdır. Ağ ile ilgili bir sorun yoktur: port dinlenmektedir ve istek ulaşmıştır; bu durum Linux'ta dinleme portlarının nasıl çalıştığını öğrenirken kafa karıştırıcı olabilir. namei -l /home/deploy/site/index.html komutunu çalıştırın ve diğer kullanıcılar için x iznine sahip olmayan ilk dizini bulana kadar dizin zincirini inceleyin.
Uygulamanın içine yazabildiği, yükleme yolu gibi bir dizin istisnadır. Bu dizine daha geniş bir mod vermek yerine sahiplik ataması yapın: sudo chown -R www-data:www-data /srv/site/uploads komutunu kullanın ve modu 755 olarak bırakın. Yazma erişimini yalnızca buna ihtiyaç duyan tek bir dizinle sınırlı tutun.
chmod, tüm dizin ağacını bozmadan kullanma
chmod her iki biçimi de destekler. Sekizlik (octal) gösterim dokuz bitin tamamını aynı anda ayarlar: chmod 644 notes.txt. Sembolik gösterim ise yalnızca belirttiğiniz kısımları değiştirir ve geri kalanına dokunmaz: chmod u+x deploy.sh sahibi için çalıştırma izni ekler, chmod go-w notes.txt ise grup ve diğerleri için yazma iznini kaldırır.
Özyinelemeli (recursive) işlemler, dizin ağaçlarının zarar görmesine neden olabilir. chmod -R 755 . komutu, her görseli ve her yapılandırma dosyasını çalıştırılabilir hale getirir; çünkü chmod bir betik ile bir JPEG dosyasını birbirinden ayırt edemez. Bunun yerine büyük harfli X parametresini kullanın.
chmod -R u=rwX,go=rX ~/permdemo
stat -c '%a %n' ~/permdemo ~/permdemo/inner/notes.txtBüyük harfli X parametresi, çalıştırma iznini dizinlere ve halihazırda herhangi bir yerinde çalıştırma biti bulunan dosyalara uygular. Dizinler 755, normal dosyalar 644 izinlerine sahip olur; halihazırda çalıştırılabilir olan betikler ise bu özelliklerini korur. Güvendiğiniz bir dosyanın izinlerini başka bir dosyaya uygulamak istediğinizde, chmod --reference=good.sh other.sh komutu bu izinleri kopyalar.
Bir bit hatalı olduğunda karşılaşılan mesajlar
bash: ./deploy.sh: Permission denied, betiğin sizin için geçerli olan üçlüde x bitine sahip olmadığını veya yol üzerindeki bir dizinin x yetkisine sahip olmadığını belirtir. chmod u+x deploy.sh, ilk durumu düzeltir.
bash: ./deploy.sh: cannot execute: required file not found, yanıltıcı bir isme sahip farklı bir hatadır. x biti doğrudur ancak ilk satırda belirtilen yorumlayıcı eksiktir. Yaygın neden Windows satır sonlarıdır; bu durumda çekirdek, /bin/bash\r adında bir yorumlayıcı arar. Sorunu sed -i 's/\r$//' deploy.sh ile giderin.
Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open., diğer hesapların okuyabildiği bir özel anahtarı kullanmayı reddeden SSH istemcisinden gelir. Anahtar 600, ~/.ssh ise 700 yetkisine sahip olmalıdır. Anahtar yönetimi ile ilgili tüm detaylar SSH anahtarlarını ve dosya izinlerini yönetme bölümündedir.
Authentication refused: bad ownership or modes for directory /home/deploy/.ssh, bir ev dizini veya onun .ssh öğesi grup tarafından yazılabilir olduğunda sunucunun günlük kayıtlarında görünür. sshd StrictModes ayarı anahtarı reddeder; bu durum istemci tarafında açıklamasız ve beklenmedik bir parola istemi olarak yansır.
sudo: /etc/sudoers is world writable ve ardından gelen sudo: no valid sudoers sources found, quitting, sudo'nun kendi yapılandırma dosyasının modunu kontrol edip çalışmayı reddettiği anlamına gelir. Bu dosya 0440 yetkisine sahip olmalıdır. Bu durum, kapsamlı ve özyinelemeli bir chmod işleminin klasik sonucudur ve yukarıdaki sshd mesajıyla birlikte ortaya çıkabilir; bu da sunucu sağlayıcısının konsolunu sisteme tekrar erişebilmek için tek yol haline getirir.
777 neden bir çözüm değildir
777 izni, makinedeki her hesaba ve bu hesaplar altında çalışan her sürece yazma erişimi sağlar. Bir sunucu, servisleri kendi kullanıcıları altında çalıştırır; bu nedenle "herkes" ifadesi, bir VPS üzerinde dizüstü bilgisayara kıyasla çok daha geniş bir kapsamı ifade eder. Güvenliği ihlal edilen bir servis, 777 izninin verildiği her yere yazabilir.
Web kök dizini altında bu durumun zararı doğrudan gerçekleşir. Sunucunun servis ettiği ve herkesin yazabildiği bir dizin, dosya yükleme zafiyetinin bir betik yerleştirme ve ardından bu betiği geri çağırma yöntemi haline gelmesine olanak tanır.
777, sahiplik sorunu için neredeyse her zaman yanlış cevaptır. Belirti "uygulama bu dizine yazamıyor" şeklindedir. Sebep ise dizinin yanlış kullanıcıya ait olmasıdır. sudo chown -R appuser:appuser /srv/app/storage komutu ile 755 modu kullanılarak sorun çözülür ve diğer tüm hesapların erişimi engellenir. Bu hesapların herhangi bir dağıtım yapılmadan önce oluşturulması, yeni bir VPS üzerindeki ilk on dakika sürecinin bir parçasıdır.
Dünya genelinde yazma izni, herkesin bildiği tek bir yerde meşrudur; o da /tmp dizinidir ve drwxrwxrwt şeklinde yazılır. Sondaki t yapışkan bit (sticky bit) ifadesidir: dizin herkes tarafından yazılabilir durumdadır ancak bir kullanıcı yalnızca kendi sahip olduğu dosyaları silebilir. Bu bit olmadan, herhangi bir hesap başka bir hesabın geçici dosyalarını silebilir.
Bir modu değiştirmeden önce okuyun
Bu komutlar yalnızca durumu okur, bu nedenle her yerde güvenle çalıştırılabilirler.
id
umask
stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt
namei -l ~/permdemo/inner/notes.txt
find ~/permdemo -perm -0002find <path> -perm -0002, dünya tarafından yazılabilir biti ayarlanmış bir yol altındaki her şeyi listeler; bu, birisi chmod 777 ile onarım yaptıktan sonra bir sunucuyu denetlemenin en hızlı yoludur.
Belirli bir servis hesabının bir dizine girip giremeyeceğini sorgulamak için, o hesap olarak sorgulama yapın. sudo -u www-data test -x /srv/site && echo yes || echo no, kullanıcı dizin üzerinde geçiş (traverse) yetkisine sahip olduğunda yes, sahip olmadığında ise no çıktısını verir. root olarak sorgulama yapmak hiçbir şeyi kanıtlamaz, çünkü root denetimi atlar ve cevap her zaman yes olur.
FAQ
Linux'ta drwxr-xr-x ne anlama gelir?
Bu, en baştaki d karakteriyle belirtildiği üzere bir dizindir ve 755 modundadır. Sahip üçlüsü rwx şeklindedir, yani dosya sahibi dizin üzerinde tüm yetkilere sahiptir. Grup üçlüsü r-x, diğer kullanıcılar üçlüsü ise r-x şeklindedir; bu sayede diğer herkes dizin içeriğini listeleyebilir ve dizin içine girebilir, ancak dosya sahibi dışında hiç kimse dizine yeni bir öğe ekleyemez veya mevcut olanı silemez. Herhangi bir yolu stat -c '%A %a %U %G %n' <path> ile doğrulayabilirsiniz; bu komut hem harf hem de sekizlik (octal) biçimindeki izinleri yan yana yazdırır.
Web dosyaları neden 644, web dizinleri neden 755 olmalıdır?
Web sunucusu, Ubuntu üzerinde www-data gibi farklı bir kullanıcı hesabı altında çalışır. Sunucunun sunduğu dosyaları okuması ve bu dosyaların bulunduğu dizinlere erişebilmesi gerekir; ancak hiçbir dosyayı veya dizini yazma yetkisiyle değiştirmesine gerek yoktur. 644 modu, dosya sahibine yazma yetkisi verirken diğerlerine yalnızca okuma yetkisi tanır. 755 modu ise dosya sahibine yazma yetkisi verirken diğerlerine dizin içine girme (traverse) yetkisi tanır. Uygulamanın gerçekten yazması gereken bir dizin varsa, izinleri herkes için genişletmek yerine, dizin sahipliği chown ile ilgili uygulama kullanıcısına devredilmelidir.
x biti bir dizini çalıştırabileceğim anlamına mı gelir?
Hayır. Bir dizin üzerinde x, dizin içine girme (traverse) yetkisini ifade eder; bu, çekirdek bir dosya yolunu takip ederken dizin içindeki bir ismi çözümleme hakkıdır. cd komutu ve altındaki herhangi bir dosyayı açma işlemi bu yetkiye ihtiyaç duyar. Yol üzerindeki her dizinin x yetkisine sahip olması gerekir; bu nedenle, üst dizinlerden biri sizden x yetkisini esirgerse, 644 modundaki bir dosyaya erişemezsiniz. namei -l /path/to/file komutu, dizin zincirindeki her dizinin modunu yazdırarak aramanın nerede kesildiğini gösterir.
chmod 777 hiçbir zaman doğru çözüm müdür?
Sunucu ortamında neredeyse hiçbir zaman doğru değildir. Bu komut, makinedeki tüm hesaplara yazma yetkisi verir; buna servislerin altında çalıştığı hesaplar da dahildir. Bu durum, güvenliği ihlal edilen bir servisin dosyayı yeniden yazmasına olanak tanır. Bir uygulama bir dizine yazamadığında, asıl sorun genellikle sahiplik ayarıdır: 755 modundaki sudo chown -R appuser:appuser /srv/app/storage, uygulamaya ihtiyacı olan yetkiyi verirken diğer herkesi dışarıda tutar. Bilinen tek istisna 1777 modundaki /tmp dizinidir; bu da yalnızca "sticky bit" (yapışkan bit) sayesinde kullanıcıların birbirlerinin dosyalarını silmesini engellediği için güvenli çalışır.
ls komutu izinlerden sonra neden nokta veya artı işareti yazdırır?
On birinci karakter, dokuz izin bitinin ötesindeki kuralları tanımlar. drwxr-xr-x. örneğindeki gibi bir nokta, Fedora ve Rocky üzerinde normal olan bir SELinux güvenlik bağlamının (context) eklendiği anlamına gelir. drwxr-xr-x+ örneğindeki gibi bir artı işareti ise bir POSIX ACL (erişim denetim listesi) tanımlandığını gösterir; bu durumda bazı kullanıcı veya gruplar, üçlü izin gruplarının göstermediği ek haklara sahiptir. Bu ek girdileri listelemek için getfacl <path> komutunu çalıştırın.