【问题标题】:How does a file permissions flag work in OCaml Pervasives?文件权限标志在 OCaml Pervasives 中如何工作?
【发布时间】:2021-06-09 05:42:54
【问题描述】:

我一直在尝试将一些文本写入 OCaml 中的文件并偶然发现以下问题。 使用open_out_gen 打开频道允许为新创建的文件设置权限以及打开文件的模式。

例如:

let write_to_file perm =
 let oc = open_out_gen [Open_creat; Open_append] perm ((Int.to_string perm  )^".txt") in
 Printf.fprintf oc "%s\n" "yolo";     
 close_out oc;;

为名为 .txt 的文件打开一个通道,并在其末尾附加“yolo”。

检查新创建文件的权限时出现问题。直觉上我会假设ls -l 显示的权限标志将等于perm 的值。我的意思是,如果我用write_to_file 777 调用上述函数,新文件应该有所有者、组和其他人的rwx 标志。

但是当我检查它的权限时,它会显示“-r----x--t”,所以该文件可以被所有者读取,由所有者组中的每个人执行,并且只能由该文件的所有者删除文件。

我的问题是为什么会出现这样的结果,我怎样才能真正为每个人授予像 rwx 这样的权限?

【问题讨论】:

    标签: linux ocaml file-permissions


    【解决方案1】:

    您使用777 获取权限,这是一个以 10 为基数的数字。在通常用于数字文件权限的 base-8 表示法中,即1411,它对应于您描述的符号权限 - 粘性位、用户可读、组和其他可执行文件(@ 未显示其他可执行文件位987654323@ 因为粘性位的t 但它就在那里)。

    在 ocaml 中,base-8 文字以 0o 为前缀,因此 write_to_file 0o777 会给你你想要的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2011-02-11
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多