/ Tmp için doğru izinler nelerdir? İstemeden hepsini tekrarlı bir şekilde halka açıkladım


78

Suistimal ettim sudo.

Birkaç saat boyunca bazı kullanıcılar arasında paylaşmak istediğim çok kısa ömürlü bir geçici dizin oluşturdum ... ve bu dizini adlandırdım /some/path/tmp

Ne yazık ki başlattı sudo chown 777 -R /tmpyerine sudo chown 777 -R tmpbenim nedenle, /tmpdosya artık herkese açıktır.

Yaygın olarak, sık /tmpsık (her gün, neredeyse her saatte bir) kişisel olarak kısa ömürlü dosyalar, senaryolar, birçok komut dosyası için kullanırım.

Şimdi tamamen halka açık olması güvenlik endişesi mi? Daha güvenli ayarlara döndürmeli miyim, yoksa bir Debian veya Ubuntu dağıtımının genel varsayılan ayarları gibi mi değiştirmeliyim? Doğru izinler ne için /tmp?


İlk cevabımda önemli bir şeyi unuttuğumu unutmayın: X11 soketinin herkes tarafından erişilebilir olması gerekir, aksi takdirde yeni GUI uygulamaları başlatamazsınız. Cevabımı güncelledim.
Gilles,

Mıydı chownyoksa chmod?
Melebius

@Melebius Sorunuzdan biraz şaşırdım: Bahsetmedim chmod. chown (ch - own gibi), kullanıcının bir dosyanın sahibi olduğu dosyaların mülkiyeti ile ilgilidir. chmod (ch - modifify gibi) bir dosyanın içeriğini kimin yürütebileceği, içine yazabileceği veya okuyabileceği hakkında daha fazla bilgi sağlar.
Stephane Rolland

2
@StephaneRolland Evet, bu beni şaşırttı. Sen kullanabilirsiniz chown 777Ancak kimliği 777. ile kullanıcıya bir dosyanın sahipliğini koyan çalışmak, kabul de dahil tüm cevaplar, chmod. Hepsi, tüm kullanıcılar (sahip, grup, diğerleri) için izinleri aynı değere ayarladıklarından, dosya sahipliğinin etkilerinin çoğu önemsiz hale gelir. Ancak, sonucu düzeltmek için doğru komut sudo chown 777 -R /tmpolmalıdır sudo chown root -R /tmp.
Melebius

Yanıtlar:


117

Normal ayarlar /tmp, hangi 1777 olduğu lskadar gösterir drwxrwxrwt. Yani: geniş açık, yalnızca bir dosyanın sahibi onu kaldırabilir (bu ekstra tbitin bir dizin için anlamı budur).

/tmp777 modlu problem , başka bir kullanıcının oluşturduğunuz bir dosyayı kaldırabilmesi ve istediği içeriği değiştirebilmesidir.

Sizin /tmpbir tmpfs dosya sisteminizse, yeniden başlatma her şeyi geri yükler. Aksi takdirde koşun chmod 1777 /tmp.

Ayrıca, birçok dosyanın /tmpözel olması gerekir. Bununla birlikte, en az bir dizinin kritik olarak dünyaca okunabilir olması gerekir: /tmp/.X11-unixve muhtemelen bazı diğer benzer dizinler ( /tmp/.XIM-unix, vb.). Aşağıdaki komut çoğunlukla işleri düzeltmelidir:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

Yani tüm dosyaları ve dizinleri özel kılar (grup ve diğer tüm izinleri kaldırır), ancak X11 soketlerini herkes için erişilebilir kılar. Bu soketlerde erişim kontrolü, dosya izinleri tarafından değil, sunucu tarafından uygulanır. Kamuya açık olması gereken başka soketler olabilir. find /tmp -type s -user 0Dünyaya erişilebilir hale getirmek için ihtiyaç duyabileceğiniz kök sahip soketleri keşfetmek için çalıştırın . Diğer sistem kullanıcılarının da sahip olduğu prizler olabilir (örneğin bir sistem veriyolu ile iletişim kurmak için); ile araştırın find /tmp -type s ! -user $UID( $UIDkullanıcı kimliğiniz nerede ).


1
İkinci chmod'u daha fazla açıklayabilir misiniz?
Bartlomiej Lewandowski

@BartlomiejLewandowski go-rwx: grup ve diğerleri için izin yok. Bu izinleri ayarlar rwx------( chmodörneğin, daha az izinle sonuçlanabileceğinden bu yana oluşturulan dosyalar hariç rw-------). Başka bir deyişle, dosyalara yalnızca sahipleri tarafından erişilebilecektir. /tmp/.[!.]*genellikle içinde bulunan nokta dosyalarını eklemektir /tmp.
Gilles,

@BartlomiejLewandowski: chmod -go-rwx: Sahip ve Grup için "rwx" haklarını ayarlayın. r = oku, w = yaz, x = çalıştır (dosya için) veya enter / travers (dizin için). 777 = rwxrwxrwx (sağ kısım şöyle görülebilir: "set 'r' set 'w' set 'x', 'r' set 'w' set 'x' 'set' r 'set' w 'set' x İkili "111111111" olarak temsil edilen "1" (set 1, ayarlanmamış 0) Ve ikili olarak "111111111", sekizlik olarak "777" (sekizli = 3 bitlik gruplar, her grubun değeri 0 olan "sekizlik" olarak temsil edilir) 7). "Rwxr-xr--" ise, sekizli "754" olan "111101100" olur
Olivier Dulac

2
+ T, yapışkan bit olarak adlandırılır. Bu izinler 777 olsa bile sahibinden başka birinin dosyaları kaldırabilmesini engelleyen şeydir. Yapışkan bit, çekirdeğin, çıktıklarında sık sık programları bellekte bırakmasını sağlamaktı, böylece bir sonraki çalıştırmada diskten alınmaları gerekmeyecekti. PDP11 günlerinden bahsediyoruz ....
kurtm

1
@GabrielFair Komutu, joker karakterleri kullanarak bu soruna rastlamayan bulmayı kullanarak değiştirdim.
Gilles

10

/tmpve /var/tmpherkesin haklarını okumalı, yazmalı ve yürütmeli; ancak o+tkullanıcıların diğer kullanıcılara ait dosyaları / dizinleri kaldırmasını önlemek için genellikle yapışkan bit ( ) öğesini de eklersiniz . Öyleyse chmod a=rwx,o+t /tmpçalışmalı.

Tekrarlı olarak izinleri değiştirme gelince ... Sahip / grup, dosyalar ve dizinlerde olduğu gibi kaldığı sürece, bu kadar bir sorun olmamalıdır. Ancak , başkalarının ve belki de grubun haklarını /tmpkaldırarak, kullanıcıların gizliliğini sağlamak için altındaki her şeyin iznini (kendisinin değil / kendisinin değil) değiştirebilirsiniz rx.

Bul bunu yapmanın iyi bir yoludur. Kök olarak:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

Tipik bir masaüstü sisteminde, /tmp/.X11-unix/*dünyaca okunaklı olmanız daha iyi olur, yoksa X uygulamalarına artık başlayamazsınız.
Gilles,

chmod a=rwX,o+t /tmp -Rfindsihri yapmalısın .
akşam

3
[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

Bir CentOS 5.9 makineden.

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.