将文件复制到ruby中作为sudo用户

时间:2015-11-19 18:00:12

标签: ruby

我正在尝试将文件从源复制到目标,但副本失败并且fileutils.rb:1402:in初始化':权限被拒绝@ rb_sysopen`。

目标文件由root拥有,其中脚本在不同的本地用户下运行。如何以sudo root身份复制?

这是我目前的代码

FileUtils.cp("#{Dir.home}/.user.crt", "#{'/opt/vagrant/embedded/.user.crt'}")
puts "Copied cert file"

遇到错误

fileutils.rb:1402:in `initialize': Permission denied @ rb_sysopen  - /opt/vagrant/embedded/.user.crt (Errno::EACCES)

1 个答案:

答案 0 :(得分:0)

您可以使用the sudo gem为单个对象提供sudo访问权限。

require 'sudo'
Sudo::Wrapper.run do |sudo|
  sudo[FileUtils].cp("#{Dir.home}/.user.crt", '/opt/vagrant/embedded/.user.crt')
end

这比在提升的权限下运行整个脚本更安全。