특정 USB 드라이브를 읽기 전용으로 마운트해야 합니다. 모든 드라이브가 아니라 보관된 데이터가 포함된 드라이브만 마운트해야 합니다. 우발적이거나 악의적인 변경을 방지하고 싶습니다.
이에 대해 많은 글이 작성되었으며 udev
가능해 보이지만 내 규칙은 시행되지 않는 것 같습니다. 나는 배웠다USB 드라이브를 읽기 전용으로 마운트하는 udev 규칙을 어떻게 생성합니까?- 나는 gvfs가 없으며 다른 답변은 도움이 되지 않았습니다.
이것은 내 /etc/udev/rules.d/25-usb-read-only.rules
파일입니다. 테스트를 위해 볼륨 이름이 SCRATCH인 드라이브를 사용했습니다. 드라이브는 /dev/sda에 마운트되지만 항상 쓰기가 가능합니다.
#SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", MODE="0550"
#SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
# The RUN here just to test the rule is executed
#KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", RUN+="/home/test-udev.sh"
주석 처리된 줄은 이전에 실패한 시도입니다. 시험 사이사이에 그 일이 생각났어요 sudo udevadm control --reload
.
RUN 명령도 실패합니다. 이 스크립트는 디버그 파일에만 쓰고 명령줄에서 실행될 때만 작동합니다.
디버깅을 활성화하고 확인했습니다 /var/log/syslog
. 테스트 단 몇 초 만에 수만 줄을 확인했습니다. 나는 유용한 것을 찾을 수 없습니다.
내 시스템은 Linux Mint 21.1 Cinnamon이지만 위의 모든 내용은 bash에서 가져온 것입니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
원래의 (사전 systemd
) 구현은 udev
너무 강력한 것으로 판명되었습니다. 경쟁 조건과 기타 보안 문제가 발생했습니다. 결과적으로 최신 버전은 systemd-udevd
이전 버전보다 더 제한적이며 이전 버전과 동일한 기능을 모두 수행할 수 없습니다. old 를 사용하여 이동식 디스크를 마운트하는 방법에 대한 많은 정보가 있지만 udev
현재 권장 사항은 다음과 같습니다.넌 그렇게 하면 안 돼, udevd
새 릴리스에 구현된 샌드박싱 및 기타 보안 제한으로 인해 실제로는 점점 더 어렵거나 비실용적이 되었습니다.
현재의 이해는 기본적으로 udev
이렇습니다.기초적인적시에 적절한 소유권과 권한을 가진 장치 노드를 생성하고 관리하는 것이 임무이며,선택적으로다른 서비스에서 사용할 수 있도록 장치 노드에 일부 추가 메타데이터를 제공하세요. 기본 작업을 손상시킬 수 있는 다른 것은 피해야 합니다. 따라서 udev
장기 실행 프로세스를 시작하게 하는 모든 동작은 올바른 것입니다.
파일 시스템을 마운트하는 데 시간이 오래 걸릴 수 있으며, 특히 파일 시스템이 크거나 손상된 경우에는 직접 수행하기보다는 udevd
다른 서비스에 맡겨야 합니다 .udisks2
Mint 21.1의 버전이 2.9.0 이상이면 더 나은 곳이 될 것입니다 udisks2
(패키지 이름은 아마도 현재 버전 이전에 다른 구현이 있었기 때문일 것입니다 ).libudisks2-0
udisks
/etc/udisks2/mount_options.conf
다음을 수행할 수 있습니다.
[/dev/disk/by-label/SCRATCH]
defaults=ro
# removed "rw" from the global default list of allowed mount options
allow=exec,noexec,nodev,nosuid,atime,noatime,nodiratime,ro,sync,dirsync,noload
이 문서에는 mount_options.conf
특정 USB 저장 장치를 장치 일련 번호별로 일치시키는 샘플 udev 규칙을 포함하여 많은 예가 포함되어 있습니다. 이는 원하는 파일 시스템 레이블을 사용하는 것보다 더 안전합니다.
http://storagged.org/doc/udisks2-api/latest/mount_options.html
일반적으로 이동식 미디어 장치는 TAG+="uaccess"
로컬로 로그인한 사용자에게 장치에 대한 쓰기 액세스를 제공하는 udev 규칙을 가져옵니다. 이는 이동식 미디어 장치에서 파일 시스템 레이블을 변경하는 데 필요한 모든 권한을 자동으로 갖게 됨을 의미합니다. 이는 악의적인 변경을 방지하기 위해 파일 시스템 레이블을 사용하는 제안된 전략이 쉽게 해결될 수 있지만 안전하지 않음을 의미합니다.