Найти - Пользователи
Полная версия: Странная работа библиотеки wifi
Начало » Python для новичков » Странная работа библиотеки wifi
1 2 3
vic57
скорее надо менять права на iwlist, или юзера добавлять в группу
 ls -la /path/to/iwlist
и смотри кто имеет права на выполнение
vic57
ЕМНИП можешь работать напрямую с iwlist
 sudo chmod +s /path/to/iwlist 
 from subprocess import run,PIPE
cmd ='/path/to/iwlist wlan0 scan'.split()
p = run(cmd,stdout=PIPE,stderr=PIPE)
out,err = p.stdout.decode(),p.stderr.decode()
print(err,out)
py.user.next
dnstuff
А как настроить права, чтобы скрипт мог автономно работать?
Надо пользователя, под которым запускается flask, добавить в группу, имеющую права. Ищи такую группу или делай, права на директории менять - последнее дело.
dnstuff
Добавил пользователя во все рекомендованные для малинки группы (включая netdev, которая якобы как раз для wi-fi) . Не помогло. Добавил во все существующий группы - тоже не помогло.
Сделал пользователя владельцем iwlist
 sudo chown pi /sbin/iwlist
Всё по-старому.
dnstuff
В общем и целом вроде заработало. Не знаю точно, в чем именно было дело. У меня был создан новый пользователь, а стандартный пользователь pi из raspbian удален. Этого нового пользователя так и не удалось обучить вайфаю. Поставил чистую систему, для пользователя pi оказалось достаточно дать права на iwlist
 sudo chmod +s /sbin/iwlist
py.user.next
Через группы такое делается в лине, сьюидные биты считаются дырой в безопасности. Ну как бы они были сделаны для удобства, а потом оказалось, что они очень часто компрометируют систему.
vic57
py.user.next
Через группы такое делается в лине, сьюидные биты считаются дырой в безопасности. Ну как бы они были сделаны для удобства, а потом оказалось, что они очень часто компрометируют систему.
группы тут не помогут, у iwlist права root:root
через sudoers можно для юзера из группы sudo сделать NOPASSWD и работать с iwlist напрямую, весь этот пакет - обертка над iwlist
py.user.next
vic57
у iwlist права root:root
Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
Вот находишь нужные области и второе root у них делаешь своей группой (добавляешь её в систему, выставляешь для группы права доступа).
Короче, делаешь, как сделано у многих сервисов (apache там и подобные). Они не запускаются под рутом, а используют везде своего пользователя и свою группу.
vic57
py.user.next
Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
где это ты в файловой системе сетевой интерфейс увидел?
http://manpages.ylsoftware.com/ru/iwlist.8.html
py.user.next
vic57
где это ты в файловой системе сетевой интерфейс увидел?
Используй strace (программа такая), которая покажет, куда ломится программа iwlist. root - это пользователь с определёнными правами на файловой системе. Поэтому он доступ имеет к данным, а простому пользователю доступ закрыт. Это записано прямо в файловой системе. Надо искать, куда iwlist ломится, ставить там группу свою или уже существующую и добавлять своего пользователя в эту группу. Открой файл /etc/group, может быть, там есть подсказка, куда добавить пользователя, чтобы доступ к данным открылся. Но можно и свои группы создавать и использовать их по аналогии с существующими. Практически любой сервис (служба) имеет собственную группу - это хороший тон. А делается это для того, чтобы если кто-то взломает сервис и полезет куда-то от его имени, чтобы он не мог проникнуть в root'овые области.

Вот этот файл из мана
/proc/net/wireless
Надо посмотреть, какие на нём права и кто владелец.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB