설치하려고 하는데단백질Ubuntu 16의 소프트웨어. 이 소프트웨어의 요구 사항 중 하나는
- (*) $SERVICE_PATH에 대한 쓰기 액세스(기본값 /etc/init.d)
이 목표를 어떻게 달성할 수 있나요?
답변1
지침에는 설치 스크립트가 루트로 실행되어야 한다고 명시되어 있습니다. 이 시점에서는 모든 것에 대한 전체 쓰기 액세스 권한이 있어야 합니다.
소프트웨어가 루트로 실행되고 있지 않지만 /etc/init.d
설치 후에도 여전히 액세스가 필요한 경우,이건 특이하다그러나 필요한 경우 다음을 준비할 수 있습니다.
1.) 그룹을 만듭니다. 원하는 대로 이름을 지정할 수 있습니다. Option은 -r
시스템 그룹에 할당된 GID 번호 범위를 사용하여 생성하므로 일반 사용자와 관련된 그룹과 혼동되지 않습니다.
sudo groupadd -r proteios
/etc/init.d
2.) 그룹에 쓰기 권한이 필요한 사용자를 추가합니다 .
sudo usermod -a -G proteios someuser
3.) /etc/init.d
새 그룹에 그룹 소유권을 할당합니다. 여러 사용자가 이를 요구하는 경우 필요한 만큼 이 단계를 반복하면 됩니다.
sudo chgrp -R proteios /etc/init.d
4.) 그룹 쓰기 액세스 권한을 할당합니다.
sudo chmod -R g+rwX /etc/init.d
proteios
5.) 이 디렉터리에 생성된 모든 새 파일이 기본적으로 이 그룹의 소유인지 확인하세요 .
sudo chmod g+s /etc/init.d
나는 이 Proteios 소프트웨어가 실제로 무엇을 사용하고 싶은지 먼저 일회용 가상 머신에서 수행하는 것을 선호합니다 /etc/init.d
. 이 소프트웨어에는 Proteios가 설치된 컴퓨터가 Proteios에만 사용될 것이라는 기본 가정이 있는 것 같습니다. else 이므로 보안이나 표준 규칙에 크게 신경 쓸 필요가 없습니다. 이는 위험한 가정입니다.
소프트웨어가 자체 시작 스크립트를 수정하려고 하지만 스크립트 자체에 대한 쓰기 권한만으로는 충분하지 않은 경우(예: 새 파일을 만들기 전에 이전 파일을 백업하려는 경우) 다음을 수행할 수 있습니다.아니요real 에 권한을 추가 하되 /etc/init.d
적절한 권한(예: )이 있는 다른 곳에 디렉터리를 생성하여 /opt/proteios/etc/init.d
애플리케이션을 리디렉션 해 보세요.
export SERVICE_PATH=/opt/proteios/etc/init.d
Proteios 시작 스크립트의 시작 부분과 Proteios를 사용하는 사용자의 환경으로 이동한 다음 사용자 정의 디렉터리에 생성된 (각) Proteios 시작 스크립트에서 실제 디렉터리로 돌아가는 기호 링크를 만듭니다 /etc/init.d
.
sudo ln -s /opt/proteios/etc/init.d/* /etc/init.d/
이러한 방식으로 Proteios는 자신의 파일을 마음대로 수정할 수 있지만 다른 시스템 서비스는 수정할 수 없습니다. 부팅 시 실제로 시작해야 하는 이전에 알려지지 않은 다른 시작 스크립트를 추가하려면 관리자가 해당 스크립트에 대한 심볼릭 링크를 만들어야 합니다. 이는 사용자가 Proteios를 통해 다른 시스템 서비스를 조작하는 것을 방지해야 합니다.
답변2
전제는가지다쓰기 권한 $SERVICE_PATH
( /etc/init.d
기본값)그리고도착하다 $CATALINA_HOME
.
문서에는 어떤 사용자로 명령을 실행해야 하는지 나와 있지 않지만 해당 사용자는 두 경로를 모두 소유하거나, 이러한 경로에 대한 쓰기 권한이 있는 그룹에 속하거나, 쓰기가 필요한 명령을 실행할 때 루트 계정으로 전환해야 합니다. 이 길.
예를 들어 문서에는 config
edit 이라고 나와 있습니다 $CATALINA_HOME/webapps/proteios/WEB-INF
. 이 작업을 수행하려면 파일을 편집하는 사용자가 구성 파일을 쓸 수 있어야 합니다.
이러한 경로를 작성하는 데 필요한 다른 단계가 무엇인지 명시적으로 명시되어 있지는 않지만 언급된 경로를 실행하면 스크립트가 이 작업을 수행해야 할 수도 있습니다 install
( update
지침 init
에는 루트로 실행하라고 나와 있습니다).