“Ls -ld / tmp” çıktısındaki “t” harfi nedir?


94

Komutu çalıştırırken  ls -ld /tmpçıktı şöyle olur:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Bu yüzden iki ana sorum var:

  • İzinlerden tsonraki mektup nedir ?
  • Bildiğim kadarıyla /tmpsistemdeki farklı kullanıcılarla ilgili geçici dosyalar oluşturmak için kullanılıyor, peki nasıl bir izin var rwxrwxrwx(777)?

Bu benim için yanlış görünüyor. Lütfen burada neler olduğunu anlamak için yardımına ihtiyacım var.


8
Wikipedia makalesini okuyun, buradaki cevaplardan daha iyi.
Gilles


Tamam Neden o zaman, / tmp'den bir Güncelleme veya yeni bir rpm Paketi kurduğumda, yapışkan bit kaldırılıyor mu?

Yanıtlar:


112

Peki yapışkan bit nedir?

Yapışkan bir bit, yalnızca o dizindeki dosyanın sahibinin, dizinin sahibinin veya kök kullanıcının dosyayı silmesine veya yeniden adlandırmasına izin veren bir dizinde ayarlanan bir izin bitidir. Başka hiçbir kullanıcı tarafından oluşturulan dosyayı silmek için başka hiçbir kullanıcının gerekli yetkileri yoktur.

Bu, diğer kullanıcıların tam izinlerine sahip olmasına rağmen, kritik klasörlerin ve içeriğinin (alt dizinler ve dosyalar) silinmesini önlemek için bir güvenlik önlemidir.

Neden gelmez /tmpsahip tyapışkan bit?

/tmpDizin geçici dosyaları oluşturmak için farklı Linux kullanıcıları tarafından da kullanılabilir. Şimdi, bir kullanıcı bu dizindeki başka bir kullanıcı tarafından oluşturulan bir dosyayı siler / yeniden adlandırırsa ne olur?

Bu tür sorunlardan kaçınmak için yapışkan bit kavramı kullanılır. Bunun için a 777verilir ancak yapışkan parçayı korumak kötü bir fikir değildir.

Bir dizinin yapışkan ucunu nasıl ayarlayabilirim?

testMasaüstümde adı verilen bir dizine yapışkan bir bit koyacağım.

Sembolik yol ( tyapışkan ucu temsil eder):

chmod o+t ~/Desktop/test

veya

chmod +t ~/Desktop/test

Sayısal / sekizli yol (1, ilk konumda 1 olarak yapışkan bit biti)

chmod 1757 ~/Desktop/test

Şimdi sonuçları test edelim:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Yapışkan biti silmek / kaldırmak için

chmod o-t ~/Desktop/test

Şimdi sonuçları test edelim:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Kaynak: Linux Juggernaut'ta “Sabit Bit nedir ve Linux'ta nasıl ayarlanır?”


13
Yapışkan bitin bu kullanımı sadece dizinler için geçerlidir, dosyalar için geçerli değildir. Uzak geçmişte, çalıştırılabilir dosyalar üzerindeki anlamı, programın metin segmentini, atmak yerine değiştirmek için takas yerine kaydetmekti, böylece tekrar çalıştırmak daha hızlı olacaktı, ancak bu günlerde normal dosyalar üzerinde hiçbir anlamı yoktu.
psusi

Bir programın metin segmenti neydi ve onu nasıl daha hızlı hale getirirdi?
BluePython

@BluePython Çalıştırılabilir bir dosyanın 'metin' bölümü, tüm makine kodunu içeren kısımdır: gerçek yürütülebilir bit. Diğer yaygın segmentler statik veriler için 'veri'dir ve sıfır olan veriler için' bss'dir (ve bu nedenle çalıştırılabilir dosyada saklanması gerekmez).
Miles Rout

1
dizin izni için 't' ve 'T' arasında herhangi bir fark var mı ?? @ psusi
Afshin

