chmod Hesaplayıcı

Linux dosya izinlerini iki yönde hesaplayın. Sahip, grup ve diğer herkes için okuma, yazma ve çalıştırma izinlerini işaretleyin; sekizli modu ve çalıştırılacak komutu alın. Ya da 755, rwxr-xr-x, u+x veya bir ls -l satırının tamamını yapıştırın ve ne anlama geldiğini tam olarak görün.

Tarayıcınızda hesaplanır · hiçbir yere bir şey gönderilmez · POSIX ve GNU coreutils davranışı
Dosyalar
Dizinler

755 yazın, rwxr-xr-x ya da bir ls -l satırının tamamını yapıştırın veya modu u+x ya da go-w ile değiştirin.

Tür
Okuma4Yazma2Çalıştırma1Basamak
Sahip4+2+1=7
Grup4+1=5
Diğer herkes4+1=5
Özelhiçbir şey=0

Sade bir dille

  • Sahip onu okuyabilir, onu değiştirebilir ve onu çalıştırabilir.
  • Grup ve diğer herkes onu okuyabilir ve onu çalıştırabilir.
  • Bu dosya çalıştırılabilir.

Tarayıcınızda hesaplanır. Hiçbir yere bir şey gönderilmez.

chmod ne yapar?

chmod, bir dosyayı kimin okuyabileceğini, yazabileceğini ve çalıştırabileceğini belirler. Bir mod on iki bittir ve genellikle üç ya da dört sekizli basamak olarak yazılır: 755, 644, 2775.

Üç basamağın her biri bir sınıfa aittir: dosyanın sahibi, dosyanın grubu ve diğer herkes. Her basamak da üç sayının toplamıdır: okuma 4, yazma 2, çalıştırma 1. Yani 7 okuma, yazma ve çalıştırmadır; 5 okuma ve çalıştırma; 6 okuma ve yazma; 4 yalnızca okumadır. Sistemin tamamı bu kadar. chmod 755 script.sh şunu söyler: sahip 7, grup 5, diğerleri 5.

Dördüncü basamak, varsa, üç özel biti taşır: setuid 4, setgid 2 ve sticky bit 1. Hiçbiri ayarlı değilse yazılmaz. Yukarıdaki hesaplayıcı dört basamağı ve her birinin ardındaki aritmetiği aynı anda gösterir; böylece sayıları aramayı bırakabilirsiniz.

Bir mod on iki bittirchmod 755 script.sh
Öncescript.sh
Özels4s2t10
Sahipr4w2x16
Grupr4w2x14
Diğer herkesr4w2x14
-rw-r--r--0644
Sonrascript.sh
Özels4s2t10
Sahipr4w2x17
Grupr4w2x15
Diğer herkesr4w2x15
-rwxr-xr-x0755
chmod 755 modun her bitini bir kerede ayarlar: 644'ten başlayınca her sınıf için bir tane olmak üzere üç x bitini açar. Her sınıfın üç biti toplanıp bir sekizli basamak olur.
755 modunu bir izin ızgarası, sekizli basamakları, sembolik biçimi ve chmod komutuyla gösteren chmod hesaplayıcı755 modunu bir izin ızgarası, sekizli basamakları, sembolik biçimi ve chmod komutuyla gösteren chmod hesaplayıcıİşaretleyin ya da yazınIzgara ve alanlar aynı şeydir: birini değiştirin, gerisi onu izler.Her basamakHer sınıf için 4 + 2 + 1; böylece sayı ezberlenecek bir şey olmaktan çıkar.Her şeyi yapıştırın755, rwxr-xr-x, u+x ya da bir ls -l satırının tamamı: dördünü de okur.KomutSeçtiğiniz moddan, doğru basamak sayısıyla ve dosyalarınızı düzleştirmeyen özyinelemeli bir biçimle üretilir.Ne anlama geldiğiSade bir cümle ve o modun hak ettiği uyarılar.
755 modu parça parça: ızgara, her basamağın ardındaki aritmetik, sembolik biçim ve çalıştırılacak komut. Her bölümün neyi gösterdiğini görmek için bir numara seçin.

Linux dosya izinleri nasıl çalışır

Her dosyanın bir sahibi, bir grubu ve bir modu vardır. Mod, üç sınıfın her birine üç izin verir; bu dokuz bittir ve dosya türü karakterinin hemen ardından ls -l tam olarak bu dokuz karakteri yazdırır.

