Bir dosyanın / dizinin sahibinin ve kök kullanıcının bir dosyanın / dizinin izinlerini değiştirmesine izin verilen tek kullanıcı olduğuna (emin değilim) inanıyorum. Doğru muyum veya izinleri değiştirmesine izin verilen başka kullanıcılar var mı?
Bir dosyanın / dizinin sahibinin ve kök kullanıcının bir dosyanın / dizinin izinlerini değiştirmesine izin verilen tek kullanıcı olduğuna (emin değilim) inanıyorum. Doğru muyum veya izinleri değiştirmesine izin verilen başka kullanıcılar var mı?
Yanıtlar:
Yalnızca sahip ve root
(süper kullanıcı) bir dosyanın veya dizinin iznini değiştirebilir. Bu, sahibin ve süper kullanıcının read ( r
), write ( w
) ve execute ( x
) izinlerini ayarlayabileceği anlamına gelir . Ancak dosya ve dizinlerin sahipliğini (kullanıcı / grup) chown
/ komutları chgrp
ile değiştirmeye sadece izin verilir root
.
Normal çalışma amacıyla, sadece kök ve sahibi yapabilir chmod
. Buna ek olarak, kök can chown
ve chgrp
ve ayrıca sahibi olabilir chgrp
sürece sahibinin hedef grubunun bir üyesi olarak.
Güvenlik nedeniyle, başka bir durum daha vardır: dosyayı içeren dizine yazma iznine sahip herhangi bir kullanıcı dosyayı bir kopyayla değiştirebilir ve böylece sahip olabilir ve izinleri ve içeriği değiştirme yeteneğini kazanabilir.
Şöyle ki:
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
Bir dizin oluşturduk ve kök olarak bir dosya yazdık. Kök dosyaya sahip olduğu için, dosyaya yazamayız veya chmod yapamayız:
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
Ancak, dizine yazma iznimiz var, bu nedenle sahiplik almak için dosyayı değiştirebiliriz:
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
Ve şimdi sahibi olduğumuza göre, bu dosyayla istediğimizi yapabiliriz:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Benzer şekilde, dosyaya giden tam yoldaki herhangi bir dizine yazma izni olan herhangi bir kullanıcı , dizin yapısını bu noktadan sonra değiştirebilir ve böylece dosyanın adı verilen ada sahip olabilir. Elbette asıl dosyanın ("dosya2" olarak yeniden adlandırdığımız) sahipliği veya izinleri değişmez.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2
getfacl / setfacl
, "klasik" stil dosya izinlerinden daha fazla esneklik sağlayan dosya düzeyinde erişim kontrol listelerini ( ) destekler. * Nix içindeki dosya silme, dosyaya bağlantıyı dizinden kaldırarak çalışır, bu nedenle dosya kaldırma her zaman dizin izinleri tarafından kontrol edilir; dosya izinlerinin kendileri orada hiçbir rol oynamaz.
chmod
Komut oldukça doğrudan aynı adlı günlüğe yazmasını söyler; chmod(2)
sistem çağrısının kılavuz sayfası (Linux 4.10'da):
Çağıran işlemin etkin UID'si dosyanın sahibiyle eşleşmeli veya işlem ayrıcalıklı olmalıdır (Linux: bu özelliğe sahip olmalıdır
CAP_FOWNER
).Çağıran işlem ayrıcalıklı değilse (Linux: özelliğe sahip değilse
CAP_FSETID
) ve dosya grubu, işlemin etkin grup kimliğiyle veya ek grup kimliklerinden biriyle eşleşmezse,S_ISGID
bit kapatılır, ancak bu hata döndürülmez.
Bu nedenle evet, root olarak çalışan bir işlem, herhangi bir dosyanın CAP_FOWNER
kapasitesini düşürmemişse izinlerini değiştirebilir .
Ayrıca ilgi çeken chown
; man sayfası chown(2)
diyor ki:
Yalnızca ayrıcalıklı bir işlem (Linux:
CAP_CHOWN
yetenekli bir işlem) bir dosyanın sahibini değiştirebilir. Bir dosyanın sahibi, dosyanın grubunu, sahibinin üyesi olduğu herhangi bir gruba değiştirebilir. Ayrıcalıklı bir işlem (Linux: withCAP_CHOWN
) grubu keyfi olarak değiştirebilir.