gpt4 book ai didi

linux - sudo 还是不 sudo?

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:22 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to install python modules without root access?

(9 个回答)


3年前关闭。




最终目标是在 redhat 机器上的 shell 脚本中运行这个单一命令。我已经在 ubuntu 机器上使用该脚本多年,但我在 redhat 上的权限较少。我将在下面描述我尝试的解决方案,但想先提出问题。

read -r val1 val2 val3 <<<$(python3 script_name.py "$json_args")

在 redhat 中,我必须将 python/pip3.5 安装为 sudo ......就像这样......
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install python35u
sudo yum -y install python35u-pip
sudo pip3.5 install --upgrade pip

sudo pip3.5 install boto3
sudo pip3.5 install awscli --upgrade --user

不同的机器可能有不同的python版本,所以我为 python3创建了一个别名在 .bash_profile 中,因此相同的 shell 脚本在任何地方都可以使用。
echo 'alias python3="python3.5"' >>~/.bash_profile

现在......一切都被锁定在python中......我可以导入boto3,但它不可用......从python3命令行演示......
>>> import boto3
>>> boto3.__version__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'boto3' has no attribute '__version__'

所以我尝试将python3作为'sudo'运行,但得到了......
sudo: python3: command not found

所以我像这样为 .bashrc 添加了一个别名......
echo 'alias sudo="sudo "' >>~/.bashrc

伟大的!现在事情似乎奏效了!我终于可以运行我最初想要的命令了(见下文)。
sudo python3 script_name.py args

或更具体地说( 请注意添加的 sudo 与我的介绍相比)...
read -r val1 val2 val3 <<<$(sudo python3 script_name.py "$json_args")

从命令行工作得很好!

...直到我尝试将其放入 shell 脚本中。现在我回到了我原来的错误......
sudo: python3: command not found

我已经尝试了各种各样的东西......将'sudo'别名放在脚本中......把它放在/root/.bashrc......一些其他随机的东西。

在这一点上,我怀疑我也可以将 bash 脚本作为 sudo 运行......但这开始导致各种其他问题,我怀疑这是一种非常糟糕的安全实践。我觉得我已经出轨了,这里有一些更聪明的解决方案。

任何想法
  • 如何在没有 sudo 的情况下运行 python3.5 并让它工作
  • 如何获得 sudo python3在 shell 脚本中工作而不将 shell 脚本作为 sudo 运行?

  • 提前致谢

    编辑

    根据@JulianLoaiza 和@TerryCarmen 的以下建议, chown -R允许我在没有 sudo 的情况下运行 python3 ...但是当我这样做时,boto3 不能再授权我了。检查 sys.path从 python 的角度来看,只有一个区别......那就是
  • sudo 有:'/root/.local/lib/python3.5/site-packages'
  • 没有 sudo 有:'/home/ec2-user/.local/lib/python3.5/site-packages'

  • 两者都有 '/usr/lib/python3.5/site-packages' ,它出现在最后(并且包含我明确安装的库)。

    可能会发生什么... /root/.local/lib/python3.5/site-packages没有关于 awscli 或 boto... /home/ec2-user/.local/lib/python3.5/site-packages里面有“awscli”和“botocore”的东西。 /usr/lib/python3.5/site-packages 也是如此...其中也有我明确安装的 boto3 和其他库。

    python 是否会因为查看 /home/ec2-user/.local/lib/python3.5/site-packages 而感到困惑?之前 /usr/lib/python3.5/site-packages当我没有以“sudo”身份登录时?

    最佳答案

    您可以尝试更改文件夹所有权,

    sudo chown -R ec2-user:ec2-user /usr/lib/python2.7
    sudo chown -R ec2-user:ec2-user /usr/lib64/python2.7

    关于linux - sudo 还是不 sudo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850731/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com