![nosuid를 suid 파티션에 바인드 마운트할 수 있나요?](https://linux55.com/image/165427/nosuid%EB%A5%BC%20suid%20%ED%8C%8C%ED%8B%B0%EC%85%98%EC%97%90%20%EB%B0%94%EC%9D%B8%EB%93%9C%20%EB%A7%88%EC%9A%B4%ED%8A%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
/target
를 사용하여 마운트 suid
한 다음 /bound에 마운트를 바인드 하면 mount -o bind,nosuid /target /bound
nosuid가 /bound에 적용됩니까?
(작동해야 한다고 생각하지만 여전히 명확한 답변을 원하며 여기에는 아무도 질문하지 않았으므로 그런 것 같습니다)
답변1
예, 대상에 suid가 있더라도 바인딩은 nosuid를 적용할 수 있습니다. 내가 실행한 테스트는 다음과 같습니다.
a.out의 C 소스 코드:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(){
uid_t uid=getuid(), euid=geteuid();
printf("uid: %u, euid: %u\n",uid,euid);
return 0;
}
그런 다음
root@ratma:/# mount -o bind,nosuid /target /bound
root@ratma:/# su hans
hans@ratma:/$ stat /target/a.out
File: /target/a.out
Size: 16712 Blocks: 40 IO Block: 4096 regular file
Device: 18h/24d Inode: 194454 Links: 1
Access: (6755/-rwsr-sr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-12 07:52:45.132465174 +0000
Modify: 2019-12-12 07:52:45.132465174 +0000
Change: 2019-12-12 07:53:24.720322010 +0000
Birth: -
hans@ratma:/$ stat /bound/a.out
File: /bound/a.out
Size: 16712 Blocks: 40 IO Block: 4096 regular file
Device: 18h/24d Inode: 194454 Links: 1
Access: (6755/-rwsr-sr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-12 07:52:45.132465174 +0000
Modify: 2019-12-12 07:52:45.132465174 +0000
Change: 2019-12-12 07:53:24.720322010 +0000
Birth: -
hans@ratma:/$ id
uid=1000(hans) gid=1000(hans) groups=1000(hans),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)
hans@ratma:/$ /target/a.out
uid: 1000, euid: 0
hans@ratma:/$ /bound/a.out
uid: 1000, euid: 1000
성공. 작동하지 않으면 /bound/a.out에 "euid:0"이 표시됩니다 :)