루트가 /usr/sbin의 실행 파일에 쓸 수 있는 이유는 무엇입니까?

루트가 /usr/sbin의 실행 파일에 쓸 수 있는 이유는 무엇입니까?

/usr/sbin바이너리 컴파일 파일(예: )에 사용자에 대한 쓰기 권한이 있는 이유를 설명해 주시겠습니까 root?

나에게 이것은 컴파일됩니다. 즉, 직접 쓰는 것은 쓸모가 없으며 파일이 특정 보안 문제에 노출될 수 있음을 의미합니다.

파일 과 같은 스크립트는 bash기본적으로 텍스트 파일이므로 쓰기 가능할 수 있지만, 내가 아는 한 실제로 쓸 필요가 없는 컴파일된 파일에 대해 왜 동일한가요?

귀하의 의견에 미리 감사드립니다.

답변1

/bin루트(또는 실행 파일이 저장된 다른 표준 디렉터리)가 파일에 쓸 수 있는지 여부는 중요하지 않습니다. 내가 사용하고 있는 Linux 서버에서는 루트로 쓸 수 있지만 OpenBSD 컴퓨터에서는 쓸 수 없습니다.

그룹이나 "기타"가 쓸 수 없는 한!

보안 문제가 없습니다.

-rwxr-xr-x 1 root root 126584 Feb 18  2016 /bin/ls

누군가 그것을 무시하고 싶다면 루트여야 하고, 루트이고 root덮어쓰면 다음 중 하나를 해야 합니다.

  1. 새 버전을 설치하거나
  2. 서툴거나,
  3. 공격자이미 루트 권한이 있습니다.

고려해야 할 또 다른 사항은 파일이 쓰기 금지되어 있는지 여부에 관계없이 루트가 파일에 쓸 수 있다는 것입니다. 왜냐하면... 루트이기 때문입니다.

또한 "스크립트"는 바이너리와 마찬가지로 실행 파일이라는 점에 유의하세요. 스크립트는 "텍스트 파일이기 때문에" 쓸 수 있을 필요가 없습니다. 그렇다면 동일한 디렉터리에 있는 다른 실행 파일과 동일한 권한을 가져야 할 것입니다.

아직 모든 것에 대한 권한을 변경하지 마세요!이는 모든 종류의 혼란을 초래할 수 있으며 권한이 올바르게 설정되었는지 확인하는 패키지 관리자를 혼란스럽게 할 수 있습니다. 보안이 중요한 응용 프로그램의 권한을 실수로 잘못된 방식으로 변경한 경우에도 시스템이 취약해질 수 있습니다.

다음과 같은 것을 찾지 않는 한 실행 파일에 대한 권한이 올바르게 설정되었다고 가정합니다.진짜이상하게도 이 경우에는 변경을 시작하기보다는 관련 패키지 관리자에게 문의하여 확인해야 합니다.


댓글에서그리고 채팅에서, 누군가가 역사를 요청했습니다.

바이너리 파일 권한의 역사리눅스에서이것은 내가 아는 것이 아닙니다. 그냥 디렉토리의 권한을 물려받은 것인지, 아니면 umask리눅스의 기본 권한을 물려받은 것인지 추측할 수도 있는데, 잘 모르겠습니다.

내가 아는 것은 OpenBSD가 기본적으로 권한 모드 555( )를 사용하여 기본 시스템 1-r-xr-xr-x 에 바이너리를 설치한다는 것입니다 . 이는 Makefile 조각에 지정되어 있으며, /usr/share/mk/bsd.own.mk여기서는 555로 설정됩니다 BINMODE(이미 설정되지 않은 경우). 나중에 make build실행 파일을 설치할 때 사용됩니다 /usr/src.

나는 살펴보았다이 파일에 대한 주석이 달린 CVS 로그, 1995년 NetBSD에서 가져온 이후 파일의 이 줄이 변경되지 않았음을 발견했습니다.

NetBSD에서 이 파일은먼저 CVS에 넣습니다.1993년에는 BINMODE555로 설정되었다.

FreeBSD 프로젝트는 NetBSD와 정확히 동일한 파일을 사용하는 것 같습니다.적어도 1994년 이후, 그리고나중에 제출이전 파일이 Berkeley Software Distribution 4.4BSD 버전에서 가져온 것이라는 메모를 커밋 메시지에 추가했습니다.

게다가,버클리 CSRG소스를 그대로 유지하세요SCCS하지만 그들의 저장소는GitHub에서 Git으로 사용 가능2. 당사가 여기서 법의학적으로 처리하는 문서약속한 것 같아통과키스 보스틱(또는 그와 가까운 사람) 1990년.

이것이 바로 그 이야기입니다. 네가 원한다면, 그러면 Keith에게 물어봐야 할 것 같아요. "라는 변경 사항에 대한 커밋 메시지를 보고 싶습니다.555여야 합니다. 왜냐하면...", 하지만.

1 BSD 시스템은 Linux보다 "기본 시스템"과 "타사 패키지"(포트/패키지)로 더 엄격하게 구분됩니다. 기본 시스템은 다음을 제공하는 일관된 단위입니다.충분히운영 체제를 실행하기 위한 기능 세트입니다. 포트나 소프트웨어 패키지는 "로컬 소프트웨어"로 간주되어 /usr/local.

2 1970년대 이후의 Unix 버전을 다루는 보다 포괄적인 GitHub 저장소도 가능.

관련 정보