复制红宝石文件作为须藤用户
我试图将文件从源复制到目标,但副本与fileutils.rb:1402:in
初始化'失败:权限被拒绝@ rb_sysopen`。复制红宝石文件作为须藤用户
目标文件是由根,那里的脚本不同的本地用户下运行拥有。如何以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)
您可以使用the sudo
gem给单个对象sudo访问。
require 'sudo'
Sudo::Wrapper.run do |sudo|
sudo[FileUtils].cp("#{Dir.home}/.user.crt", '/opt/vagrant/embedded/.user.crt')
end
这比下提升的权限运行整个脚本更安全。
感谢您的解决方案。 我试过这段代码,但我得到一个新的错误 /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in'require':can not load这样的文件 - sudo(LoadError) \t from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in'require' \t from configure-env1.rb 109:在'
@Alex那晦涩的消息意味着你没有[安装须藤宝石(http://guides.rubygems.org/rubygems-basics/)。 – Schwern
我安装了sudo gem,现在一切正常。感谢您的解决方案。 – Alex
您应该以访问这两个目录的用户身份运行脚本 – Oleander