-rw-r--r--, sahibinin okuyup yazabildiği, grubunun ve diğer herkesin yalnızca okuyabildiği bir dosyadır (-): mod 644. drwxr-xr-x ise 755 modunda bir dizindir (d). İlk karakter türdür: - dosya, d dizin, l sembolik bağlantı; b, c, p ya da s özel türler içindir. Bu satırlardan herhangi birini hesaplayıcıya yapıştırın; moddan ve türden okur.

Bir dizinde üç iznin anlamı bir dosyadakinden farklıdır. Okuma, içindeki adları listelemenizi sağlar. Çalıştırma biti (x), içine girmenizi ve adını bildiğiniz dosyalara ulaşmanızı sağlar. Yazma, x ile birlikte kayıt oluşturmanızı ve silmenizi sağlar; bir dosyayı silmenin dosyanın değil dizinin izinlerine bağlı olmasının nedeni budur. Okuma izni olup x biti olmayan bir dizin, listeleyebildiğiniz ama açamadığınız bir dizindir.

ls -l'in ilk yazdığı şeyls -l notes.txt
İzinBir dosyadaBir dizinde
r4İçindekini okumaİçindeki adları listeleme
w2İçindekini değiştirmeKayıt oluşturma, yeniden adlandırma ve silme
x1Program olarak çalıştırmaİçine girme ve içindekileri açma

Diğer ilk karakterler: d dizin, l sembolik bağlantı; b, c, p ya da s özel türler.

chmod 755 ne anlama gelir?

755, sahibin dosyayı okuyup yazabileceği ve çalıştırabileceği, diğer herkesin ise okuyup çalıştırabileceği ama değiştiremeyeceği anlamına gelir. Bir dizin ve bir program için olağan moddur.

Basamak basamak: 7 = 4 + 2 + 1, yani sahip okur, yazar ve çalıştırır. Grup için 5 = 4 + 1, diğer herkes için de aynısı; ikisi de okur ve çalıştırır. Harflerle rwxr-xr-x, sembolik komut olarak chmod u=rwx,g=rx,o=rx yazılır.

Kişilerin girebilmesini istediğiniz dizinler ile çalıştırabilmesini istediğiniz betikler ve ikili dosyalar için kullanın. Gizli hiçbir şey için kullanmayın: sondaki 5, makinedeki her hesabın dosyayı okuyabileceği anlamına gelir. Bir web sunucusunun dosyaları için WordPress'in kendi belgeleri dizinlerde 755 ya da 750, dosyalarda 644 ya da 640 önerir.

755, basamak basamakchmod 755
7=r4w2x14+2+1rwxSahip
5=r4-2x14+1r-xGrup
5=r4-2x14+1r-xDiğer herkes
Şunlar için kullanın
  • Kişilerin girmesi gereken dizinler
  • Betikler ve programlar
Şunlar için değil
  • Gizli hiçbir şey: herkes okuyabilir

WordPress'in kendi belgeleri: dizinler 755 ya da 750, dosyalar 644 ya da 640.

chmod 644 ile 755 karşılaştırması: hangisi gerekli?

Dosyalar için 644, dizinler ve çalışması gereken her şey için 755. Tek fark çalıştırma bitidir.

644, rw-r--r-- demektir: sahip değiştirebilir, herkes okuyabilir, kimse çalıştıramaz. HTML, CSS, görseller, yapılandırma ve kaynak dosyaları için doğrusu budur. 755, rwxr-xr-x demektir: aynısı, ayrıca üç sınıf için de çalıştırma biti. Bir dizin buna ihtiyaç duyar, yoksa kimse dizine giremez; bir betik de buna ihtiyaç duyar, yoksa kabuk onu çalıştırmayı reddeder.

Kaçınmaya değer hata, bir sitenin tamamında chmod -R 755 kullanmaktır; bu her görseli ve her .php dosyasını çalıştırılabilir yapar. Hesaplayıcının yazdığı iki find komutu, dizinlere ve dosyalara tek geçişte farklı modlar verir; üstelik bir blog yazısındaki hazır bir çift yerine sizin gerçekten seçtiğiniz modlarla.

Tek fark çalıştırma bitidir644 · 755
644
OkumaYazmaÇalıştırma
Sahiprw-6
Grupr--4
Diğerlerir--4

Dosyalar: HTML, CSS, görseller, yapılandırma, kaynak kodu