1
@Afshin: Çünkü tgizler xtüm kullanıcıların dosya / dizin yürütebileceği belirten, bu göstermenin başka bir yola gerek. Genel şey, herkesin yürütebilmesidir, bu durumda normal bir durum alırsınız t(yerine x). Ama eğer değilse, o zaman büyük harf T(a yerine -) olsun. Kaynak: Wikipedia.
Toby Bartels

25

Yapışkan bir bit, bir dosyada veya dizinde ayarlanmış, yalnızca dosya / dizin sahibinin veya kök kullanıcının dosyayı silmesine veya yeniden adlandırmasına izin veren bir izin bitidir. Başka bir kullanıcı tarafından oluşturulan dosyayı silmek için başka hiçbir kullanıcıya yetki verilmez.

Bazen dosyaları oluşturmak için tüm Linux sistemi kullanıcılarının kullanabileceği bir Linux dizinine ihtiyacınız var. Kullanıcılar bu dizindeki kolaylıklarına göre dosya oluşturabilir, silebilir veya yeniden adlandırabilir.

Şimdi, bir kullanıcı bu dizinde başka bir kullanıcı tarafından oluşturulan bir dosyayı yanlışlıkla veya kasıtlı olarak siler (veya yeniden adlandırırsa)?

Bu tür sorunlardan kaçınmak için yapışkan bit kavramı kullanılır. Yana / tmp bu amaçla kullanılmaktadır. Bu yüzden yukarıdaki senaryodan kaçınmak için, / tmp yapışkan bit kullanın.

Örneğin:

mkdir demo
chmod 777 demo

Ayrıca 777 iznine sahip bu klasörde farklı bir kullanıcıyla iki dosya oluşturdum.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

Şimdi bu konudaki yapışkan parçayı aç.

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Şimdi, bir kullanıcı (abhi), ikinci kullanıcıyı (anshu) yeniden adlandırmak isterse ne olur?

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

Yapışkan bitin kökeni

Linux'ta, yapışkan bit, dizinlerde yalnızca yukarıda açıklanan kullanıma sahiptir. Tarihsel olarak, düzenli dosyalarda tamamen farklı bir şey için kullanılıyordu ve ismin geldiği yer burasıydı.

Bir program yürütüldüğünde, kullanıcının gerçekten kullanmaya başlaması için programın belleğe yüklenmesi zaman alır. Bir program, örneğin bir editör kullanıcılar tarafından sıkça kullanılıyorsa, başlangıç ​​zaman gecikmesi o zamanlar genel gider olmuştur.

Bu zaman gecikmesini iyileştirmek için, yapışkan bit tanıtıldı. İşletim sistemi, eğer bir çalıştırılabilirdeki yapışkan bit AÇIK ise, çalıştırılabilirin metin bölümünün takas alanında tutulduğunu kontrol etti. Bu, program tekrar çalıştırıldığında çalıştırılabilir dosyayı RAM'e geri yüklemeyi kolaylaştırarak zaman gecikmesini en aza indirdi.

Linux gibi modern sistemler çalıştırılabilir önbelleklerini ve diğer dosyaları otomatik olarak yönetir ve bunun için yapışkan bir bit gerekmez.

Kaynak: Geek Stuff’da “Linux Yapışkan Bit Kavramı Örneklerle Açıklandı”


2

Yapışkan, paylaşılan dizinlerin yanlışlıkla silinmemesi için geçici bir yöntemdir. Bir dizinin bir yapışkan damgası varsa, sadece kullanıcı veya kök onu silebilir, hatta her kullanıcı diğer izinlerin tamamını alabilir.

/tmpİşlemler ve kullanıcılar arasında en çok paylaşılan dizindir ve bunun için hiçbir kullanıcının dizini silememesini sağlamak için yapışkanlık içermesidir, izin bile olsa 777ve kullanıcıların ve işlemlerin dizini kullanma yeteneği vermesi için izinlerde çatışma olmadan.

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.