2013-06-03 35 views
1

我想從我的Linux PC上的一個目標複製到另一個使用tcl的某個文件。我正在使用的命令是在Linux上的tcl文件副本,權限錯誤

{file copy -force $fileToCopy $destination} 

但是,我沒有正確的權限來執行此操作。我試着用更改權限:

{file attributes $fileToCopy -permissions rwxrwxrwx} 

我得到一個錯誤信息說我無法更改權限,因爲我不是老闆。所以,我嘗試使用

{file attributes $fileToCopy -owner ${::tcl_platform(user)}} 

我收到了同樣的錯誤消息,因爲我不是車主,我不能改變所有者更改文件的所有者。

我該如何解決這個問題?有沒有在tcl sudo下運行這個命令的一些方法,以便我能夠複製文件?

回答

2

只要你有閱讀權限的文件(兩者閱讀上所有的目錄執行包含它的根目錄權限),你應該能夠file copy它。你也必須有目的地的寫權限。 (顯然!)在文件上設置權限需要你是文件的所有者或者root,並且設置文件的所有權需要更多的提升特權(它幾乎只能由root或setuid的代碼完成根)。在內部,file copy會嘗試複製文件的這些功能以及內容,但如果失敗則不會引發錯誤。

儘管可以執行setuid工作(通過TclX擴展的id命令),但這需要非常不尋常的配置。實際上使用sudo啓動以root用戶身份運行的Tcl解釋器要容易得多。

我猜你要麼不能讀取文件,要麼你不能寫入目的地。用file readable $fileToCopy(只是可以肯定的!)檢查第一個,用file writable $destination檢查第一個。 (請注意,由於競爭條件的潛在可能性以及某些文件系統對系統調用的神祕性,這些並不能給出明確的答案,但它們充分說明了發生了什麼,真正的問題是什麼。)