linux上的tcl文件拷贝,权限错误

时间:2013-06-03 18:39:51

标签: linux file permissions copy tcl

我正在尝试使用tcl将某个文件从我的Linux PC上的一个目标复制到另一个目标。我正在使用的命令是

{file copy -force $fileToCopy $destination}

但是,我没有正确的权限来执行此操作。我尝试使用以下方法更改权限:

{file attributes $fileToCopy -permissions rwxrwxrwx}

我收到一条错误消息,说我无法更改权限,因为我不是所有者。所以,我尝试使用

更改文件的所有者
{file attributes $fileToCopy -owner ${::tcl_platform(user)}}

我收到了同样的错误消息,说我无法更改所有者,因为我不是所有者。

如何解决这个问题?有没有办法在tcl下的sudo下运行这个命令,以便我能够复制文件?

1 个答案:

答案 0 :(得分:2)

只要您对该文件具有读取权限(并且读取执行权限)包含它的所有目录根目录)你应该能够file copy它。您还必须对目标具有写入权限。 (显然!)设置文件的权限要求您是文件或root的所有者,设置文件的所有权需要更高的权限(它几乎只由root或setuid的代码完成)根)。在内部,file copy尝试复制文件的这些功能以及内容,但如果失败则不会引发错误。

虽然可以进行setuid工作(通过TclX扩展的id命令),但这需要一个非常不寻常的配置。实际上,使用sudo启动以root身份运行的Tcl解释器要容易得多。

我猜你要么无法读取文件,要么无法写入目的地。用file readable $fileToCopy检查第一个(只是为了确定!),然后用file writable $destination检查后者。 (请注意,由于竞争条件的可能性以及access()系统调用对某些文件系统的陌生感,这些并没有给出明确的答案。但它们非常能说明发生了什么,真正的问题是什么。)