当前位置: 首页 > 面试题库 >

如何授予Linux中所有Python脚本可执行权限?

陆昂然
2023-03-14
问题内容

假设我有一个名为 a.py 的python脚本,如下所示:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author    : Bhishan Poudel
# Date      : Jul 13, 2016


# Imports


# Script
print("hello")

我可以通过两种方式运行此脚本:
使用python解释器:

python3 a.py

变更权限

chmod a+x a.py; ./a.py

问题
如何在不使用chmod a+x script_name所有时间的情况下运行任何新的或旧的python脚本。

我对我的计算机具有root访问权限和用户访问权限。

基本上我想要所有.py文件的可执行权限,我们该怎么做?

我尝试了不同的shebang,例如:

#!/usr/bin/python3
#!/usr/bin/env python3
#!/usr/local/bin/python3
#!/usr/local/bin/env python3

python解释器也位于$ PATH中。echo $ PATH的输出如下:

/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Users/poudel/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/

此外,ls / usr / bin / py *具有:

/usr/bin/pydoc*            /usr/bin/python2.5@        /usr/bin/pythonw*
/usr/bin/pydoc2.5@         /usr/bin/python2.5-config@ /usr/bin/pythonw2.5@
/usr/bin/pydoc2.6@         /usr/bin/python2.6@        /usr/bin/pythonw2.6@
/usr/bin/pydoc2.7@         /usr/bin/python2.6-config@ /usr/bin/pythonw2.7@
/usr/bin/python*           /usr/bin/python2.7@
/usr/bin/python-config*    /usr/bin/python2.7-config@

相关链接:
http : //effbot.org/pyfaq/how-do-i-make-a-python-script-executable-
on-unix.htm
在linux中执行python文件时权限被拒绝
bash python
权限被拒绝通过bash启动python脚本


问题答案:

艰难的道路

以root权限运行以下命令:

find /your/path/ -type f -name "*.py" -exec chmod u+x {} \;

注意:

chmod如果您是.py文件的所有者,则无需以root用户身份运行。

聪明的方法

编写脚本来解决这个问题。

#!/bin/bash
if [ -f "$1" ]
then
geany "$1" # You could also use xdg-open if you set geany to open .py files
else
cp /path/to/python/startup/template "$1" # You may omit this if you don't have a default template
chmod u+x "$1"
geany "$1"
fi

将脚本另存为,pycreator例如/usr/bin/,然后说

chown root:root /usr/bin/pycreator
chmod +x-w /usr/bin/pycreator

要使用创建新脚本pycreator,请执行

pycreator calculator.py

@choroba在其评论中指向的[this]答案也提供了有关这方面的宝贵见解。



 类似资料:
  • 授予Snowflake中所有存储过程的执行权限。 我想我需要添加执行权限,但我不知道在雪花中需要在哪里配置存储过程权限。 有人想给存储过程/表权限吗?

  • 我有一个用户测试。我想授予此用户在所有数据库上的所有权限。怎样才能做到呢?

  • 已试过 获取 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,了解第1行“标识由'root'WITH GRANT option”附近使用的正确语法。 注意:在以前的版本中尝试时同样有效。 也试过 获取 错误1410(42000):不允许创建具有授权的用户 MySQL(8.0.11.0)用户名/密码是root/root。

  • 问题内容: 我已经创建了数据库,例如’mydb’。 现在,我可以从任何地方登录数据库,但是无法创建表。 如何授予该数据库和(将来)表的所有特权。我无法在“ mydb”数据库中创建表。我总是得到: 问题答案: 这就是我创建“超级用户”特权的方式(尽管我通常会指定一个主机)。 虽然此答案可以解决访问问题,但可以创建一个MySQL用户,该用户可以编辑其他用户的权限。 使用GRANT OPTION特权,您

  • 在Ora11g中,我使用以下方式向用户授予所有权限。 但在ORA12C中,当我执行grant privileges时,我得到以下错误。 从命令-授予创建会话,向xx授予任何权限错误报告-ORA-00604:递归SQL级别1 ORA-20997发生错误:“授予任何权限”授予不允许的ORA-06512:在“RDSADMIN.RDSADMIN”处,第79行ORA-06512:在第2 00604行。000

  • 在Android M(预览版)中,用户可以选择特定的应用程序并检索特定的权限。 所以我想问的是如何在运行时检查授权权限?