gzip dosya sahipliğini değiştir


2

İşte anlamadığım bir dava.

Bir grubum var barve bu grubun iki kullanıcısı var; foove bar.

Ben bir test.txtdosya var, foosahibi ve barkullanıcı sadece okuyabilir.

Ancak, eğer barkullanıcı tarafından işletilen gzipbu dosyaya komutu, gelen mülkiyet değişiklikleri fooiçin bar.

Bu nedenle, foobu dosyaya artık dokunamaz.

Bu bir güvenlik deliği mi?

olarak giriş yaptı bar

$ whoami
bar
$ cd /home/foo/test
$ ls -al
total 8
drwxrwxr-x 2 foo bar  4096 Jan  6 15:48 . 
drwxrwxr-- 5 foo bar  4096 Jan  6 15:48 ..
-rwxr-xr-x 1 foo foo    0 Jan  6 15:48 test.txt
$ gzip test.txt    
$ ls -al
total 12
drwxrwxr-x 2 foo bar 4096 Jan  6 15:50 . 
drwxrwxr-- 5 foo bar 4096 Jan  6 15:48 ..
-rwxr-xr-x 1 bar  bar   29 Jan  6 15:48 test.txt.gz
$ uname -a
Linux 2.6.18-xenU-ec2-v1.2 #2 SMP x86_64 x86_64 x86_64 GNU/Linux

Olarak giriş yaptınız foo:

$ whoami
foo
$ touch test.txt.gz 
touch: cannot touch `test.txt.gz': Permission denied

Yanıtlar:


8

Bu bir güvenlik deliği değil. Gzip yeni bir dosya oluşturur ve eskisini siler. Bu, dosyadaki izinlere değil dizin izinlerine tabidir. Yazma iznini dizinden kaldırırsanız test.txt dosyanız kullanıcı çubuğundan korunur.

Güvenlik ile ilgili tüm süreç şöyle görünür:

  1. Gzip, orijinal dosyada salt okunur bir dosya tanıtıcısı elde etmek için orijinal dosya üzerinde okuma izni kullanır.
  2. Yeni, boş bir dosya oluşturmak için dizine yazma iznini kullanın.
  3. Orijinal dosyadaki verileri okuyun ve sıkıştırılmış verileri yeni dosyaya yazın
  4. Dizinde yazma iznini kullanarak eski dosyayı silin.

4

gzipbir dosyanın sahipliğini değiştirmez. Yeni bir dosya oluşturur (Unix benzeri sistemlerin çalışma şekli gereği gzipkomutu çalıştıran kullanıcıya aittir ) ve orijinal dosyayı siler.

Yeni oluşturulan test.txt.gzdosyanın dosyayla aynı kullanıcı ve grup sahipliğine sahip olmasını test.txtistiyorsanız, kullanmanız gerekir chown- çoğu sistemde bu, kök erişimine ihtiyacınız olacak demektir. Kullanıcı barnormalde olamaz foo sahibi olduğu bir dosya oluşturun.

( gzipYeni oluşturulan .gzdosyadaki izin bitlerini girdi dosyasındakilerle aynı olarak ayarlayabilir ve rootaynı chownşekilde ayarlarsanız ve sahibini ayarlamak için de kullanacağınız şekilde çalıştırırsanız . Kaynak: Denedim.)


3

Bu, farklı bir grubun üyesi olduğunuz anlamına gelir. gzipvarsayılan grubunuzla yeni bir dosya oluşturur. Orijinal dosya kaldırıldı.

HTH


Sanırım neden çalışan kullanıcıya ait olduğunu merak ediyor gzip.
Edward Thomson

gzip, dizin sahipliği ile yeni bir dosya oluşturabilir, ancak varolan dosyayı yalnızca okuma izniyle kaldıramaz.

1
@bighostkim: evet, çünkü dosya silme, baryazma erişimine sahip olan ana dizinin bir modifikasyonudur .
Edward Thomson

OP'nin sorusunun çözümü nedir?
IgorGanapolsky
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.