Форум сайта python.su
скорее надо менять права на iwlist, или юзера добавлять в группу
ls -la /path/to/iwlist
Отредактировано vic57 (Июль 28, 2018 18:10:34)
Офлайн
ЕМНИП можешь работать напрямую с 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)
Офлайн
857
dnstuffНадо пользователя, под которым запускается flask, добавить в группу, имеющую права. Ищи такую группу или делай, права на директории менять - последнее дело.
А как настроить права, чтобы скрипт мог автономно работать?
Офлайн
1
Добавил пользователя во все рекомендованные для малинки группы (включая netdev, которая якобы как раз для wi-fi) . Не помогло. Добавил во все существующий группы - тоже не помогло.
Сделал пользователя владельцем iwlist
sudo chown pi /sbin/iwlist
Офлайн
1
В общем и целом вроде заработало. Не знаю точно, в чем именно было дело. У меня был создан новый пользователь, а стандартный пользователь pi из raspbian удален. Этого нового пользователя так и не удалось обучить вайфаю. Поставил чистую систему, для пользователя pi оказалось достаточно дать права на iwlist
sudo chmod +s /sbin/iwlist
Офлайн
857
Через группы такое делается в лине, сьюидные биты считаются дырой в безопасности. Ну как бы они были сделаны для удобства, а потом оказалось, что они очень часто компрометируют систему.
Офлайн
py.user.nextгруппы тут не помогут, у iwlist права root:root
Через группы такое делается в лине, сьюидные биты считаются дырой в безопасности. Ну как бы они были сделаны для удобства, а потом оказалось, что они очень часто компрометируют систему.
Офлайн
857
vic57Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
у iwlist права root:root
Отредактировано py.user.next (Авг. 3, 2018 10:56:59)
Офлайн
py.user.nextгде это ты в файловой системе сетевой интерфейс увидел?
Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
Отредактировано vic57 (Авг. 3, 2018 16:37:59)
Офлайн
857
vic57Используй strace (программа такая), которая покажет, куда ломится программа iwlist. root - это пользователь с определёнными правами на файловой системе. Поэтому он доступ имеет к данным, а простому пользователю доступ закрыт. Это записано прямо в файловой системе. Надо искать, куда iwlist ломится, ставить там группу свою или уже существующую и добавлять своего пользователя в эту группу. Открой файл /etc/group, может быть, там есть подсказка, куда добавить пользователя, чтобы доступ к данным открылся. Но можно и свои группы создавать и использовать их по аналогии с существующими. Практически любой сервис (служба) имеет собственную группу - это хороший тон. А делается это для того, чтобы если кто-то взломает сервис и полезет куда-то от его имени, чтобы он не мог проникнуть в root'овые области.
где это ты в файловой системе сетевой интерфейс увидел?
Отредактировано py.user.next (Авг. 4, 2018 00:37:04)
Офлайн