루트가 아닌 블루투스 LE 스캔?


13

블루투스 LE 장치를 검사하려면 hcitool에 루트 권한이 있어야합니다. 일반 사용자의 경우 출력은 다음과 같습니다.

$ hcitool lescan
Set scan parameters failed: Operation not permitted

hcitool 에 LE 스캔에 대한 루트 권한이 필요한 이유는 무엇 입니까?

루트가 아닌 것으로 LE 스캔을 수행 할 수 있습니까?

답변:


21

Linux 용 Bluetooth 프로토콜 스택은 두 가지 기능을 확인합니다. 기능은 일부 권한을 관리하기위한 일반적인 시스템이 아닙니다. PAM 모듈 또는 확장 파일 속성을 통해 처리 할 수 ​​있습니다. ( http://lxr.free-electrons.com/source/net/bluetooth/hci_sock.c#L619 참조 )

 $> sudo apt-get install libcap2-bin

리눅스 기능 조작 도구를 설치합니다.

 $> sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hcitool`

setuid 비트와 같이 실행 파일에서 누락 된 기능을 설정합니다.

 $> getcap !$
 getcap `which hcitool`
 /usr/bin/hcitool = cap_net_admin,cap_net_raw+eip

그래서 우리는 갈 수 있습니다 :

$>hcitool -i hci0 lescan
Set scan parameters failed: Input/output error

예, BT 어댑터는 BLE를 지원하지 않습니다

$>hcitool -i hci1 lescan
LE Scan...

이 작업은 계속 진행하고 기기의 버튼을 누릅니다.


1
누락 된 기능을 지적하는 4 감사합니다. 또한 Raspbian Stretch를 실행하는 Raspberry Pi에서 root가 아닌 사용자로 bluetoothctl을 사용하는 데 도움이되었습니다. 그러나 제 경우에는 /lib/systemd/system/bluetooth.service에 기능을 추가했습니다.
Stefan Wegener

7

적어도 hcitool 이 LE 스캔에 루트 권한이 필요하지만 일반 스캔에는 루트 권한이 필요한 이유를 부분적으로 발견했습니다 . 부분적으로는 LE 스캔을 일반 사용자로 실행할 때 권한이 충분하지 않아 실패한 시스템 호출을 찾았 음을 의미합니다.

"작업이 허용되지 않음"오류는 다음과 같이 호출 스택 잠금과 함께 writev 시스템 호출에 의해 생성됩니다 ( hci.c에 구현 된 모든 기능 은 bluez 소스 코드 참조).

hci_le_set_scan_parameters -> hci_send_req -> hci_send_cmd -> writev

일반 스캔 ( "hcitool scan")은 컨트롤러에 요청을 보낼 필요는 없지만 다음을 호출 하는 전용 ioctl 요청을 사용합니다 .

ioctl(dd, HCIINQUIRY, (unsigned long) buf);

블루투스 컨트롤러에 대한 쓰기 액세스가 제한되어 있지만 왜 어떻게 비활성화 할 수 있습니까?


0

나는 이것을 설치하지 않았지만, 잘 작성된 장치 서브 시스템에는 일반적으로 연관된 그룹이 있습니다. 그룹에 사용자를 추가하면 장치에 액세스 할 수 있습니다 (예 : disk그룹은 원시 하드 드라이브 액세스를 허용 함). 그냥 할 ls -l에서 /dev이를 확인 할 수 있습니다. 그렇지 않은 경우 장치가 root그룹에 속하는 경우 udev탐지시 하드웨어의 이름 지정, 권한 및 작업을 제어 하는 규칙을 조정하여이를 변경할 수 있습니다 (방법을 묻지 마십시오).

이것은 아마도이 경우 필요할 수있는 직접적인 장치 액세스를 위해 진행됩니다. 블루투스의 일반적인 기능은 일반적으로 자체 구성, 그룹, 권한 등을 가진 데몬을 통해 처리됩니다. 배포 문서를 확인하십시오. 그룹은 약간 다를 수 있습니다.

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