시작 중 기능을 검색할 위치

시작 중 기능을 검색할 위치

나는 노드 애플리케이션이 소수의 포트(http2 서버이므로 정확하게 443)에 바인딩할 수 있기를 원합니다.

나는 이것을 함께한다sudo setcap cap_net_bind_service=+ep /path/to/node

이것은 부츠를 통해 명확하게 기억됩니다. 저는 다른 버전의 노드를 설치할 수 있도록 nvm을 사용하고 있으며 방금 버전을 업그레이드했으며 더 이상 제한이 없습니다.

기능을 다시 추가하는 것은 쉽지만 아마도 어딘가에 이전 버전의 노드에서 꺼야 할 권한이 축적되어 있을 것입니다.

그러나 부팅 순서의 어느 부분에서 이런 일이 발생하는지 알 수 없습니다. 누군가 나에게 어디에서(나는 데비안을 실행하고 있는지) 말해 줄 수 있습니까?

편집하다

나는 이 정보가 실행 파일의 추가 속성에 저장되어야 한다고 생각합니다. 그러나 이렇게 설정된 파일에서는 추가 속성을 찾을 수 없습니다.

답변1

이러한 함수는 디렉토리의 파일 항목과 함께 저장됩니다(보다 정확하게는 파일의인덱스 노드, 다른 유형의 권한과 마찬가지로). 시작하는 동안 특별한 일이 발생하지 않습니다.

GNU coreutils 8.23부터 이 ls명령은 Linux 기능을 인식하지 못하므로 출력에서 ​​프로그램이 기능을 설정했음을 알려주는 내용을 찾을 수 없습니다. getcap기능을 나열하려면 이 명령을 사용하십시오 .

파일에서 모든 기능을 지우려면 를 사용하세요 setcap -r /path/to/file. 그러나 아무것도 지울 필요가 없습니다. 기능은 파일과 함께 저장되므로 파일을 삭제하는 것 외에는 아무 것도 할 필요가 없습니다.

답변2

을 참조하세요 setcap(8). 기능이 설정되었습니다.실행 파일의 경우. SUID 또는 SGID와 유사하지만 더 세부적으로 작동합니다. 이는 "시작 프로세스"의 어느 곳에서도 처리되지 않습니다. 파일이 프로그램으로 실행될 때마다 생성된 프로세스가 이러한 기능을 얻습니다.

예, 높은 권한으로 파일의 이전 버전을 유지하면 심각한 보안 위험이 발생하므로 새 버전을 설치할 때 이전 버전을 삭제하는 것이 가장 좋습니다.

관련 정보