루트가 아닌 사용자에게 /etc 아래의 구성 파일 권한을 변경하는 데 잠재적인 위험이 있습니까?

루트가 아닌 사용자에게 /etc 아래의 구성 파일 권한을 변경하는 데 잠재적인 위험이 있습니까?

우리 머신에서는 cassandra, datadog 등과 같은 다양한 서비스가 실행되고 있습니다.

때때로 구성을 변경해야 하며 구성 파일 전파를 자동화하고 다시 시작하려고 합니다.

우리는 애플리케이션 소프트웨어의 워크플로를 자동화하기 위해 Jenkins를 사용하고 있으며 이를 서비스에도 사용할 생각을 하고 있었습니다. Jenkins가 실행되는 서버가 호스트 서버에 대한 원격 루트(또는 sudo) 액세스 권한을 갖는 것을 원하지 않습니다.

/etc/cassandra의 소유자를 cassandra로, /etc/datadog를 dd-agent 등으로 안전하게 변경할 수 있는지 궁금합니다. 이렇게 하면 자동화하는 데 도움이 되기 때문입니다. (실제로 그런 폴더/파일은~해야 한다해당 사용자가 소유하고 있고 루트를 소유자로 갖는 것이 잘못된 것입니까?)

답변1

이 디렉토리의 아이디어는 /etc디렉토리가 모든 것을 포함 한다는 것입니다.시스템 전체구성 - 대부분의 경우 아래 어딘가에 있는 각 개별 사용자 구성과 반대됩니다 $HOME/.config. 시스템 전체 구성은 모든 사용자에게 영향을 미치므로 해당 파일을 루트가 소유하는 것이 맞습니다.

이제 나는 귀하의 시스템을 모르지만 아마도 시스템당 한 번씩 cassandra 등을 실행하고 있을 것이므로 개별 사용자 구성 파일이 필요하지 않을 것입니다. 나는 그것이 설계된 방식과 모순된다는 점을 제외하고는 해당 파일/하위 디렉터리의 소유권을 변경할 때 어떤 함정도 발견하지 못했습니다. (메인 디렉토리의 소유권을 변경하지 않는 한 /etc!)

개인적으로 저는 인스턴스 디렉토리(아마 홈 폴더에)를 설정하고 거기에 저장된 구성을 사용할 것입니다. 그러나 그것은 당신에게 달려 있습니다.

답변2

루트는 응용 프로그램과 관련된 구성 파일 등의 소유자가 되어서는 안 됩니다. 우아한 해결책은 다음과 같습니다. datadog 애플리케이션은 사용자 datadog에 의해 실행되고 구성 파일은 datadog 및 그룹 datadog이 소유합니다. 하지만 이제 jenkins가 와서 /etc/datadog에서 일부 파일을 보거나 편집해야 하지만 전부는 아닐 수도 있습니다.

따라서 "datadogjenkins"라는 새 그룹을 만들고 datadog과 jenkins를 모두 해당 그룹의 구성원으로 만듭니다. 그런 다음 jenkins가 새 그룹에 대한 읽기/쓰기/실행에 필요한 파일/폴더에 대한 ownerGROUP을 변경합니다.

이제 datadog과 jenkins 모두 해당 자산에 접근할 수 있습니다. 그리고 둘 중 누구도 권한을 루트로 승격할 필요가 없습니다. 그리고 젠킨스가 손상될 경우를 대비하여 젠킨스가 볼 필요가 없는 것을 방지할 수 있습니다.

그것이 충분히 설명되기를 바랍니다.

관련 정보