在linux中执行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库 如果有人能解释我为什么会犯这个错误,我们

我正在使用我的树莓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


如果有人能解释我为什么会犯这个错误,我们将不胜感激

像这样做可能有用:
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用户也使用这种方便。