【问题标题】:tcl file copy on linux, permissions errorslinux上的tcl文件复制,权限错误
【发布时间】:2013-05-30 00:10:10
【问题描述】:

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

{file copy -force $fileToCopy $destination}

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

{file attributes $fileToCopy -permissions rwxrwxrwx}

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

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

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

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

【问题讨论】:

    标签: linux file permissions copy tcl


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2012-09-14
      • 2020-12-02
      • 2021-09-13
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多