ls -la /path/to/iwlist
ls -la /path/to/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)
dnstuffНадо пользователя, под которым запускается flask, добавить в группу, имеющую права. Ищи такую группу или делай, права на директории менять - последнее дело.
А как настроить права, чтобы скрипт мог автономно работать?
sudo chown pi /sbin/iwlist
sudo chmod +s /sbin/iwlist
py.user.nextгруппы тут не помогут, у iwlist права root:root
Через группы такое делается в лине, сьюидные биты считаются дырой в безопасности. Ну как бы они были сделаны для удобства, а потом оказалось, что они очень часто компрометируют систему.
vic57Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
у iwlist права root:root
py.user.nextгде это ты в файловой системе сетевой интерфейс увидел?
Запускает он её спокойно, просто сама программа iwlist не имеет доступа к областям файловой системы.
vic57Используй strace (программа такая), которая покажет, куда ломится программа iwlist. root - это пользователь с определёнными правами на файловой системе. Поэтому он доступ имеет к данным, а простому пользователю доступ закрыт. Это записано прямо в файловой системе. Надо искать, куда iwlist ломится, ставить там группу свою или уже существующую и добавлять своего пользователя в эту группу. Открой файл /etc/group, может быть, там есть подсказка, куда добавить пользователя, чтобы доступ к данным открылся. Но можно и свои группы создавать и использовать их по аналогии с существующими. Практически любой сервис (служба) имеет собственную группу - это хороший тон. А делается это для того, чтобы если кто-то взломает сервис и полезет куда-то от его имени, чтобы он не мог проникнуть в root'овые области.
где это ты в файловой системе сетевой интерфейс увидел?