다른 슈퍼유저가 파일을 수정, 삭제 또는 덮어쓸 수 없도록 어떤 방식으로든 파일을 보호할 수 있는 방법이 있습니까?

다른 슈퍼유저가 파일을 수정, 삭제 또는 덮어쓸 수 없도록 어떤 방식으로든 파일을 보호할 수 있는 방법이 있습니까?

a를 입력할 때 sudo command file파일을 수정, 삭제 또는 덮어쓸 수 없도록 잠그는 매개변수를 설정하는 방법이 있습니까?다른 슈퍼유저?

뿐만 아니라:/home/announcements/공지사항을 설정하여 각 사용자 폴더의 홈 폴더 에 저장하고 싶습니다 .

각 사용자의 공지사항 폴더에 파일을 삽입할 수 있는지 알아보는 테스트입니다.

이는 또한 내가 이 작업을 수행하고 다른 일반 사용자 및 슈퍼유저가 내 개인 사용자 권한 없이 이를 수정하거나 삭제하는 것을 비활성화할 수 있는지 여부에 대한 테스트이기도 합니다.

그렇다면 위에서 설명한 상황이 가능합니까?

예를 들어 위의 도움말을 작성하고 저장하면 다음과 같은 내용이 추가되나요?

sudo chmod -rv 644 /home/*/announcements/announcement-1

~또는 실행 가능한 경우~

sudo chmod -rv 744 /home/*/announcements/announcement-1

노트:난독증이 있어서 가끔 번역도 해요마음에서 속삭이는실제 서면/음성 언어로 번역하는 것은 나에게 어려울 수 있습니다. 명확히 해야 할 사항이 있으면 알려주시기 바랍니다.

답변1

  1. root 모든 것에 접근 가능, 따라서 "고급 사용자"가 의미하는 바에 따라 대답은 "아마도" 또는 "아니요"입니다.
  2. 일반 사용자의 경우 다음을 수행할 수 있습니다.

    chown root:root /home/*/announcements/announcement-1
    chmod a-wt /home/*/announcements/announcement-1
    chmod a+r /home/*/announcements/announcement-1
    

    한 줄씩 표현되는 의미:
    a. 게시판의 소유자를 루트로 변경합니다
    . b. 게시판에서 쓰기 및 고정 비트를 제거합니다
    . c. 모든 사람에게 읽기 액세스 권한만 부여합니다.

참고 1:"수퍼유저" = "sudo 액세스 권한 있음" 정의인 경우 대답은 다음과 같습니다.아니요!(죄송합니다!) 다른 사항이 있는 경우:어쩌면 명확히 해주세요..

답변2

SELinux와 같은 많은 작업을 수행하지 않고도 얻을 수 있는 가장 가까운 방법은 다음을 통해 파일을 불변으로 만드는 것입니다.

chattr +i /path/to/file

파일에 불변 플래그가 설정된 경우 불변 플래그를 먼저 설정 해제하지 않으면 누구도 파일 시스템 수준 이상에서 파일 쓰기, 추가, 이동, 삭제 또는 다른 방식으로 파일을 변경할 수 없습니다. 여전히 두 가지 문제가 남아 있습니다.

  • 루트 액세스 권한이 있는 사람이 불변 플래그를 설정 해제하는 것을 방지할 수 있는 방법은 없습니다.
  • 파일이 저장되어 있는 파일 시스템의 저장 장치에 접근하는 누군가가 파일 데이터를 직접 수정하는 것을 막을 수 있는 방법은 없습니다.

SELinux 또는 기타 MAC 시스템을 고려하면 다음을 수행할 수 있습니다.아마도하고 싶은 일을 하세요. 그러나 그것을 이루기 위해서는 많은 노력이 필요할 것입니다.

하지만 신뢰하지 않는 사람에게 루트 액세스 권한을 부여해서는 안 됩니다.

또한 Windows에서도 이 작업을 수행할 수 없다는 점에 주목할 가치가 있습니다. 관리자 계정(관리자로 나열된 계정이 아니라 실제 "관리자" 계정)에 액세스할 수 있는 사람은 누구나 루트 사용자와 같은 거의 모든 권한 검사를 우회할 수 있습니다. UNIX 시스템에서는 가능합니다.

답변3

아니요, 불가능합니다.

입증하다:

  1. 가장 분명한 점은 슈퍼유저가 su ev낮은 수준의 시스템 호출을 수행하는 프로그램을 실행하거나 생성하고 실행할 수 있다는 것입니다. 그 후에는 사용자가 할 수 있는 모든 작업을 수행할 수 있으므로 "잠금 해제" 명령을 실행할 수 있습니다.
  2. 어쨌든 그렇게 할 필요조차 없습니다. 따라서 특정 명령을 차단하려고 시도할 필요가 없습니다. su ev이는 어쨌든 작동하지 않기 때문에 의미가 없습니다. 거의 권한 확인을 통해 사용자 0은 다른 사용자가 수행할 수 있는 모든 작업을 수행할 수 있습니다. 몇 가지 예외(FUSE 파일 시스템 액세스 등)가 있지만 일단 사용자가 루트가 되면 다른 사용자처럼 코드를 실행할 수 있습니다(1 참조).

"수퍼유저"는 컴퓨터에 대한 관리 권한이 있는 사용자인 "수퍼유저"를 의미한다고 가정합니다. 부정행위를 하는 방법에는 여러 가지가 있습니다:

  • 자신의 슈퍼유저 권한을 예약하고 다른 사람이 임의의 코드 실행을 허용하지 않는 특정 특정 명령에만 액세스하도록 허용할 수 있습니다. 예를 들어, sudo reboot슈퍼유저가 아닌 다른 사용자로 실행할 수 있습니다 . 을(를 sudo sh) 실행할 수 있는 사용자 sudo tee또는 sudo mount슈퍼유저입니다.
  • SELinux와 같은 일부 보안 프레임워크에서는 사용자 ID가 0(즉, 루트)인 계정에 대한 액세스 설정을 허용하지만 해당 계정이 루트가 아닌 계정이 할 수 없는 작업을 수행하지 못하도록 하는 몇 가지 제한 사항이 있습니다. 권한이 없는 사람에게 사용자 ID 0에 대한 액세스 권한을 부여하는 것은 의미가 없기 때문에 올바르게 설정하는 것은 정말 어렵고 실제로는 거의 의미가 없습니다.
  • 가상 머신이나 컨테이너의 다른 사람에게 슈퍼유저 권한을 부여할 수 있지만 호스트에 대한 슈퍼유저 권한은 본인에게만 유지됩니다.

관련 정보