【问题标题】:Changing unix user in a shell script在 shell 脚本中更改 unix 用户
【发布时间】:2012-07-15 16:09:57
【问题描述】:

我想在 shell 脚本中更改当前用户,以便通过将登录名和密码作为参数传递给用户以管理员身份执行命令的能力。

我希望有能力做类似的事情:

sh ./script.sh login password

在脚本内部,类似:

sudo $1 $2 etc...

但是我不知道如何清楚地编码。

感谢您的帮助

【问题讨论】:

    标签: unix root sudo administrator su


    【解决方案1】:

    只需使用 Sudo

    sudoers(5) 文件允许非常复杂的权限和命令规范。作为一个简单的示例,您可以让组中的每个人都以 root 身份运行单个脚本,而无需密码。这更具脚本性,同时仍允许您限制访问。例如:

    # /etc/sudoers
    %somegroup ALL=(ALL:ALL) NOPASSWD:/path/to/script.sh
    

    由于默认情况下该脚本将以 root 身份运行,因此无需在您的脚本中跳过更多的环节。

    关于时事性的说明

    这对于 Stack Overflow 来说有点热门,因为它与脚本相关。但是,如果您有关于配置 sudoers 文件的后续问题,您可能应该在 SuperUser 上提出这些问题。

    【讨论】:

      【解决方案2】:

      我对 sudo 命令的经验有限,但我知道您可以使用文本编辑器创建代码,并使用 chmod 命令更改权限以及人们可以访问您的代码的不同方式。

      更具体地说,获得 .command 文件后,您可以进入模拟器并输入 chmod。之后添加一个空格,然后您可以自定义可以实际与代码交互的用户。例如,chmod a+rwx 表示每个人 (a) 都可以拥有读、写和执行 (rwx) 的权限。 chmod 有很多使用方法,这个网页是找出这些方法的好资源: http://www.zzee.com/solutions/how-to-use-chmod.shtml

      在 chmod 和 user/permissions 参数之后,您可以在末尾添加代码的文件路径,以告诉 UNIX 哪个文件要 chmod。之后,您可以手动更改可能运行代码的管理组的成员,以提供更好的灵活性,正如 CodeGnome 建议的那样。

      【讨论】: