“Chmod 1777” ve “chmod 3777” neden yapışkan biti neden ayarlıyor?


15

Bir dizindeki yapışkan biti ayarlamak için, komutlar chmod 1777ve chmod 3777ikisi de neden çalışır?


2
Potansiyel olarak riskli bir işlem öneriyorsunuz. Herkes için yapışkan bit ve rwx izinlerinin kombinasyonu kötü bir uygulamadır. Herkes dosyayı değiştirebilir ve yürütebilir ve s-bit parola olmadan kök kullanıcıya geçişe izin verir.
jippie

1
@jippie setuid ve setgid bitleri dosya değiştirilirse kaybolur, böylece root erişimi bu şekilde elde edilemez.
Kyle Jones

@KyleJones, hala tehlikeli. Eğer passwdikili dünya çapında yazma vardı, söylemek gibi değiştirerek kök erişim elde etmek mümkün olmaz, ancak olabilir o olduğunu düşünerek, herkes bundan sonra aday olacağını diğer bazı ikili ile değiştirin passwd.
Joker

@Wildcard Kabul Edildi.
Kyle Jones

Yanıtlar:


29

Bu gruplamadaki her sayı (sekizlik olarak da adlandırılır çünkü base8) 3 biti temsil eder. Eğer ikiliye dönüştürürseniz çok daha kolay olur.

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

Dolayısıyla, 1777, 3777, 5777 veya 7777'yi yaptıysanız, yapışkan biti ayarlarsınız çünkü üçüncü sütun 1 olur. Ancak, 3777, 5777 ve 7777 ile ek olarak diğer bitleri (ilk sütun için SUID ve İkinci sütun için SGID).

Tersine, bu noktadaki diğer herhangi bir sayı (en fazla 7'ye kadar) yapışkan biti ayarlamaz, çünkü son sütun 1 veya "açık" olmaz.

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0


3
Sekizli sayıların nasıl çalıştığı ve dosya izin bitleri için nasıl geçerli olduğu hakkında güzel bir açıklama için +1.
CVn

1
Buna "bitmask" denir ve +1, nasıl ayarlanabileceğini ve clearSahip Grubu ve Diğer sütunlarını açıklamak / göstermek için de kullanılır .
Chris K

16

Chmod'a argüman olarak iletilen izinler sekizlik bir değer olarak belirtilir . Değerdeki her sayı üç biti temsil eder. Üç rakam verilirse, dosyanın sahibi, grubu ve diğerleri (diğer herkes) için okuma, yazma ve yürütme bitlerini ayarlarsınız. Dört rakam verilirse, en soldaki sayı setuid, setgid ve yapışkan bitleri ayarlar. Sekizli 1 yapışkan biti ayarlar. Sekizli 2 setgid bitini ayarlar. Sekizli 2 + sekizli 1, hem setgid bitini hem de yapışkan biti ayarlayan sekizli 3'tür.


1
Sekizli değil mi 2 | sekizli 1 yerine + sekizli 1? Operasyonlar bu durumda aynı sonuca ulaşıyor, ancak genel olarak bitsel ya da önemli, değil mi?
gerrit

1
@gerrit Evet, genel durumda binary oroperatöre bakmalısınız . Bununla birlikte, belirttiğiniz gibi, bu durumda aynı sonuca ulaşır ve çok daha fazla insan eklemeye aşinadır.
CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.