Ruby on Rails에서 sudo로 파일 읽기

Aug 19 2020

놀랍게도 나는 이것을 시도하는 사람을 찾지 못했기 때문에 내가이 질문을하는 이유입니다.

문제는 일부 데이터를 저장하는 파일이 있다는 것입니다. 이 파일에 정의 된 일부 개체를 "내보내기"할 수있는 내 rails 프로젝트에 옵션을 갖고 싶습니다.

이 파일은 루트에 속해 있습니다. File.read ( "myfile.json")로 읽으려고하면 다음 오류가 발생합니다.

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

루트로 읽을 수있는 방법이 있습니까? 해결책은 루비의 명령으로 "sudo cat myfile.json"을 실행하고 그 결과를 변수에 삽입하는 것입니까?

내 목표는 사용자가 다운로드 할 다른 파일 안에이 파일의 내용을 배치하여 나중에이 파일을 업로드하고 이전의 모든 개체를 가질 수 있도록하는 것입니다. 더 많은 사람들이이 일을 시도하는 것을 보지 못해서 이상해서 내가 어리석은 것을 묻는 것인지 모르겠습니다. Google에서 이것에 대한 정보를 찾지 못했습니다. File.open으로 파일을 sudo로 열 수 없습니다.

답변

1 ViníciusAlonso Aug 19 2020 at 20:23

이를 빠르게 해결하는 간단한 방법은 파일의 소유자를 변경하는 것입니다.

sudo chown $USER myfile.json

1 Ebordon Aug 19 2020 at 20:27

파일에 액세스하려면 응용 프로그램에 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