/proc/mounts에 exec 옵션이 나열되지 않는 이유는 무엇입니까?

/proc/mounts에 exec 옵션이 나열되지 않는 이유는 무엇입니까?

제가 이해한 바는 /proc/mounts커널 기본값을 포함하여 파일 시스템에 대한 모든 마운트 옵션이 나열되어야 한다는 것입니다. 그래서 exec(다른 것 중에서)가 여기에 나열되지 않은 것을 보고 놀랐습니까?

예를 들어 fstab의 루트 및 기본 파일 시스템은 다음과 같습니다.

/dev/mapper/vg0-xen_root  /      ext4  noatime,errors=remount-ro  0  1
/dev/mapper/vg1-xen_home  /home  ext4  defaults                   0  2

그리고 /proc/mounts에 어떻게 나타나는지:

/dev/mapper/vg0-xen_root /     ext4 rw,noatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
/dev/mapper/vg1-xen_home /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered                  0 0


파일 시스템 독립적 기본값은 다음에 설명되어 있습니다 man mount.

defaults
    Use default options: rw, suid, dev, exec, auto, nouser, and async.


일부 기본값(예: rw)은 나열되고 다른 기본값(예: exec)은 나열되지 않는 이유는 무엇입니까? 파일 시스템과 관련된 전체 설치 옵션 세트를 얻을 수 있는 방법이 있습니까?

답변1

exec그 이유는 반대 일 수 noexec있으며 noexec나열되어 있습니다. 따라서 noexec존재하지 않으면 사용자는 그것이 exec유효하다는 것을 알게 됩니다. 이는 dev/ 와 유사합니다 nodev. 예외는 rw기본 목록에 있는데도 나열되는 것 같습니다.

참고: mount(8) 매뉴얼 페이지에는 이것이 defaults고정된 기본 옵션 목록이라고 되어 있지만,시스템 테이블Wikipedia 페이지에는 "기본 설정은 각 파일 시스템의 파일 시스템 수준에서 정의됩니다"라고 나와 있습니다.

답변2

man mount좋은 목록이 있습니다. 그러나 개별 파일 시스템은 자체 플래그를 정의할 수 있습니다. -> 각 파일 시스템에 대해 별도의 목록이 있습니다. 그러나 마운트 매뉴얼 페이지에 나열된 몇 가지 공통 플래그가 있습니다.

exec기본 플래그입니다. 기본 마운트 플래그 목록은 man mount에도 있습니다(AFAIK 커널 sys_mount() 시스템 호출에는 그러한 것이 없습니다). 하지만 허용하지 않는 경우에는 를 사용해야 합니다 noexec.

답변3

의 파일은 유틸리티 /proc가 아닌 커널에 의해 생성됩니다 . mount커널은 기본 커널 설정의 옵션을 무시합니다. 유틸리티의 기본값이 mount항상 커널 기본값과 일치하는 것은 아닙니다. 다음 위치에 있는 소스 코드에서 커널 버전의 기본값을 확인할 수 있습니다.fs/proc_namespace.c. 예를 들어 버전 3.15부터noexec해당하는 경우 표시하고, noexec그렇지 않은 경우에는 exec아무것도 표시하지 않습니다 .

관련 정보