마운트 지점은 어디에 존재하거나 존재하지 않을 수 있습니까?

마운트 지점은 어디에 존재하거나 존재하지 않을 수 있습니까?

이는 현실 세계에서는 전혀 활용되지 않는 매우 이론적인 질문입니다.

마운트 지점이 상주할 수 있는 위치 또는 위치 목록을 결정하는 방법이 있습니까?

내가 아는 한, 내 이해는 기껏해야 빈약합니다.어느볼륨 마운트를 위해 액세스 가능한 디렉터리입니다. 그런데 그걸 넣을 수 있나요 /boot/myvolume? 설치에 문제가 있습니까 /run/shm/myvolume(부팅할 때마다 디렉터리를 다시 생성한다고 가정)?

볼륨을 설치하는 사람이나 프로그램이 완전한 트롤인 경우에도 볼륨 및 운영 체제의 의도된 기능을 파괴하지 않고 설치가 합리적으로 지속될 수 있는(또는 반대로 지속되지 않을 수 있는) 목록을 찾고 있습니다.

나는 어떤 Linux 버전에도 국한하지 않으려고 노력하고 있지만 이것이 논쟁에 중요하다면 선호하는 순서대로 Debian, Red Hat, Arch 및/또는 SUSE를 기반으로 가정하시기 바랍니다. 가장 인기 있는 맛인 것 같아요.

답변1

Linux에서는 마운트 지점이 어느 지점에나 존재할 수 있습니다. 이상해 보이는 위치, 특히 바인드 마운트 항목에 항목을 설치하는 것은 특정 프로그램이 사용할 수 있는 환경을 만드는 비교적 일반적인 방법이므로 /boot/myvolume이 전혀 특별하다고 생각하지 않습니다. 대신 /boot/EFI는 시스템의 별도 마운트 지점이 될 수 있습니다.

볼륨을 설치하는 사람이나 프로그램이 완전한 트롤인 경우에도 볼륨 및 운영 체제의 의도된 기능을 파괴하지 않고 설치가 합리적으로 지속될 수 있는(또는 반대로 지속되지 않을 수 있는) 목록을 찾고 있습니다.

목록이 비어 있습니다. 파일 시스템의 목적은 특정 콘텐츠에 액세스할 수 있는 구조화된 방법을 제공하는 것입니다. 아무런 결과 없이 무언가를 넣을 수 있는 디렉토리가 있다면 아마도 그 디렉토리를 삭제해야 할 것입니다. 아무도 사용하지 않습니다.

트롤이 시스템에 무엇이든 설치할 수 있는 권한을 갖고 있다면 귀하는 패배하고 트롤이 시스템을 소유하게 됩니다. 실제로 이에 대한 보호 장치는 없습니다.

오히려 사용자가 자신의 프로세스를 혼동할 위험을 무릅쓰고 자신의 홈 디렉터리(아마도 /run/media/[user]/, ) 범위 내에서 원하는 것은 무엇이든 할 수 있다고 가정하는 것이 합리적입니다. /var/run/user/[uid]일반적으로 이것이 요점입니다. 사용자를 제한하려는 것입니다. 어떤 디렉토리에 잠재적으로 수정 액세스 권한이 있어야 합니까? 어쨌든 그들은 그 디렉토리를 망칠 수 있기 때문에 거기에도 물건을 설치할 수 있어야 합니다. 더 나 빠지지는 않을 것입니다.

문제는 일반 사용자로서할 수 없다일반적으로 물건을 설치하십시오. 필요한(루트) 권한으로 실제로 실행 중인 서비스 또는 setuid 프로그램(udisks, systemd-automount, podman...)을 찾아보고 (요청한 사용자로서) 액세스할 수 있는 위치에만 해당 항목을 설치하는지 확인합니다. :

# I'm at home. Can do arbitrary stuff here.
> fallocate -l 1G ~/filesystemimage
> mkfs.xfs ~/filesystemimage

# doesn't let me mount just anywhere, but picks the directory for me
# in a place that has a SELinux context that says, hey, programs like 
# udisks can mount there (ls -Z /run/media/marcus: `system_u:object_r:mnt_t`)
# and that is named preeeeetty unambiguously so that any reasonable human or
# software author will not think of relying on any data there unless
# run as the same user
> udisksctl loop-setup -f ~/filesystemimage


# Will let me mount a remote directory in a directory I own:
> mkdir ~/mnt
> sshfs [email protected]:/data ~/mnt && echo Success || echo Faaaail
Success
# … but will straight up refuse to mount where I'm not the owner
# /opt is owned by root, not me
> sshfs [email protected]:/data /opt && echo Success || echo Faaaail
Faaaail

좋은 소식하지만 당신인가요?할 수 있는개발자 사용자/트롤이 파일 시스템의 나머지 부분에 영향을 주지 않고 가장 이상한 장소에 물건을 설치할 수 있도록 합니다. ㅏ파일 시스템 네임스페이스프로세스(또는 프로세스 그룹)에 자체 파일 시스템을 제공한다는 아이디어입니다. 그게 다야컨테이너그것은 기반으로 만들어졌습니다! 예를 들어, 설치한 경우 podman(그리고 배포판이나 자신이 권한 없는 컨테이너를 실행할 수 /etc/subuid있도록 적절한 항목을 만든 /etc/subgid경우) 일반 사용자는 다음과 같은 것을 실행할 수 있습니다.

podman run -it --rm -v /home/user/data:/boot/fooobar:Z debian:stable

기쁘게도 /boot/foobar 디렉터리는 액세스할 수 있는 컨테이너 내부에 마운트되며 사용자의 다른 프로세스가 보는 것 대신 해당 디렉터리를 볼 수 있는 쉘 프로세스를 얻습니다.

관련 정보