755
OkumaYazmaÇalıştırma
Sahiprwx7
Grupr-x5
Diğerlerir-x5

Dizinler, betikler ve programlar

Ters çevrilmiş hali
  • 755755 olan bir dosya çalıştırılabilir; bir chmod -R 755 altındaki her görsel ve .php dosyası da öyle.
  • 644644 olan bir dizin adlarını gösterir, ama kimse içine giremez ya da içindekini açamaz.

chmod 777 ne yapar ve güvenli mi?

777, makinedeki her hesabın dosyayı okumasına, değiştirmesine ve çalıştırmasına izin verir. Neredeyse hiçbir zaman doğru cevap değildir ve WordPress'in kendi belgeleri hiçbir dizine asla verilmemesi gerektiğini söyler.

Herkesin yazabildiği bir dosya, oturum açabilen herkesin ya da herhangi bir kullanıcı olarak çalışan her şeyin (ele geçirilmiş bir süreç dahil) dosyanın içeriğini değiştirebileceği anlamına gelir. Bu dosya web sunucusunun çalıştırdığı bir betikse sunucuyu teslim etmiş olursunuz. WordPress'in izinler sayfası dizinler için 755 ya da 750, dosyalar için 644 ya da 640 önerir ve hiçbir dizinin, yükleme dizininin bile, asla 777 olmaması gerektiğini söyler.

Bir web uygulaması bir dizine yazamadığında çözüm mod değil, sahip ya da gruptur: dizinin sahibini web sunucusunun çalıştığı kullanıcıya chown ile verin ya da o kullanıcıyı ortak bir gruba ekleyip 775 kullanın. Hesaplayıcı, bir mod herkese yazma izni verdiğinde uyarır: bir dosyada her zaman, bir dizinde ise sticky bit insanların birbirinin dosyalarını silmesini engellemiyorsa.

777'de kimler yazabilirchmod 777
777Herkes değiştirebilir
OkumaYazmaÇalıştırma
Sahiprwx7
Gruprwx7
Diğerlerirwx7
  1. 1Herhangi bir hesap ya da onun olarak çalışan herhangi bir süreç
  2. 2betiği değiştirir
  3. 3ve web sunucusu onu çalıştırır
Belgelerin istediği

WordPress · Dizinler 755 ya da 750, dosyalar 644 ya da 640.

“Yükleme dizinleri dahil hiçbir dizine asla 777 verilmemelidir.”

Çözüm mod değil, sahip ya da gruptur: onu web sunucusunun kullanıcısına chown ile verin ya da bir grubu paylaşıp 775 kullanın.

SSH neden anahtar izinlerimin fazla açık olduğunu söylüyor?

OpenSSH, sahibinden başka kimsenin okuyabildiği bir özel anahtarı kullanmayı reddeder. Anahtarı 600, .ssh dizinini 700 yapın.

Tam mesaj Permissions 0644 for '<path>' are too open. ve ardından It is required that your private key files are NOT accessible by others. şeklindedir. Arkasındaki sınama sertçe işler: dosyanın sahibi sizseniz ve grup ya da diğer bitlerden herhangi biri ayarlıysa anahtar reddedilir. 640'ın da başarısız olmasının ve cevabın “644'ten biraz daha az” değil 600 olmasının nedeni budur.

chmod 600 ~/.ssh/id_ed25519 ve chmod 700 ~/.ssh sorunu çözer. Genel anahtarı herkes okuyabilir; burada yalnızca özel anahtar ve dizin önemlidir. Yukarıdaki yaygın modlardan SSH anahtarı'nı seçin; hesaplayıcı iki komutu da sizin için yazar.

ssh'ın yazdırdığı
$ssh you@server.example
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
OpenSSH neyi denetler
Dosyalar ve geçen modlar
  • ~/.ssh/700drwx------Dizin
  • id_ed25519600-rw-------Özel anahtarınız
  • id_ed25519.pub644-rw-r--r--Genel anahtar: herkes okuyabilir
  • config600-rw-------Başkaları yazamaz
Sınama, bit bit
  • 644rw-r--r--Reddedilir
  • 640rw-r-----Reddedilir
  • 600rw-------Kullanılır
  • 400r--------Kullanılır

Grup ve diğer herkes: hepsi kapalı olmalı

Sembolik mod: u, g, o, a ile +, - ve =

chmod u+x script.sh, gerisine dokunmadan tek bir bit ekler. + ekler, - kaldırır, = bir sınıfı tam olarak yazdığınız izinlere ayarlar.

