【问题标题】:Need to use sudo su - in Unix shell script需要使用 sudo su - 在 Unix shell 脚本中
【发布时间】:2014-05-19 06:47:16
【问题描述】:

我是初学者,我需要在脚本的一个命令行中为两个不同的用户使用sudo su -pwd。 (我以pwd为例,具体的命令并不重要。) 我正在使用命令sudo su - user -c pwd。此命令在切换到一个用户时有效,但在切换到另一个用户时无效。

例如:-

$ sudo su - ora -c pwd
/oracle/
$ sudo su - adm -c pwd
Sorry, user myuser is not allowed to execute '/usr/bin/su - adm -c pwd' as root on server.
$

我怎样才能让它也适用于“adm”用户?

【问题讨论】:

  • 你真正想做什么?为用户oraadm 建立主目录?如果是这样,这不是你这样做的方式:echo ~ora ~adm 应该完成这项工作。至于失败的原因,您需要(认真)查看/etc/sudoers 配置文件。
  • 我认为这不是一个好方法。通常,您编写脚本时假设它以适当的用户身份运行。然后,您可以为该脚本只 sudo 给该用户(并在 sudoers 文件中添加适当的条目)。
  • 第二个用户(不工作的那个)是 sudoer 用户?因为不是所有的用户都是sudoers,也就是说不是所有的用户都能做sudo su。看看这个博客Take Control of your Linux
  • 不,这只是一个例子,与密码无关,它不允许我运行任何命令sudo su - adm -c anycommand..
  • 那么您需要仔细检查您的 /etc/sudoers 文件。它似乎允许您切换到ora,但不能切换到adm;这有点奇怪,因为它可以让你成为 root。您可以尝试:sudo sh -c "su - adm -c pwd" 看看这是否能让您有所收获。

标签: shell unix sudo su


【解决方案1】:

sudo 用于以其他人的身份运行命令。 默认情况下,它以 root 身份运行命令。 您还可以提供 -u 选项以其他用户身份运行命令。 你真的不需要一起使用 sudo 和 su 因为他们做类似的工作。 Sudo 以更加可控和可配置的方式完成这项工作。

可以配置sudo来控制:

  • 谁可以使用它。
  • 他们可以运行哪些命令。
  • 他们可以以谁的身份运行。
  • 他们在这样做时是否需要提供密码。

您一次只能运行一个命令,因此如果您需要同时执行几件事,则需要编写一个脚本。或者,您可以将它们串联在一个衬里中。或者最后你可以作为你需要的用户运行一个 shell。例如:

sudo bash

我认为在你的情况下你可能想要使用:

sudo -u adm anycommand

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多