저는 애플리케이션이 있고 Linux에서 호스트 이름을 변경할 수 있기를 원합니다. 현재는 호스트 이름 명령을 실행하여 이를 수행합니다. 또한 CAP_SYS_ADMIN을 설정하고 싶지 않습니다. 또한 /etc/hostname을 편집하고 재부팅하고 싶지 않습니다.
호스트 이름만 변경할 수 있는 기능이 있나요? 그렇지 않다면 내 선택은 무엇입니까?
답변1
Linux에서 호스트 이름 설정은 sethostname(2) 시스템 호출을 통해 수행됩니다. /bin/hostname은 이 시스템 호출(및 일부 관련 시스템 호출)에 대한 기본 래퍼입니다. /etc/hostname은 부팅 프로세스 중에 스크립트로 읽어야 하며, 그런 다음 해당 작업을 수행하기 위해 /bin/hostname을 실행합니다.
CAP_SYS_ADMIN은 스레드 실행을 허용하는 Linux 기능(7) 중 하나입니다.다양한 종류다음을 포함한 시스템 관리 작업호스트 이름 설정. 기능 프레임워크 내에 더 작은 세분화가 있다는 것을 몰랐습니다.
그러나 다른 옵션도 있습니다. 특정 사용자에게 특정 명령을 실행할 수 있는 권한을 부여할 수 있습니다.~처럼사용자 정의 가능한 방식으로 sudo(8)를 통해 다른 사용자. 이 예제 sudoers(5) 구성을 사용하면 사용자 alice가 /bin/hostname을 루트로 실행할 수 있습니다.
alice ALL=(root:ALL) /bin/hostname
~처럼이 슈퍼유저 질문에 설명되어 있습니다., 첫 번째 "ALL"은 명령을 실행하는 호스트로 대체될 수 있으며 협업 환경을 제외하고는 사용되지 않습니다. "root"를 "ALL"로 바꾸어 Alice가 실행되도록 할 수 있습니다.어느사용자. 두 번째 "ALL"은 그룹으로 대체될 수 있습니다.
마지막 필드는 Alice가 실행할 수 있는 명령입니다. /bin/hostname은 사용이 제한되어 있으므로 괜찮을 것 같습니다. 그렇지 않으면 Alice가 전력을 제한하기 위해 이 매개변수 없이 명령을 실행할 수 없도록 매개변수를 그 뒤에 넣을 수 있습니다.