使用 io.open 设置所有者+访问权限

Posted

技术标签:

【中文标题】使用 io.open 设置所有者+访问权限【英文标题】:Set Owner+Access-rights with io.open 【发布时间】:2017-12-25 18:50:34 【问题描述】:

在一个 lua 脚本(用于 Domoticz @ Raspberry)中,我应用以下脚本段来生成一个 htm 文件并将其放在指定的文件夹中。

Line02text 到 Line30text 是在 lua 脚本中动态填充的变量。

file = io.open("/home/pi/domoticz/scripts/lua/XXXXX.htm", "w+")
-- Opens a file named XXXXX.htm (stored under the designated sub-folder of Domoticz)
-- in append mode
-- write lines to opened file
file:write("SOF<br>")
file:write(Line02text .. "<br>")
file:write(Line03text .. "<br>")

....

file:write(Line29text .. "<br>")
file:write(Line30text .. "<br>")
file:write("EOF<br>")
file:close() -- closes the open file

看起来一切正常,因为 htm 文件按计划显示。

接下来的步骤是将文件复制到不同的文件夹,在浏览器中打开等。

但 htm 文件的所有者是“root”,权限是 0640。

对于进一步的应用程序所有者应该是不同的,并且权限例如777.

尝试手动更改或使用 chmod 会导致服务器报告“权限被拒绝”。

问题: 如何为 htm 文件设置(作为 lua 脚本的结果)不同的所有者和其他权限?

【问题讨论】:

你能在file:close()之后插入行os.execute("chmod a+rw /home/pi/domoticz/scripts/lua/XXXXX.htm")吗? 谢谢叶戈尔!添加该脚本行是获得所有用户都可以访问的文件的解决方案。 【参考方案1】:

Lua 的目标是尽可能地便携,所有权/权限管理是非常特定于操作系统的。没有嵌入式函数可以处理。

您需要公开一些本机函数,这些函数将根据文件权限执行您需要的操作。或者使用一些已经存在的库,比如lua-fs: (https://github.com/clementfarabet/lua-fs-0.3)

【讨论】:

以上是关于使用 io.open 设置所有者+访问权限的主要内容,如果未能解决你的问题,请参考以下文章

如何设置zeppelin note权限访问控制

在Linux系统中,如何更改文件的访问权限

windows7 共享文件夹 访问权限

关于权限控制中的数据访问权限问题

linux中ACL访问权限设置

linux 用户怎么设置权限,只能访问指定的目录,其他目录都不允许访问