a를 입력할 때 sudo command file
파일을 수정, 삭제 또는 덮어쓸 수 없도록 잠그는 매개변수를 설정하는 방법이 있습니까?다른 슈퍼유저?
뿐만 아니라:/home/announcements/
공지사항을 설정하여 각 사용자 폴더의 홈 폴더 에 저장하고 싶습니다 .
각 사용자의 공지사항 폴더에 파일을 삽입할 수 있는지 알아보는 테스트입니다.
이는 또한 내가 이 작업을 수행하고 다른 일반 사용자 및 슈퍼유저가 내 개인 사용자 권한 없이 이를 수정하거나 삭제하는 것을 비활성화할 수 있는지 여부에 대한 테스트이기도 합니다.
그렇다면 위에서 설명한 상황이 가능합니까?
예를 들어 위의 도움말을 작성하고 저장하면 다음과 같은 내용이 추가되나요?
sudo chmod -rv 644 /home/*/announcements/announcement-1
~또는 실행 가능한 경우~
sudo chmod -rv 744 /home/*/announcements/announcement-1
노트:난독증이 있어서 가끔 번역도 해요마음에서 속삭이는실제 서면/음성 언어로 번역하는 것은 나에게 어려울 수 있습니다. 명확히 해야 할 사항이 있으면 알려주시기 바랍니다.
답변1
root
모든 것에 접근 가능, 따라서 "고급 사용자"가 의미하는 바에 따라 대답은 "아마도" 또는 "아니요"입니다.일반 사용자의 경우 다음을 수행할 수 있습니다.
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
아니요, 불가능합니다.
입증하다:
- 가장 분명한 점은 슈퍼유저가
su ev
낮은 수준의 시스템 호출을 수행하는 프로그램을 실행하거나 생성하고 실행할 수 있다는 것입니다. 그 후에는 사용자가 할 수 있는 모든 작업을 수행할 수 있으므로 "잠금 해제" 명령을 실행할 수 있습니다. - 어쨌든 그렇게 할 필요조차 없습니다. 따라서 특정 명령을 차단하려고 시도할 필요가 없습니다.
su ev
이는 어쨌든 작동하지 않기 때문에 의미가 없습니다. 거의 권한 확인을 통해 사용자 0은 다른 사용자가 수행할 수 있는 모든 작업을 수행할 수 있습니다. 몇 가지 예외(FUSE 파일 시스템 액세스 등)가 있지만 일단 사용자가 루트가 되면 다른 사용자처럼 코드를 실행할 수 있습니다(1 참조).
"수퍼유저"는 컴퓨터에 대한 관리 권한이 있는 사용자인 "수퍼유저"를 의미한다고 가정합니다. 부정행위를 하는 방법에는 여러 가지가 있습니다:
- 자신의 슈퍼유저 권한을 예약하고 다른 사람이 임의의 코드 실행을 허용하지 않는 특정 특정 명령에만 액세스하도록 허용할 수 있습니다. 예를 들어,
sudo reboot
슈퍼유저가 아닌 다른 사용자로 실행할 수 있습니다 . 을(를sudo sh
) 실행할 수 있는 사용자sudo tee
또는sudo mount
슈퍼유저입니다. - SELinux와 같은 일부 보안 프레임워크에서는 사용자 ID가 0(즉, 루트)인 계정에 대한 액세스 설정을 허용하지만 해당 계정이 루트가 아닌 계정이 할 수 없는 작업을 수행하지 못하도록 하는 몇 가지 제한 사항이 있습니다. 권한이 없는 사람에게 사용자 ID 0에 대한 액세스 권한을 부여하는 것은 의미가 없기 때문에 올바르게 설정하는 것은 정말 어렵고 실제로는 거의 의미가 없습니다.
- 가상 머신이나 컨테이너의 다른 사람에게 슈퍼유저 권한을 부여할 수 있지만 호스트에 대한 슈퍼유저 권한은 본인에게만 유지됩니다.