繁体   English   中英

从 Ruby on Rails 以 sudo 身份读取文件

[英]Reading a file as sudo from Ruby on Rails

令人惊讶的是,我没有发现有人试图这样做,这就是我提出这个问题的原因。

事情是我有一个文件,我在其中存储了一些数据。 我想在我的 Rails 项目中有一个选项,您可以在其中“导出”此文件中定义的一些对象。

该文件属于 root,所以如果我尝试使用 File.read("myfile.json") 读取它,它会失败并出现此错误:

#<Errno::EACCES: Permission denied @ rb_sysopen - /opt/rb/etc/cep/state.json>

有没有办法让我以 root 身份读取它? 也许解决方案是从 ruby 作为命令运行“sudo cat myfile.json”并将结果注入变量?

我的目标是将此文件的内容放入用户将要下载的另一个文件中,以便稍后他可以上传此文件并拥有之前的所有对象。 没有看到更多人尝试这样做很奇怪,所以我不知道我是否在问一些愚蠢的事情。 我在谷歌中没有找到关于此的信息,也许无法使用 File.open 打开文件作为 sudo。

快速解决它的一个简单方法是更改文件的所有者。

sudo chown $USER myfile.json

如果你想访问一个文件,我认为给你的应用程序 sudo 访问权限不是一个好主意。 这是潜在的危险。

您可以通过更改文件的所有者/组来更改文件的权限。

在这里您可以找到如何让用户运行应用程序。

此命令将更改文件的所有者

sudo chown <my_user> /opt/rb/etc/cep/state.json

另一种选择是使用当前所有者和 rails 用户创建一个组并将该组设置为所有者:

sudo groupadd mynewgroup
sudo usermod -a -G mynewgroup <my_user>
sudo usermod -a -G mynewgroup <current_user>
sudo chgrp mynewgroup /opt/rb/etc/cep/state.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM