
나는 노드 애플리케이션이 낮은 번호의 포트(http2 서버이기 때문에 정확히 443)에 바인딩할 수 있는 기능을 갖기를 원합니다.
나는 이것을 함께한다sudo setcap cap_net_bind_service=+ep /path/to/node
이것은 분명히 부팅을 통해 기억됩니다. 저는 다른 버전의 노드를 설치할 수 있도록 nvm을 사용하고 있으며 방금 버전을 업그레이드했으며 더 이상 바인딩하지 않습니다.
기능을 다시 추가하는 것은 쉽지만 아마도 어딘가에 이전 버전의 노드에서 꺼야 하는 권한이 축적되어 있을 것입니다.
그러나 부팅 순서의 어느 부분에서 이런 일이 발생하는지 알 수 없습니다. 누군가 나에게 어디에서(나는 Debian을 실행하고 있는지) 말해 줄 수 있습니까?
편집하다
정보는 실행 파일의 추가 속성 내에 저장되어야 한다고 생각합니다. 그러나 이 방법으로 설정한 파일에서는 추가 속성을 찾을 수 없습니다.
답변1
기능은 디렉터리의 파일 항목과 함께 저장됩니다(보다 정확하게는 파일의아이노드, 다른 종류의 권한과 마찬가지로). 부팅 중에는 특별한 일이 발생하지 않습니다.
GNU coreutils 8.23부터 이 ls
명령은 Linux 기능을 알지 못하므로 출력에서 프로그램에 기능 세트가 있음을 알려주는 내용이 없습니다. getcap
기능을 나열하려면 명령 을 사용하십시오 .
파일에서 모든 기능을 지우려면 를 사용하십시오 setcap -r /path/to/file
. 하지만 정리할 것이 없습니다. 기능은 파일과 함께 저장되므로 파일을 제거하는 것 외에는 할 수 있는 일이 없습니다.
답변2
을 참조하세요 setcap(8)
. 기능이 설정되었습니다.실행 파일의 경우. 이는 SUID 또는 SGID와 유사하지만 더 세밀하게 작동합니다. "부팅 프로세스"의 어느 곳에서도 이것이 처리되지 않습니다. 파일이 프로그램으로 실행될 때마다 결과 프로세스가 기능을 얻습니다.
예, 이전 버전의 파일을 높은 권한으로 남겨두는 것은 심각한 보안 위험이므로 새 버전이 설치될 때마다 이전 버전을 삭제하는 것이 좋습니다.