使用 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 设置所有者+访问权限的主要内容,如果未能解决你的问题,请参考以下文章