Dilbilgisi [kim][işleç][izinler] biçimindedir ve ifadeler virgülle ayrılır: u sahip, g grup, o diğer herkes, a üçü birden. Yani go-w gruptan ve diğerlerinden yazma iznini alır, a=rwx her şeyi ayarlar, u=rw,go=r ise 644'ü yazmanın başka bir yoludur. Bunlardan herhangi birini yukarıdaki hesaplayıcıya yapıştırın; hangi bitlerin değiştiğini önce ve sonra olarak gösterir.

Dilbilgisinin iki yeri kolayca yanlış anlaşılır ve hesaplayıcı ikisine de uyar. X, yani büyük harf X, çalıştırma bitini yalnızca bir dizine ya da zaten bir yerinde çalıştırılabilir olan bir dosyaya ekler; karışık bir ağaçta chmod -R u=rwX,go=rX komutunu güvenli kılan budur. Ayrıca hiç sınıf belirtilmeyen bir ifade, örneğin +x, a+x ile aynı değildir: umask'ta ayarlı bitlere dokunulmaz; bu yüzden olağan 022 umask'ıyla 644 bir dosyada chmod +rwx 755 verirken chmod a+rwx 777 verir.

kim · işleç · izinlerchmod u+x script.sh
  • usahip
  • ggrup
  • odiğer herkes
  • aüçü birden
  • +ekle
  • -kaldır
  • =tam olarak şuna ayarla
  • rokuma
  • wyazma
  • xçalıştırma
  • Xçalıştırma, yalnızca dizinlerde ve zaten çalışabilen dosyalarda
  • ssetuid ya da setgid
  • tsticky
Çözümlü örnekler
DeğişiklikÖnceSonra
u+x644rw-r--r--744rwxr--r--Sahip için çalıştırma; başka hiçbir şeye dokunulmaz.
go-w775rwxrwxr-x755rwxr-xr-xGruptan ve diğer herkesten yazma izni alınır.
a=r755rwxr-xr-x444r--r--r--Üçü de yalnızca okumaya ayarlanır, başka hiçbir şey olmaz.
u=rw,go=r777rwxrwxrwx644rw-r--r--Üç ifade: 644'ü yazmanın başka bir yolu.
+rwx644rw-r--r--755rwxr-xr-xSınıf yok: umask'taki (022) bitler ayarlanmaz; bu yüzden grup ve diğer herkes yazma izni almaz.
a+rwx644rw-r--r--777rwxrwxrwxa ile umask sayılmaz: her şey ayarlanır.
a+Xbir dizinde644rw-r--r--755rwxr-xr-xBir dizinde büyük harf X: dizin olduğu için çalıştırma eklenir.
a+Xbir dosyada644rw-r--r--644rw-r--r--Kimsenin çalıştıramadığı bir dosyada büyük harf X: hiçbir şey eklenmez.

Setuid, setgid ve sticky bit

Dördüncü basamak. Bir dosyada setuid ve setgid, bir programın hangi hesapla çalışacağını değiştirir. Bir dizinde setgid yeni dosyaların grubunu, sticky bit ise onları kimin silebileceğini belirler.

Bir çalıştırılabilir dosyadaki Setuid (4000), onu sizin olarak değil dosyanın sahibi olarak çalıştırır; passwd, parolanızı değiştirirken root'un haklarıyla çalışabilsin diye setuid kurulur. Setgid (2000) aynısını grup için yapar. Bir dizinde setgid farklı ve çok daha yararlı bir şey yapar: içindeki yeni dosyalar oluşturanın değil dizinin grubunu devralır; ortak bir proje klasörü böyle ortak kalır. Linux, bir dizindeki setuid bitine hiçbir anlam vermez; macOS'ta ve BSD'lerde, dosya sistemi bu seçenekle bağlanmışsa yeni dosyaların dizinin sahibine ait olmasını sağlayabilir.

