
나는 이 훌륭한 것을 넘어서고 싶다해결책규칙을 사용하여 특정 이동식 ext3 FS를 자동 마운트하도록 허용하는 @AB 제공 udev
. 특히 몇 가지를 지정하고 싶습니다.마운트 옵션: " nodev,noexec,x-gvfs-show
", 마운트하는 데 사용된 특정 udev
규칙 내에서 사용하는 것이 좋습니다. 하나의 매우 특정한 물리적 매체를 다루기 때문입니다.
옵션을 지정하지 않으면 볼륨이 다음과 같이 마운트됩니다.
$ cat /proc/mounts | grep -e MYLABEL
/dev/mmcblk0p1 /mnt/MYLABEL ext3 rw,relatime,data=ordered 0 0
udev
마운트 옵션을 지정하기 위해 이전 솔루션에서 규칙을 확장하려고 했습니다 .
KERNEL=="mmc*", ENV{ID_FS_UUID}=="______", RUN+="/usr/local/sbin/mount_by.sh '%E{ID_FS_LABEL}' '%E{ID_FS_UUID}' 'nodev,noexec,x-gvfs-show'"
여기에는 다음이 /usr/local/sbin/mount_by.sh
포함됩니다:
#!/bin/sh
/bin/mount "/dev/disk/by-uuid/$2" "/mnt/$1" -o "$3"
루트 정의 마운트 옵션이 거부되고 볼륨(SD 카드)이 /media/MYUSER/MYLABEL에 자동으로 마운트되므로 위의 내용이 조용히 중단됩니다.
뭐가 문제 야 ?
내가 시도한 것 :
사용 시 마운트 옵션 사양의 어려움을 다루는 많은 게시물을 보았습니다 udev
(예:1,2,...) 답변이 없습니다.
하나마운트된 볼륨이 노틸러스 GUI에 나타나야 하고 루트가 아닌 사용자가 이를 마운트 해제할 수 있어야 하는 경우 규칙 x-gvfs-show
과 함께 사용되는 GVFS 옵션을 다룹니다 . 적어도 마지막 측면을 다루기 위해 udev 규칙에 마운트 옵션을 지정하지 않는 것으로 되돌아갔지만 항목을 추가했습니다. 동일한 uuid 볼륨에 대해 작동하는 규칙을 병렬로 유지한다는 사실을 고려하면 꽤 추악한 해킹입니다 . 그래도 나는 다음과 같이 덧붙였습니다.udev
Devices
/etc/fstab
udev
UUID=_________ /mnt/MYLABEL ext3 nodev,noexec,x-gvfs-show 0 2
FS가 마운트되었지만 노틸러스에서 의도한 대로 나타나더라도 cat /proc/mounts | grep -e MYLABEL
이전과 동일한 결과를 산출합니다. 즉, 옵션이 nodev,noexec
태연히 무시된 것처럼 보입니다.
놀랍지도 않게 화면에 오류 메시지가 나타납니다.
MYLABEL을 마운트할 수 없습니다. /dev/mmcblk0p1 장치는 이미 `/mnt/MYLABEL'에 마운트되어 있습니다.
누구 생각났어?
하사품이 OP와 규칙을 통해 마운트 옵션을 지정하는 데 관심이 있는 많은 사람들에게 서비스를 제공할 수 있는 표준 답변을 제공하도록 노력하십시오 udev
. 가능하지 않은 경우 이유를 설명하고 실행 가능한 해결 방법을 제공하십시오. 건배.
답변1
스크립트
#!/bin/sh
export mount_point="/mnt/$1"
existing_device=$(awk '$2 == ENVIRON["mount_point"] {print $1; exit}' < /proc/mounts)
if [ -n "$existing_device" ]; then
exit 1
fi
mkdir -p "$mount_point"
sleep 1 # Perhaps not necessary, but in the test with the OP it was necessary
mount "/dev/disk/by-uuid/$2" "$mount_point" -o "$3"
exit 0
이와 같은 udev-rule과 완벽하게 작동해야 합니다(UUID를 교체해야 함)
KERNEL=="mmc*", ENV{ID_FS_UUID}=="13ededb9-41e9-4674-b9dc-40ce178af91d", RUN+="/usr/local/bin/mount_by '%E{ID_PART_ENTRY_NAME}' '%E{ID_FS_UUID}' nodev,noexec"
udev-rules는 으로 실행되므로 root
이 -o
사용됩니다.
나쁜 점은 확실히 내 시스템의 x-gvfs-show
옵션 목록에서 작동하지 않는다는 것입니다.-o
답변2
이 작업을 수행하려면 udev 규칙을 사용하면 안 됩니다. 우선, udisk와 충돌합니다. 둘 다 서로 다른 위치에 드라이브를 마운트하려고 시도하고 있으며 어느 쪽이 승리할지는 누구나 추측할 수 있습니다. 또한 드라이브 작업이 끝나면 GUI에서 해당 드라이브를 마우스 오른쪽 버튼으로 클릭하여 꺼내기를 원하지만 udev 규칙에 따라 마운트된 경우에는 그렇게 할 수 없습니다.
사용자 정의 옵션이나 사용자 정의 위치로 마운트하려면 /etc/fstab에 항목을 추가하고 루트가 아닌 사용자가 udisks를 사용하여 자동 마운트할 수 있도록 허용하는 "user" 옵션을 포함해야 합니다. , 나중에 마운트 해제할 수 있습니다.
답변3
AB의 답변을 완료하고 기록을 위해 다음을 수행하십시오.
마운트 옵션 ~할 수 있다 특정 조건에서 udev 규칙 내에 지정됩니다. 테스트를 실행하면서 다음과 같은 몇 가지 옵션을 발견했습니다.
- 승인 및 시행:
ro
,rw
,nodev
,noexec
- 승인 및 무시됨:
comment=x-gvfs-show
, - udev 규칙을 위반한다는 점에서 허용되지 않습니다:
mode=0XYZ
,x-gvfs-show
후자의 경우 udev
규칙 을 위반하면 udisk
기본 옵션으로 미디어가 자동 마운트됩니다.
태그 udev
는MODE="0550"
읽기 전용( ro
) 마운트 옵션은 무시됩니다. 예상대로 노틸러스에 ro
or 를 지정하면 표시되지 않습니다. rw
Nautilus에 표시되는 이상한 권한은 변경되지 않은 반면, 설정된 경우 쓰기를 시도하면 ro
경고 메시지가 표시되고 쓰기 권한이 거부됩니다. 벌레 ?
마지막으로 중요한 것은,하지 마라특정 장치에 대한 마운트 규칙을 /etc/fstab
지정하는 동시에 항목을 준비합니다 . 그러면 장치를 마운트하기 위한 규칙 과 경쟁하므로 udev
충돌이 발생하고 오류 메시지가 표시됩니다 . 놀랄 일은 아닙니다. 그래도 장치는 계속 마운트되며(제 경우에는 규칙에 따라 이유는 묻지 마세요...) 액세스할 수도 있습니다.udisk
udev
udev
약간 HTH.