내 문제를 이해하려면 다음 단계를 읽으십시오.
다음 명령을 실행하십시오.
mkdir ~/src
mkdir ~/destination
sudo mount ~/src ~/destination --bind -o ro
src
destination
폴더는 폴더 에 바인딩되어 마운트됩니다 . nautilus 로 destination
폴더를 보면 읽기 전용입니다. 그러나 이 명령은 폴더와 ll
동일한 파일 권한을 제공합니다 .src
destination
그 이유는 무엇입니까? "대상" 폴더의 실제 권한을 어떻게 확인할 수 있나요? 노틸러스는 어떻게 읽기 전용으로 표시할 수 있나요?
답변1
여기에는 두 가지 작업이 있습니다.
- 디렉터리 권한.
- 설치 옵션.
디렉토리 권한은 마운트가 읽기 전용이라는 사실과 아무 관련이 없습니다. 따라서 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
예를 들어 마운트 지점과 마운트 옵션만 가져옵니다.