Bir dizindeki sticky bit (1000), insanların birbirinin dosyalarını silmesini engeller: bir kaydı yalnızca dosyanın sahibi, dizinin sahibi ya da root silebilir veya yeniden adlandırabilir. /tmp tam da bu nedenle 1777 modundadır: herkes içine yazabilir, kimse başkasının işini silemez. Sıradan bir dosyada macOS ve BSD'ler sticky biti yok sayar; GNU'nun kılavuzu ona orada yalnızca bazı eski sistemlerde bir anlam verir. Bir tuzak: chmod 755 somedir ya da chmod 0755 somedir, bir dizinde zaten ayarlı olan setgid bitini temizlemez; çünkü GNU chmod, beş basamaktan kısa her sayısal modda bu bitleri kasıtlı olarak korur. POSIX, sekizli biçimin yalnızca sıradan bir dosyada bunları temizlemesini şart koşar. g-s ya da beş basamaklı chmod 00755 kullanın; hesaplayıcı, buna ihtiyaç duyduğunuzda beş basamaklı biçimi sizin için yazar.

Setuid4755

Bir program sizin olarak değil, dosyanın sahibi olarak çalışır.

Linux-rwsr-xr-x root root /usr/bin/passwd

passwd bu şekilde kurulur; bu yüzden parolanızı değiştirirken root'un haklarıyla çalışır.

Bir dizinde: Linux'ta belgelenmiş bir anlamı yok. macOS'ta ve BSD'lerde, dosya sistemi bu seçenekle bağlanmışsa yeni dosyalar dizinin sahibini alır.

Setgid2775

Bir dizinde, yeni dosyalar sizin grubunuzu değil dizinin grubunu alır.

Linuxdrwxrwsr-x you devs project/

Ortak bir proje dizini ortak kalır: her yeni dosya ekibe aittir.

macOS'ta ve BSD'lerde yeni bir dosya, bu bit olsa da olmasa da her zaman dizininin grubunu alır.

Sticky1777

Bir dizinde, bir dosyayı yalnızca dosyanın sahibi, dizinin sahibi ya da root silebilir veya yeniden adlandırabilir.

macOSdrwxrwxrwt root wheel /private/tmp

Herkes /tmp içine yazabilir ve kimse başkasının dosyalarını silemez.

Bir dosyada sticky bit macOS'ta ve BSD'lerde yok sayılır.

GNU tuzağı: bir dizinde chmod 755, dizinin setgid bitini açık bırakır.

$chmod 755 project → drwxr-sr-xBeş basamakla ya da harflerle temizleyin:$chmod 00755 project → drwxr-xr-x$chmod g-s project → drwxr-xr-x

umask: yeni dosyalar ne alır

Yeni bir dosya 666'dan, yeni bir dizin 777'den başlar ve umask'ta ayarlı her bit kapatılır. Olağan 022 umask'ı 644 ve 755 verir.

umask bir çıkarma değil, bir maskedir: umask'ta ayarlı her bit, programın istediği modda kapatılır. umask 077 ile yeni bir dosya 600, yeni bir dizin 700 olur; varsayılan olarak özeldir. umask 002 ile 664 ve 775 elde edersiniz: grup da yazabilir.

Bir umask hiçbir zaman bir dosyayı çalıştırılabilir yapamaz, çünkü bir dosyanın temel modunda baştan hiç x biti yoktur; yalnızca dizinler 777'den başlar. Yeni oluşturduğunuz bir betiğin, siz chmod +x diyene kadar çalıştırılamamasının nedeni budur. Herhangi bir umask'ın ne ürettiğini görmek için yukarıdaki umask sekmesine geçin ve sonucu doğrudan hesaplayıcıda açın.

Bit bit kapatılırumask 022
Yeni bir dosya
Başlangıçrw-rw-rw-666
umask····w··w·022
Sonuçrw-r--r--644
Yeni bir dizin
Başlangıçrwxrwxrwx777
umask····w··w·022
Sonuçrwxr-xr-x755
Yaygın umask değerleri
umaskYeni dosyaYeni dizin
022644 rw-r--r--755 rwxr-xr-x
002664 rw-rw-r--775 rwxrwxr-x
027640 rw-r-----750 rwxr-x---
077600 rw-------700 rwx------

Hiçbir umask bir dosyayı çalıştırılabilir yapamaz: yeni bir dosya korunacak bir x biti olmadan başlar.

Bir klasörü ve içindeki her şeyi nasıl değiştirirsiniz

chmod -R 755 folder, dizinlere ve dosyalara aynı modu verir; bu da her dosyayı çalıştırılabilir yapar. İki find komutu her türe olması gereken modu verir.

find folder -type d -exec chmod 755 {} + ve find folder -type f -exec chmod 644 {} + ağacı ikişer kez gezer ve dizinleri ile dosyaları ayrı ayrı ayarlar. Hesaplayıcı ikisini de sabit bir çift ile değil, seçtiğiniz modlarla yazar. Sondaki +, dosyaları mümkün olan en az sayıda chmod çalıştırmasında toplar; bu, büyük bir ağaçta önem taşır.

