ব্লুটুথ এলই স্ক্যান নন রুট হিসাবে?


13

ব্লুটুথ এলই ডিভাইস hcitool জন্য একটি স্ক্যান সম্পাদন করতে স্পষ্টতই রুট সুবিধার প্রয়োজন requires সাধারণ ব্যবহারকারীদের জন্য আউটপুট নিম্নলিখিত:

$ hcitool lescan
Set scan parameters failed: Operation not permitted

এলসি স্ক্যানের জন্য কেন hcitool এর রুট সুবিধার দরকার?

কোনওভাবেই মূলত অ-রুট হিসাবে কোনও এলই স্ক্যান সম্পাদন করা সম্ভব?

উত্তর:


21

লিনাক্সের জন্য ব্লুটুথ প্রোটোকল স্ট্যাক দুটি ক্ষমতা পরীক্ষা করে। কিছু সুযোগ সুবিধাগুলি পরিচালনা করার জন্য সামর্থ্য এখনও একটি সাধারণ সিস্টেম নয়। এগুলি একটি পিএএম মডিউল দ্বারা বা বর্ধিত ফাইল বৈশিষ্ট্যের মাধ্যমে পরিচালনা করা যেতে পারে। (দেখুন 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`

এক্সিকিউটেবলের জন্য নিখোঁজ ক্ষমতাগুলি সেটউইড বিটের মতো সেট করে।

 $> 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

হ্যাঁ, আপনার বিটি অ্যাডাপ্টার BLE সমর্থন করে না

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

এইটি করেন, আপনার ডিভাইসে একটি বোতাম টিপুন।


1
ধন্যবাদ চারটি অনুপস্থিত দক্ষতাগুলি নির্দেশ করে। এটি রাস্পবিয়ান স্ট্রেচ চলমান একটি রাস্পবেরি পাইতে ব্লুটুথেক্টলকে নন রুট ব্যবহারকারী হিসাবে ব্যবহার করতে আমাকে সহায়তা করেছিল! তবে আমার ক্ষেত্রে আমি ক্ষমতাটি /lib/systemd/system/bluetuth.service এ যুক্ত করেছি।
স্টিফান ওয়েজনার

7

ঠিক আছে, কমপক্ষে আমি আংশিকভাবে আবিষ্কার করেছিলাম কেন এলসি স্ক্যানের জন্য hcitool এর মূল সুবিধাগুলি প্রয়োজন তবে সাধারণ স্ক্যানের জন্য নয়। আংশিক অর্থ, আমি সাধারণ কল হিসাবে এলই স্ক্যান চালানোর সময় অপ্রতুল সুযোগ-সুবিধার কারণে ব্যর্থ হওয়া সিস্টেম কলটি located

"অপারেশন অনুমোদিত নয়" ত্রুটিটি একটি লিখনভি সিস্টেম কল দ্বারা উত্পন্ন হয়েছে , কল স্ট্যাক লকিংয়ের সাথে নিম্নরূপ হয়েছে ( hci.c এ কার্যকর সমস্ত ফাংশন , ব্লুজের উত্স কোড দেখুন):

hci_le_set_scan_parameters -> hci_send_req -> hci_send_cmd -> writev

সাধারণ স্ক্যান ("এইচসিটিউল স্ক্যান") স্পষ্টতই নিয়ামকের কাছে কোনও অনুরোধ প্রেরণের প্রয়োজন হয় না, তবে কল করে একটি উত্সর্গীকৃত ioctl অনুরোধ ব্যবহার করে:

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

দেখে মনে হচ্ছে যে ব্লুটুথ নিয়ামকটিতে লেখার অ্যাক্সেস সীমাবদ্ধ, তবে কেন এবং কীভাবে আমি এটি নিষ্ক্রিয় করতে পারি?


0

আমার এটি ইনস্টল করা নেই, তবে একটি ভাল-লিখিত ডিভাইস সাবসিস্টেমের সাথে সাধারণত এটির একটি গ্রুপ যুক্ত থাকে। গোষ্ঠীতে কোনও ব্যবহারকারী যুক্ত করুন এবং আপনি ডিভাইসটি অ্যাক্সেস করতে পারবেন (উদাহরণস্বরূপ diskগ্রুপটি কাঁচা হার্ড ড্রাইভ অ্যাক্সেসের অনুমতি দেয়)। শুধু কি ls -lমধ্যে /devএই বার করো। যদি এটি না হয় এবং ডিভাইসটি rootগ্রুপের অন্তর্ভুক্ত, আপনি udevসনাক্তকরণের সময় হার্ডওয়্যারে নামকরণ, অনুমতি এবং ক্রিয়াকলাপ পরিচালনা করে এমন নিয়মগুলি সামঞ্জস্য করে এটি পরিবর্তন করতে পারেন (আমাকে কীভাবে জিজ্ঞাসা করবেন না)।

এটি সরাসরি ডিভাইস অ্যাক্সেসের জন্য যায় যা আপনার সম্ভবত এই ক্ষেত্রে প্রয়োজন। ব্লুটুথের সাধারণ কার্যকারিতা সাধারণত ডেমনের মাধ্যমে নিজস্ব কনফিগারেশন, গোষ্ঠী, অনুমতি ইত্যাদির সাহায্যে পরিচালিত হয়। আপনার বিতরণ ডকুমেন্টেশন পরীক্ষা করুন, গ্রুপগুলি কিছুটা আলাদা হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.