Bash脚本,可以在提供密码后执行

时间:2014-07-10 12:04:45

标签: linux bash shell debian

我需要让/bin/bash启用了shell的普通用户获取Web服务器日志。日志存储在drwx------权限的目录中,由root:root拥有,因此很明显他们无法访问其中的任何文件(是的,我真的不能更改此权限设置)。

系统是Debian Linux。所以我正在寻找一些包装脚本,它可能不是bash,在我看来,它会做以下事情:

  • 你传递一个论点 - 一个网站名称 - 即site.com;
  • grep包含此site.com;
  • 的所有行
  • 将结果存储到用户主目录。

这部分很容易,当你想绕过限制但至少在某种程度上安全时,会出现真正的问题。所以:

  • 脚本必须在提供密码后才能启动;
  • 如果是bash脚本,它们运行的​​是运行它的用户帐户的权限 - 所以我的猜测是它应该有su -m root -c 'grep ...',但我发现如何将密码传递给内部的提示到目前为止的脚本(sudo并不完全适合);
  • 如果有办法从脚本内部将密码传递给su,那么当然脚本本身必须具有751权限和root:root的所有者 - 以便最终用户运行脚本(或其他任何人)无法查看脚本的内容。

我愿意接受如何做到这一点的建议,或者是否应该完成(至少这样):)谢谢。

1 个答案:

答案 0 :(得分:2)

鉴于我对您的需求的理解,我在此总结了我想到的各种选择。没有特别的顺序:

  • sudo与策略文件(/etc/sudoers - 一起使用 - 编辑 visudo)限制用户可用的命令
  • 使用cron作业(或多或少智能)定期收集服务器上的数据 间隔并将它们存储在您可以访问的位置(或邮件它们给您...)
  • 如果您拥有对服务器的管理访问权限,则可以创建一个特殊用户 " log-grepping"工具作为连接shell(/etc/passwd
  • 如果您有ssh访问您的服务器,您也可以使用 服务器上的authorized_keys文件为restrict remote command over ssh

这些只是一般指示。了解他们。试试吧。如果你挣扎,不要犹豫,发布另一个问题!

总而言之,正如评论中已经说明的那样,请不要自己开发自己的安全限制系统"。 sudosshpam(可能还有其他人...... selinux?)是专为此目的制作的......

相关问题