Diğer güvenli yol büyük harf X'tir: chmod -R u=rwX,go=rX folder, çalıştırma bitini yalnızca dizinlere ve zaten çalışabilen dosyalara ekler. Her özyinelemeli değişiklikten sonra stat -c '%a %n' folder/* bir seviye aşağıdaki her şeyi geri okur.

Bir klasör, dört yol
KlasörŞimdi1234
site/755755644755755
index.html644755644644644
app.php644755644644644
deploy.sh755755644644755
img/755755644755755
logo.png644755644644644
  1. 1$chmod -R 755 siteHer dosya çalıştırılabilir
  2. 2$chmod -R 644 siteHiçbir klasöre girilemez
  3. 3$find site -type d -exec chmod 755 {} +$find site -type f -exec chmod 644 {} +Her tür kendi modunu alırBir betik de x bitini kaybeder
  4. 4$chmod -R u=rwX,go=rX siteHer tür kendi modunu alırZaten çalışabilen bir dosya x bitini korur

Windows'ta chmod var mı?

Aynısı yok. Windows erişim denetim listeleri kullanır ve en yakın komut icacls'dir: icacls file /grant Users:(RX).

NTFS izinleri, her biri bir kullanıcıyı ya da grubu ve sahip olduğu hakları adlandıran girdilerden oluşan bir listedir; bu yüzden hesaplanacak tek bir üç basamaklı sayı yoktur. En yakın çeviri sınıf başınadır: okuma R, okuma ve çalıştırma RX, yazma W olur; tek başına çalıştırma ise özel X hakkına dönüşür. İki hak gerektiren bir basamak ikisini de listeler: 7, (RX,W) olur. Hiçbir basamak, silmeye de izin veren Modify (M) ya da izinleri değiştirmeye ve sahipliği devralmaya da izin veren Full control (F) değildir. Hesaplayıcı bu eşlemeyi modunuzun yanında gösterir; bu en yakın uyumdur, bir eşdeğer değil.

Linux için Windows Alt Sistemi (WSL) içinde chmod, Linux dosya sisteminde düzgün çalışır. /mnt/c altına bağlanmış bir Windows sürücüsünde ise yalnızca o sürücü metadata seçeneğiyle bağlandığında çalışır. O seçenek olmadan mod, Windows haklarınızdan hesaplanır ve sahip, grup ve diğer herkes için aynıdır; chmod da salt okunur özniteliğini ayarlamaktan fazlasını yapamaz. Bu yüzden Windows tarafında tutulan bir anahtar fazla açık görünebilir ve chmod 600 orada sorunu çözmez.

Her chmod basamağı ve en yakın icacls hakkıicacls
BasamakHarflerEn yakın hak
7rwx(RX,W)Okuma, yazma ve çalıştırma
6rw-(R,W)Okuma ve yazma
5r-x(RX)Okuma ve çalıştırma
4r--(R)Okuma
3-wx(W,X)Yazma ve çalıştırma
2-w-(W)Yazma
1--x(X)Çalıştırma
0---—Erişim yok

En yakın uyum, bir eşdeğer değil: Windows, her biri kimin hangi hakları alacağını belirten girdilerden oluşan bir liste tutar. Hiçbir basamak, silmeye de izin veren Modify (M) ya da izinleri değiştirmeye (WDAC) ve sahipliği devralmaya (WO) da izin veren Full control (F) değildir. Her iki sistemde de sahip bir dosyanın izinlerini her zaman değiştirebilir.

WSL'de
  • /homeLinux dosya sisteminde: chmod herhangi bir Linux'taki gibi çalışır.
  • /mnt/cmetadata seçeneği olmayan /mnt/c üzerinde: modlar Windows haklarından gelir ve chmod neredeyse hiçbir şeyi değiştirmez.
  • /mnt/c · metadatametadata ile: chmod çalışır, ama Windows'un izin verdiğinin ötesine asla geçemez.

Bir dosyanın izinleri nasıl kontrol edilir

ls -l izinleri harfler olarak, stat ise bir sayı olarak gösterir. İkisinden birini hesaplayıcıya yapıştırın; modu geri okur.

