Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

Chmod ile chown arasındaki fark nedir?​


chmod dosya veya klasörün izinlerini, chown ise sahibini ve grubunu değiştirir. Linux ve macOS'ta erişim kararı bu iki bilginin yanı sıra dosya yolundaki klasör izinlerine ve kullanıcının kimliğine göre verilir. Sahip/grup kimliği ile o kimliklere verilen izinler birlikte değerlendirilir; ACL, üst dizinler ve ek güvenlik politikaları da erişimi etkileyebilir.

chmod neyi değiştirir?​


chmod; okuma (r), yazma (w) ve çalıştırma (x) izinlerini kullanıcı (u), grup (g) ve diğer kullanıcılar (o) için düzenler.

Örneğin:

Kod:
chmod 640 rapor.txt

640 değeri şu anlama gelir:

  • Sahip: 6 = okuma ve yazma (rw-)
  • Grup: 4 = yalnızca okuma (r--)
  • Diğer kullanıcılar: 0 = erişim yok (---)

Bir dosyaya çalıştırma izni eklemek için sembolik biçim de kullanılabilir:

Kod:
chmod u+x script.sh

Bu komut yalnızca dosyanın sahibine çalıştırma izni ekler. chmod sahibini, grubunu veya dosyanın içeriğini değiştirmez.

chown neyi değiştirir?​


chown, dosyanın kullanıcı sahibini ve isteğe bağlı olarak grubunu değiştirir:

Kod:
chown ali:gelistiriciler rapor.txt

Bu komut dosyanın sahibini ali, grubunu gelistiriciler yapmayı dener. Yalnızca grubu değiştirmek için bazı sistemlerde şu biçim kullanılabilir:

Kod:
chown :gelistiriciler rapor.txt

Sahip değiştirme işlemi genellikle yönetici yetkisi gerektirir. Gerekirse komutun başına sudo eklenir; ancak bunun için hedef kullanıcı ve grubun sistemde gerçekten bulunması gerekir. Sahiplik değişimi, temel izinlerin kime uygulandığını değiştirir. Ayrıca işletim sistemi chown sırasında setuid/setgid gibi özel bitleri temizleyebilir; izin bitleri hiçbir zaman değişmez varsayımı doğru değildir. Sonucu işlemden sonra yeniden inceleyin.

İki komutun farkını örnek üzerinde görmek​


Örnek POSIX benzeri kabuk ve mktemp bulunan ortam içindir. Aynı terminal oturumunda kendi ev dizininizde benzersiz bir deneme dosyası oluşturun; mevcut bir dosyanın üzerine yazmayın:

  1. Dosyayı oluşturun ve mevcut durumunu inceleyin:
    Kod:
    ornek_dosya=$(mktemp "$HOME/chmod-chown.XXXXXX") || exit 1
    printf 'deneme\n' > "$ornek_dosya"
    ls -l "$ornek_dosya"
    Çıktının başında izinler, devamında dosya sahibi ve grup görünür. Kullanıcı ve grup adları sisteminize göre farklı olabilir.
  2. İzinleri belirleyin:
    Kod:
    chmod 640 "$ornek_dosya"
    ls -l "$ornek_dosya"
    İzin bölümü -rw-r----- benzeri olur. Sahibin yazma izni vardır; grup okuyabilir; diğer kullanıcılar erişemez.
  3. Sahip ve grubu değiştirmeden önce sistemde geçerli adları kontrol edin. Örnek bir kullanıcı veya grup adı kullanmayın; kendi sisteminizde bulunan değerleri kullanın:
    Kod:
    id
    id -gn
  4. Geçerli bir grup adıyla sahipliği değiştirmek gerekiyorsa, yalnızca deneme dosyasında uygulayın:
    Kod:
    chown "$(id -un):$(id -gn)" "$ornek_dosya"
    ls -l "$ornek_dosya"
    Çıktıda sahip ve grup, oturum açmış kullanıcı ve birincil grubuyla görünür. Bu örnekte sahiplik pratikte aynı kalabilir; amaç chown sözdizimini güvenli bir dosyada doğrulamaktır.

chmod veya chown başarılı olduğunda çoğu sistem komut satırına başarı mesajı yazmaz. Sonucu ls -l ile kontrol edin. “Operation not permitted” veya “Permission denied” görürseniz hedef üzerinde gerekli yetkiniz olmayabilir; chown için yönetici yetkisi ve geçerli kullanıcı/grup adı gerekir. Yanlış kullanıcı veya grup adı ise “invalid user” ya da benzeri bir hata oluşturur.

Hangi durumda hangisini kullanmalısınız?​


İhtiyaçKullanılacak komutÖrnek
Dosyayı kim sahipleniyor, değiştirmekchownchown ali:gelistiriciler rapor.txt
Okuma, yazma veya çalıştırma iznini değiştirmekchmodchmod 640 rapor.txt
Bir dizine erişimi incelemekÖnce ls -ld ve üst dizinleri kontrol etmekls -ld klasor

Klasörlerde x izni ayrıca klasörün içine girebilme ve içindeki adlara erişebilme anlamına gelir. Bu nedenle bir klasöre dosya gibi rastgele 777 vermek genellikle doğru çözüm değildir. chmod -R veya chown -R kullanmadan önce hedef yolu mutlaka kontrol edin; yanlış bir üst klasörü seçmek çok sayıda dosyanın erişim düzenini bozabilir. Ayrıca chmod ile izin sorununu çözemediğinizde, dosyanın sahibi ve grubu için ls -l çıktısını yeniden inceleyin; sorun chown gerektiriyor olabilir.

Sık sorulan sorular​


chown çalıştırınca dosyanın izinleri neden değişmiş gibi görünüyor?​


İki olasılık vardır: İşletim sistemi sahiplik değişiminde setuid/setgid bitlerini temizlemiş olabilir. Ya da temel bitler aynı kalırken sahip/grup değiştiği için ls -l çıktısında erişimi hangi izin sütununun belirlediği değişmiştir. Yeni sahibi, kullanıcı izinlerini; yeni grup üyeleri ise grup izinlerini kullanır.

chmod 777 her sorunu çözer mi?​


Hayır. Herkese okuma, yazma ve çalıştırma izni vermek erişim sorununu gizleyebilir, fakat gereksiz değişiklik yetkisi oluşturur. Önce doğru sahibin ve grubun belirlenmesi, ardından yalnızca gereken izinlerin verilmesi daha uygundur.

Bir dosyayı değiştirmek için mutlaka sahibi olmak gerekir mi?​


Genellikle dosyanın yazma iznine ve dosyanın bulunduğu klasöre gerekli erişime sahip olmanız gerekir. Sahiplik değiştirme işlemi ise çoğu kurulumda yalnızca yönetici yetkisiyle yapılabilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic