2015-10-28 79 views
0

有一種複雜的方式,我們在C程序中調用shell腳本並調用python腳本。這個Python腳本依次嘗試使用Linux機器上的unzip實用程序解壓縮一個文件。現在,這是問題。當我從終端直接執行shell腳本(以管理員身份登錄)時,解壓縮工作非常好,它調用解壓縮的python腳本,而當C程序調用調用python腳本的shell腳本時不允許unzip解壓縮文件。所以我試圖直接從C程序解壓縮,但也失敗了。我在C程序中使用whoami命令打印當前用戶,並且它說用戶是admin,這是我登錄到終端的用戶。有任何想法嗎?對不起,長長的解釋。但是,我正在試圖解決這個問題的12小時的一天結束。程序中的Linux權限問題

+1

「unzip is not allowed」是什麼意思?它輸出錯誤嗎?它是否返回錯誤代碼?它爆炸了嗎?從C運行時環境是否一樣? C程序是從cron還是其他東西運行? C程序是否在同一個目錄下運行它? –

+0

「C調用shell腳本調用Python程序」聽起來像是一個安全和維護噩夢的邀請。爲什麼不使用單一語言? – Olaf

+2

如何調用C程序?從終端命令行?從cron?它是setuid? –

回答

1

我想你從命令行以外的某個環境調用C程序。也許你從cron或者從web服務器調用它。

無論如何,我還假設你的進程樹的當前工作目錄是一個不允許管理員在那裏寫的目錄。

添加一個像這樣的調用,以確保您的當前工​​作目錄對您有用。

chdir("/tmp")  # C 
cd /tmp   # sh 
os.chdir("/tmp") # Python