2012-11-08 49 views
0

我寫了一個.net C#應用程序,它將文本文件寫入一個應用程序讀取它的unix機器。我的應用程序很好地將文件寫入目標文件夾,但unix應用程序會拋出一個錯誤,指出它沒有讀取文件的權限。
當我使用WinSCP發送文件時,我可以看到權限是rwxrwxrwx。
當我的應用程序發送文件時,權限是rw-r -----。
我認爲這是原因。C# - 通過FTP寫文件 - 如何設置權限?

這裏是我的代碼:

public override void WriteFile(string directoryName, string fileName, string text) { 
    sshExec.RunCommand(@"echo """ + text + @""" > " + directoryName + "/" + fileName); 
} 

如何設置權限,使其他應用程序可以讀取該文件?

+0

如果它是一個只讀(不執行)的文件,那麼'rwxrwxrwx'是完全錯誤的。 – arkascha

+0

你甚至沒有說你使用什麼協議來創建應用程序內的文件... – arkascha

回答

1

這不是FTP,這是SSH shell的用法。 你應該在你的命令中加入類似「& chmod 777」+ directoryName +「/」+ fileName的內容。

+0

創建世界寫入和可執行文件並不是一個好主意... – arkascha

+0

是的,但這是Yoav接收使用WinSCP的東西。他可以簡化更改命令來設置其他權限。 –

+0

絕對正確地觀察,這是他用他當前的WinSCP設置得到的。我只是說這樣做不是一個好主意。我們都知道爲什麼。那麼爲什麼要解釋他在自己的應用程序中犯同樣的錯誤呢?目標不應該是「以某種方式」讓事情發揮作用,而是要了解你實際上在做什麼。 – arkascha

-1

您應該創建文件,以便讀取用戶帳戶具有對文件的讀取權限(以便讀取應用程序運行的帳戶)。既然你沒有指定更多的細節,只能猜測需要什麼。所以,有這樣的嘗試:

  • 創建該文件由用戶創建的文件
  • 所擁有創建該文件屬於一組兩個用戶都是的成員,創建和讀取用戶帳戶
  • 創建該文件與權限rw-rw-r--

最好的辦法就是讓這兩個帳戶的一些組的成員,給用戶創造該組作爲主組。然後將該用戶帳戶umask設置爲所需的權限掩碼值。這樣,'閱讀'應用程序也可以刪除文件,如果需要的話。 因爲這只是一個一般的經驗法則,因爲你根本沒有詳細說明你真正需要的細節。