ls -la는 mount --bind 폴더에 대한 올바른 권한을 표시하지 않습니다.

ls -la는 mount --bind 폴더에 대한 올바른 권한을 표시하지 않습니다.

내 문제를 이해하려면 다음 단계를 읽으십시오.

다음 명령을 실행하십시오.

mkdir ~/src
mkdir ~/destination

sudo mount ~/src ~/destination --bind -o ro

srcdestination폴더는 폴더 에 바인딩되어 마운트됩니다 . nautilus 로 destination폴더를 보면 읽기 전용입니다. 그러나 이 명령은 폴더와 ll동일한 파일 권한을 제공합니다 .srcdestination

그 이유는 무엇입니까? "대상" 폴더의 실제 권한을 어떻게 확인할 수 있나요? 노틸러스는 어떻게 읽기 전용으로 표시할 수 있나요?

답변1

여기에는 두 가지 작업이 있습니다.

  1. 디렉터리 권한.
  2. 설치 옵션.

디렉토리 권한은 마운트가 읽기 전용이라는 사실과 아무 관련이 없습니다. 따라서 ls폴더에 할당된 권한은 폴더가 탑재된 방식에 관계없이 계속 나열됩니다.

마찬가지로, 를 사용하여 폴더를 마운트하면 noexec내부 ls의 실행 파일이 여전히 실행 가능한 것으로 표시됩니다. 설치 폴더를 사용 noexec하거나 귀하의 경우에 따라ro파일 및 디렉터리에 대한 권한을 변경하지 마세요..

그러나 파일 관리자는 더 똑똑해 보이며 디렉터리가 읽기 전용으로 마운트되어 있음을 알고 있습니다. 분명히 이를 알아내기 위해 권한 비트를 쿼리하는 것만으로는 충분하지 않습니다.


의견에서: "내 사용 사례에서는 쉘 명령을 사용하여 설치 권한을 읽고 싶습니다."

옵션 없이 명령을 실행하면 mount현재 마운트된 모든 파티션과 해당 마운트 옵션이 출력됩니다.

$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=32841600k,nr_inodes=8210400,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=6572324k,mode=755)
(etc.)

설치 옵션은 괄호 안에 나열됩니다.

현재 마운트된 파일 시스템을 조사할 수도 있습니다 /etc/mtab. 파일 형식은 다음 /etc/fstab과 같습니다.

awk '{ print $2, $4 }' /etc/mtab

예를 들어 마운트 지점과 마운트 옵션만 가져옵니다.

관련 정보