以不同的用户身份运行脚本 - 为什么权限被拒绝?

时间:2014-06-24 15:33:46

标签: bash permissions file-permissions

我正在以root身份运行脚本,使用useraddpasswd创建用户。然后在运行一些需要以新创建的用户身份运行的其他命令之前进行一些检查/安装。

所以我有创建用户的主脚本:

main.sh:

#!/bin/bash
useradd testuser
passwd testuser

yum -y install git
chmod 777 testuser.sh
su testuser -c ./testuserscript.sh

testuserscript.sh:

#!/bin/bash
git clone git://github.com/schacon/grit.git

当我运行./main.sh时:我收到以下错误:

bash: ./testuserscript.sh: Permission denied

当我这样做时,我得到以下内容:

-rwxrwxrwx. 1 root  root  728 Jun 24 11:02 testuserscript.sh

我是否运行了错误的命令来运行testscript作为testuser

1 个答案:

答案 0 :(得分:0)

在以下情况下可能会发生权限拒绝:

  1. 脚本没有调用它的用户的执行权限
  2. hash-bang(#!)之后的路径不正确或者没有指向可执行文件(或者用户没有权限执行此脚本)。
  3. 用户对导致脚本的所有文件夹都没有执行权限。
  4. 在您的代码中,您将chmod 777设置为testuser.sh,但之后您尝试执行testuserscript.sh

    我不希望su更改文件夹,但可能会尝试使用绝对路径。还要检查新创建的used的默认shell。为了规避所有这些(以及其他一些问题),请尝试:

    sudo -u testuser bash /tmp/testuserscript.sh
    

    您可以稍后使用变量来定义所有脚本在哪个文件夹中。