권한이없는 사용자 계정에서 실행중인 사용자 응용 프로그램에 장치 파일을 노출시키는 표준 방법은 무엇입니까?


2

난 그냥의 첫 번째 버전을 완료 리눅스 커널 모듈 I이 모듈은 장치 파일을 만듭니다 (C로 작성 한 /dev/wn0세 가지 LED 조명과 함께 USB 장치를 제어). 예를 들어 루트로 실행하면 다음과 같이 할 수 있습니다.

echo "#ff0000" >/dev/wn0

... 장치가 밝은 빨간색으로 빛납니다.

내 문제는 권한이없는 사용자가 (에 데이터를 쓰면) 장치에 액세스 할 수 있기를 원한다는 것 /dev/wn0입니다. 이를 수행하는 표준 방법이 있습니까? /dev/wn0파일 에 대한 권한을 변경하는 것만 큼 간단 합니까? 보안 문제가 발생합니까?

답변:


4

네, 몇 가지 가능성이 있습니다.

  • 가장 빠른 방법, POSIX 권한 및 소유권의 요점 : 다른 사람이 읽고 쓸 수있게하려면 권한을 적절하게 설정하십시오. 이 사람들을 그룹에 넣고 장치 소유권을 해당 그룹으로 변경하면 그룹에 쓰기 권한이 부여됩니다. 에서 관리하는 udev경우이 규칙을 규칙 에 넣어야 할 수도 있습니다 . 예를 들어, bluez는 사용자가 블루투스를 사용할 수 있도록하기 위해 사용하는 도구입니다. 또는 "ConsoleKit"을 사용하지 않으면 최소한 배포판에 사용 된 방법입니다./devudev

  • 장치가 단순하고 모든 사람이 사용하는 데 아무런 문제가 없다면 모든 사람이 장치에 쓰도록 허용하십시오.

  • 장치에 쓸 수있는 일부 사용자로 시작하고 UID를 변경하여 장치를 잡고 권한을 삭제 한 다음 TCP와 같은 모든 사용자의 요청을 처리하는 데몬을 작성하십시오.

  • 디바이스에 쓸 작은 바이너리를 작성하십시오. 즉 디바이스에 setuid쓸 수 있고 사용자가 디바이스에 쓰도록 할 수있는 일부 사용자입니다. 즉 무엇 mount그것이, 않는 setuid경우 일반 사용자가 파일 시스템을 마운트 할 수 있도록 루트 /etc/fstab그들이 그렇게 할 수 있습니다.

해당 사용자가 해당 장치를 사용할 수 있으면 추가 보안 문제 가 발생하지 않습니다 . 물론 장치에 대한 액세스 권한이있는 사람은 누구나 모듈의 취약성을 악용 할 수 있지만 사람들이 어떻게 액세스 할 수 있는지에 관계없이 가능합니다. 데몬을 작성하면 악용 될 수 있습니다. 아마도 간단하게 유지하고 코드가 취약하지 않은지 확인하는 것이 좋습니다.

이 작업을 수행하는 단일 표준 방법은 없습니다. UNIX 시스템의 일부가이를 수행하는 방법이 있으며 각 부분은 해결되는 문제의 종류에 대해 가장 편리한 방법으로 수행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.