ls -l file, -rw-r--r-- 1 you staff 4096 25 Oct 09:26 file yazdırır ve hesaplayıcı satırın tamamını alır; modu içinden sizin ayıklamanız gerekmez. stat -c '%a %n' file Linux'ta 644 file yazdırır; macOS'ta aynı şey stat -f '%Lp %N' file ile yapılır. Bir dizinin tamamı için GNU find . -maxdepth 1 -printf '%m %p\n' her modu sayı olarak listeler (macOS'un find komutunda -printf yoktur).

İzin dizesinin sonundaki bir +, dokuz bitten fazlası olduğu anlamına gelir: Linux'ta bu bir POSIX ACL'dir ve getfacl onu gösterir; bu ek girdiler modun içinde hiç yer almaz. macOS'ta @ genişletilmiş öznitelikler, + ise genişletilmiş güvenlik bilgisi demektir. GNU ls ile bir nokta (.) bir güvenlik bağlamı, örneğin SELinux'unki, demektir. Hesaplayıcı üç işareti de kabul eder ve modun hikâyenin yalnızca bir parçası olduğunu söyler.

Bir ls -l satırı, alan alanls -l notes.txt
-Türrw-r--r--İzinler+İşaret1BağlantılaryouSahipstaffGrup4096Boyut25 Oct 09:26Değişikliknotes.txtAd
Sayı olarak mod
  • Linux$stat -c '%a %n' notes.txt644 notes.txt
  • macOS$stat -f '%Lp %N' notes.txt644 notes.txt
Moddan sonraki karakter
  • -rw-r--r--+Linux: bir POSIX ACL (getfacl listeler). macOS: ACL gibi genişletilmiş güvenlik bilgisi.
  • -rw-r--r--@macOS: genişletilmiş öznitelikler.
  • -rw-r--r--.GNU ls: SELinux'unki gibi bir güvenlik bağlamı ve başka bir şey değil.
  • -rw-r--r-- Başka bir şey yok: dokuz bit hikâyenin tamamıdır.

chmod hesaplayıcı: sorular ve cevaplar

chmod 755 ne anlama gelir?

Sahibe okuma, yazma ve çalıştırma; diğer herkese okuma ve çalıştırma verir. Harflerle rwxr-xr-x yazılır. Basamaklar toplamdır: 7, 4 + 2 + 1; 5 ise 4 + 1'dir. Kimse girmeden önce x biti gerektiren dizinler ile betikler ve programlar için kullanın. Gizli kalması gereken bir dosya için asla.

chmod 644 ile 755 arasındaki fark nedir?

Her sınıf için bir bit: çalıştırma biti. 644, rw-r--r-- demektir ve belgeler, görseller, yapılandırma ve kaynak dosyaları için doğrudur. 755, rwxr-xr-x demektir ve dizinler ile çalışması gereken her şey için doğrudur. Dosyalara 755 vermek her birini çalıştırılabilir yapar; bu yüzden bir web sitesinde özyinelemeli chmod -R 755 bir hatadır. Dizinleri ve dosyaları ayrı ayrı ayarlayın.

chmod 777 ne yapar ve güvenli mi?

Makinedeki her hesabın dosyayı okumasına, değiştirmesine ve çalıştırmasına izin verir. Neredeyse hiç gerekmez ve paylaşılan ya da internete açık bir sunucuda gerçek bir risktir: sunucunun çalıştırdığı bir betiği yazabilen her şey sunucuyu ele geçirebilir. WordPress'in kendi belgeleri 755 ya da 750 ile 644 ya da 640 ister ve hiçbir dizinin asla 777 olmaması gerektiğini söyler. Bir uygulama bir yere yazamadığında modu değil, sahibi ya da grubu değiştirin.

chmod +x ne yapar?

Bir dosyanın çalıştırılabilmesi için çalıştırma bitini ekler. Sınıfsız +x'in tam olarak a+x olmadığına dikkat edin: sınıf belirtilmeyen bir ifade umask'taki bitlere dokunmaz; bu yüzden olağan 022 umask'ıyla sahip, grup ve diğerlerinin hepsi çalıştırma izni alır, 077 gibi daha sıkı bir umask ise bunu yalnızca sahibe verir. Hangisini istediğinizden emin olmak için chmod a+x ya da chmod u+x yazın.

chmod 600 ne anlama gelir ve SSH neden bunu ister?

600, rw------- demektir: dosyayı yalnızca sahip okuyabilir ya da değiştirebilir. OpenSSH, başka herhangi bir hesabın okuyabildiği bir özel anahtarı Permissions 0644 for '<path>' are too open. mesajıyla reddeder. Denetim katıdır: dosyanın sahibi sizseniz ve grup ya da diğer bitlerden herhangi biri ayarlıysa anahtar reddedilir; bu yüzden 640 da başarısız olur. Anahtara chmod 600, ~/.ssh dizinine chmod 700 uygulayın.

chmod'daki dördüncü basamak ne anlama gelir?

Üç özel biti taşır: setuid 4, setgid 2 ve sticky bit 1. chmod 2775 folder, içindeki yeni dosyaların klasörün grubunu alması için setgid ayarlar. chmod 1777 folder, insanların birbirinin dosyalarını silememesi için sticky biti ayarlar; /tmp bunu kullanır. Hiçbiri ayarlı değilse basamak yazılmaz.

chmod 755 klasörümdeki setgid bitini neden kaldırmadı?

Çünkü GNU chmod, sayısal mod beş basamaktan kısa olduğunda, 0755 dahil, bir dizindeki setuid ve setgid bitlerini korur. Bu kasıtlıdır ve standarda uygundur: POSIX, sekizli biçimin yalnızca sıradan bir dosyada bu bitleri temizlemesini şart koşar. Sembolik biçim chmod g-s folder kullanın ya da baştaki sıfırları chmod 00755 folder diye yazın. Bu hesaplayıcı, değişikliğinizin buna ihtiyacı olduğunda beş basamaklı biçimi otomatik olarak yazar.

chmod ile chown arasındaki fark nedir?

chmod, sahibin, grubun ve diğer herkesin ne yapabileceğini belirler. chown ise sahibin ve grubun gerçekte kim olduğunu belirler. Aynı sorunun farklı yarılarına cevap verirler ve bir web sunucusundaki “permission denied” çoğu zaman bir mod değil, sahiplik sorunudur: dosyalar yanlış kullanıcıya aittir ve 777'den başka hiçbir mod bunu örtemez.

Bu hesaplayıcıya bir ls -l satırı yapıştırabilir miyim?

Evet; yalnızca modu değil, satırın tamamını. -rw-r--r-- 1 you staff 4096 25 Oct 09:26 notes.txt bir dosyada 644 modu olarak, drwxrwsr-x ise bir dizinde 2775 olarak okunur. ACL işareti +, güvenlik bağlamı noktası ve macOS'un @ işareti de anlaşılır. u+x ya da go-w gibi bir işleç ifadesi yapıştırıp hangi bitleri değiştirdiğini de izleyebilirsiniz.

İzinlerden sonraki + veya @ ne anlama gelir?

Dokuz bitin hikâyenin tamamı olmadığını söylerler. Linux'ta +, dosyanın sahip, grup ve diğerlerinin ötesinde girdileri olan bir POSIX ACL'ye sahip olduğu anlamına gelir; getfacl onları gösterir ve onlar modun parçası değildir. GNU ls ile bir nokta, örneğin SELinux'unki gibi bir güvenlik bağlamı demektir. macOS'ta @ genişletilmiş öznitelikler, + ise genişletilmiş güvenlik bilgisi demektir. Mantıklı bir moda rağmen izinler tuhaf davranıyorsa oraya bakın.

Windows'ta chmod'un bir eşdeğeri var mı?

Windows bir mod yerine erişim denetim listeleri kullanır; bu yüzden birebir bir eşdeğer yoktur. icacls file /grant Users:(RX) en yakın komuttur ve hesaplayıcı modunuz için en yakın hakları gösterir. WSL içinde chmod, Linux dosya sisteminde normal çalışır; ancak /mnt/c altındaki bir Windows sürücüsünde, sürücü metadata seçeneğiyle bağlanmadıkça neredeyse hiçbir etkisi olmaz.

umask 022 bana ne verir?

Yeni bir dosya için 644, yeni bir dizin için 755. Yeni bir dosya 666'dan, bir dizin 777'den başlar ve umask'ta ayarlı her bit kapatılır. Bir dosya hiçbir zaman x biti ile başlamadığından hiçbir umask onu çalıştırılabilir yapamaz; bu her zaman sonradan yapılan bir chmod +x'tir. Herhangi bir değeri denemek ve sonucu hesaplayıcıda açmak için yukarıdaki umask sekmesini kullanın.

Eksik bir şey mi var?Bir özellik ya da yeni bir araç önerin