從 Perl 腳本將權限 tar 提取到 nfs 共享

從 Perl 腳本將權限 tar 提取到 nfs 共享

作為軟體安裝過程的一部分,我使用:

curl -s <url-to-targz> | tar -p -x -z -C /

在 Perl 腳本中(我使用qx($command)system($command),兩者都可以。一切順利,並且 tar 球安裝到我係統的 / 中,但是當我對 nfs 共享執行相同的操作時:

curl -s <url-to-targz> | tar -p -x -z -C /my-nfs/opt

然後會發生以下情況:

  • 當我在提示下執行此操作時,一切進展順利(即我保存在 tar 球中的所有權限仍然有效)。
  • 當我使用 Perl 腳本(或 shell 腳本)執行此操作時,要么qx($command)system($command)我陷入權限變更的情況(例如,可執行的內容不再可執行)。

我懷疑這與 umask 有關(在我的系統上是 022),通常 -p 標誌應該解決這個問題,但在這種情況下仍然沒有樂趣。有人對我有什麼建議嗎(除了閱讀手冊頁:-))?

我也嘗試過類似的東西system("umask xyz; $command"),但是(可能是因為它$command正在使用我的進程的一個分支,它得到了umask 022):也沒有樂趣。

編輯:一些答案表明我應該使用 Perl 的 umask 。我認為 umask 000 可以解決這個問題(但我會在早上看到這個,當我在系統中時。不過,umask 對文件和目錄有不同的影響。有沒有辦法在運行期間完全禁用 umask我的程式(儘管有一千個安全原因反對它)。

相關內容