如何解决权限被拒绝@rb_sysopen

问题描述 投票:0回答:3

我正在编写一个简单的食谱来创建文件:

file '/myfile' do
  content 'Welcome to Technical Guftgu'
  action :create
end

但是在 Chef-client -zr "recipe[test::recipe1]" 上,我收到以下错误:

[2022-03-08T10:54:16+00:00] ERROR: Running exception handlers
Running handlers complete
[2022-03-08T10:54:16+00:00] ERROR: Exception handlers complete
Chef Infra Client failed. 0 resources updated in 02 seconds
[2022-03-08T10:54:16+00:00] FATAL: Stacktrace dumped to /home/vagrant/.chef/local-mode-cache/cache/chef-stacktrace.out
[2022-03-08T10:54:16+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2022-03-08T10:54:16+00:00] FATAL: Errno::EACCES: file[/myfile] (test::recipe1 line 7) had an error: Errno::EACCES: Permission denied @ rb_sysopen - /myfile
ruby permissions chef-infra permission-denied
3个回答
3
投票

您的应用程序似乎无权访问该文件

/myfile

尝试此操作,以允许访问所有内容:

sudo chmod a+rw /myfile


1
投票

Errno::EACCES 表示“权限被拒绝”

Errno 类映射到运行时的系统调用错误。您可以在以下位置找到此(令人困惑的)记录:

特别是:

Errno.constants.include? :EACCES
#=> true

在大多数 *nix 系统上,Errno::EACCES 映射到 libc 错误代码,表示“权限被拒绝”。具体来说:

Macro: int EACCES

    "Permission denied." The file permissions do not allow the attempted operation. 

这通常意味着您的 #create 操作没有权限读取、写入或遍历您尝试管理的文件的路径,因此您需要更改您的实现(您在原始帖子中没有显示)确保您的 Ruby 进程具有执行请求的操作所需的文件或文件系统权限。

另请参阅


1
投票

您似乎没有以 root 用户身份执行此操作,请通过键入 sudo su 将其更改为 root,然后重新运行该命令,希望这会有所帮助。

我遇到了同样的问题,卡住了一个小时,就这样做并成功了。

© www.soinside.com 2019 - 2024. All rights reserved.