Tar demlendikten sonra, izinler değiştirme

1 Cevap php

Bugün Unix ve PHP ile ilgili bir soru.

Ne benim PHP üzerinde yapıyorum, katranlı bir tar dosyasını açmak Unix sistemini kullanıyor.

exec("tar -xzf foo.tar.gz");

Ben aşağıdaki gibi bir dosya sistemi bu özel foo.tar.gz, içine işleyene kadar genelde her şey çalışıyor:

Applications/
Library/
Systems/

Tar komutu çalıştırdıktan sonra, bu dosya izinlerini 644 (yerine 755) değiştirilmiştir almak gibi görünüyor.

Bu Permission denied (errno 13) neden olur ve bu nedenle benim kod çoğu devre dışı. (Ben ayrıcalıklar eksikliği tahmin ediyorum)

Ben bu katran durdurmak herhangi bir şekilde tamamen benim izinleri mahvediyor komutu?

Teşekkürler.

Oh ve bu ben bu özel dosya sistemini Has foo.tar.gz dosyası var sadece ne gibi görünüyor. Başka bir şey ve ben iyiyim.

1 Cevap

Tarball'a çıkarılırken anahtarı dosyaların izinlerini tutmak istiyorsanız, o zaman-p (aynı izinleri - - korumak-izinleri ya ya) eklemek zorunda. Tar man sayfalarından:

--preserve-permissions
--same-permissions
-p
    When `tar' is extracting an archive, it normally subtracts the
    users' umask from the permissions specified in the archive and
    uses that number as the permissions to create the destination
    file.  Specifying this option instructs `tar' that it should use
    the permissions directly from the archive.

Yani PHP kodu olmalıdır:

exec("tar -xzfp foo.tar.gz");