在Ruby中更改文件权限

5
我有如下代码
 def initialise
   @doc_path =nil
   @user= nil
end
def execute
   oscmd = Common::OsCmd.new
   oscmd.log = @log.info("message")
   File.open("#{@doc_path}/new.doc","w") do |f|
      f.puts "/#{@name}  /people/* "
      File.chmod(0777,"#{@doc_path}/new.doc")
      FileUtils.chown("#{@user}, #{@user}, #{@doc_path}")
   end
end

我的代码通过从其他配置文件中的标记化执行,其中包含 doc_pathuser 的值。

我的代码在 chownchmod 上出现错误。


为什么“doc”文件需要可执行权限? - pce
如果我注释掉chmod和chown行,代码就能正常工作,它会创建文档并填充文件。 - Angel1403
脚本运行的用户是否具有chown和chmod的权限?(root或特殊文件权限) - pce
在这行代码 FileUtils.chown(#{@user}, #{@user}, "#{@doc_path}") 中,你忘记加上 ".." 了。 - Arup Rakshit
我错过了这个"..". - Angel1403
让我们逐个解决问题。首先注释掉FileUtils,看看错误信息显示什么。然后注释掉File并取消注释FileUtils,查看结果。当代码出现故障且没有错误/日志消息时,很难真正了解发生了什么。 - yoppuyoppu
1个回答

8
尝试以下操作,通过chown传递有效用户进行处理:
def self.execute
   oscmd = Common::OsCmd.new
   oscmd.log = @log.info("message")
   File.open("#{@doc_path}/new.doc","w") do |f|
      f.puts "/#{@name}  /people/* "
      File.chmod(0777,"#{@doc_path}/new.doc")
      FileUtils.chown 'vinod', 'vinod', "#{@doc_path}" 
   end #-- do ends here
end #-- def ends here

chown用法:

http://apidock.com/ruby/FileUtils/chown


注意:此处为IT技术相关内容,翻译时需要保证准确性和专业性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接