簡體   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