在linux中执行python文件时权限被拒绝
我正在使用我的树莓Pi 2 B+和树莓。我有一个python脚本,位于在linux中执行python文件时权限被拒绝,python,linux,raspberry-pi,Python,Linux,Raspberry Pi,我正在使用我的树莓Pi 2 B+和树莓。我有一个python脚本,位于/home/pi/Desktop/control/gpio.py 当我在命令行中键入/home/pi/Desktop/control/gpio.py时,我会收到消息 bash: /home/pi/Desktop/control/gpio.py Permission denied 在运行该命令之前,我也尝试过运行sudo-s,但这不起作用。我的python脚本正在使用Rpi.GPIO库 如果有人能解释我为什么会犯这个错误,我们
/home/pi/Desktop/control/gpio.py
当我在命令行中键入/home/pi/Desktop/control/gpio.py
时,我会收到消息
bash: /home/pi/Desktop/control/gpio.py Permission denied
在运行该命令之前,我也尝试过运行sudo-s
,但这不起作用。我的python脚本正在使用Rpi.GPIO
库
如果有人能解释我为什么会犯这个错误,我们将不胜感激 像这样做可能有用:
cd/home/pi/Desktop/control/
python gpio.py
因为gpio.py不是一个可执行文件,所以您应该改为用python运行它,因为您没有文件的
execute
权限,所以会出现此错误。有两种解决方法:
python gpio.py
python将通过读取文件来加载文件,因此您不需要具有执行权限chmodu+xyourfile.py
来实现这一点
但是,除非在python程序的顶部添加一个。它会让您的linux知道应该启动哪个解释器。例如:
#!/usr/bin/env python
这将尝试使用当前的$PATH
设置运行python
。如果您知道需要哪条python,请将其放在这里
#!/usr/bin/python3
记住,shebang必须是您程序的第一行以root用户身份登录,或尝试重命名目录或文件。。它的文件权限是I inkchmod+x gpio.py,确定它是可执行的吗?我以前试过这个,可能也不管用。它不会被视为python文件,并会导致类似“import:command not found”这样的错误。令人惊讶的是,由于
root
我没有被授予对系统中每个文件的权限,哈哈哈。@FaithReaper>对于文件,只要没有设置suid/sgid位,执行位就比实际的访问控制更方便。事实上,通过将程序传递给ld.so
,您可以在只有读取权限的情况下运行程序。例如,在我的系统上:/lib64/ld-linux-x86-64.so.2/bin/ls
运行ls,而不考虑其执行位。最坏的情况是,如果你能读取二进制文件,你可以复制它,并在副本上设置执行位。所以…一旦你把它当作方便,那么它就可以让root用户也使用这种方便。