/tmp의 udev 스크립트에 대한 파일 권한

/tmp의 udev 스크립트에 대한 파일 권한

USB가 연결되어 있을 때 udev 규칙을 테스트해 왔습니다.

내 질문이 이 기사와 관련이 있을 수 있다고 생각합니다.udev 규칙을 사용하여 스크립트를 실행할 수 없습니다

스크립트를 성공적으로 트리거하고 실행하는 다음 udev 규칙이 있습니다.

ACTION=="add", SUBSYSTEM=="block", DRIVERS=="usb", ATTRS{idProduct}=="3244", ATTRS{idVendor}=="hghh", ATTR{size}=="7685844", RUN="/home/user/trigger"

스크립트 자체:

#!/bin/bash
date >> /home/user/udev_test.log
date >> /tmp/udev_test.log

수동으로 트리거되면 스크립트가 두 파일 모두에 기록됩니다(사용자 권한 사용). 트리거되면 udev사용자 디렉터리의 파일만 날짜를 가져옵니다.

/tmp/udev_test.log다음과 같은 방법으로 직접 쓸 수도 있습니다.echo "blah" >> /tmp/udev_test.log

보관된 644, 664 및 777을 사용해 보았지만 /tmp/udev_test.log아무 효과가 없었습니다.

사용자 권한으로 수동으로 쓸 수 있는데 udev권한이 777로 설정되어 있어도 작동하지 않는 이유는 무엇입니까?

답변1

/tmp디렉토리에는 고정 비트 모드라는 특수 모드가 있습니다. 파일을 소유한 사용자만 파일에 쓸 수 있습니다. 내 튜토리얼에 따르면:

3.4.2.5. 특수 모드

시스템 관리자가 권한 문제에 대해 걱정하지 않도록 전체 디렉토리나 개별 프로그램에 특별한 액세스 권한을 부여할 수 있습니다. 세 가지 특수 모드가 있습니다:

끈끈한 비트 패턴: 작업이 실행된 후 명령이 시스템 메모리에 저장됩니다. 원래 이는 메모리를 절약하기 위해 자주 사용되는 기능이었습니다. 대규모 작업은 한 번만 메모리에 로드되었습니다. 하지만 요즘은 메모리 가격이 저렴하고 관리할 수 있는 기술이 향상되어 더 이상 개별 파일에 대한 최적화 기능에 사용되지 않습니다. 그러나 고정 비트는 전체 디렉토리에 적용될 때 다른 의미를 갖습니다. 이 경우 이 디렉터리의 파일은 사용자가 파일의 사용자 소유자이거나 파일에 대한 적절한 권한이 있는 경우에만 변경할 수 있습니다. 이 기능은 /var/tmp모든 사람이 액세스할 수 있어야 하지만 사용자가 서로의 데이터를 변경하거나 삭제하는 데는 적합하지 않은 디렉터리와 같은 디렉터리에 사용됩니다 . 고정 비트는 t파일 권한 필드 끝에 다음과 같이 표시됩니다.

mark:~> ls -ld /var/tmp 
drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/

        ︙

이것이 도움이 됩니까?

관련 정보