zoukankan      html  css  js  c++  java
  • 如何以nobody用户执行命令?

    最近在logstash中使用nobody用户启动logstash,一想,nobody用户的shell不是/sbin/nologin吗? 不能登录执行命令呀?

    于是看了一下它的启动脚本,是使用其他方式进行的。。。

    玩了几年linux竟然还不知道chroot可以干这事,只知道chroot将根目录切换到某一位置,,汗颜。。

    使用su -l nobody -c "命令"方式

    然,nobody用户的shell是/sbin/nologin,执行命令失败

    # su -l nobody -c "/usr/bin/ls /tmp"
    This account is currently not available.

    那runuser呢? 同样不行。。。

    # runuser -c "ls /tmp" nobody
    This account is currently not available.

    最后使用chroot是可以的。。

    # chroot --userspec=99:99 / sh -c id
    uid=99(nobody) gid=99(nobody) 组=99(nobody),0(root)

    知识贵在积累。

    chroot命令帮助

    # chroot --help
    用法:chroot [选项] 新根 [命令 [参数]...]
     或:chroot 选项
    以指定的新根为运行指定命令时的的根目录。
    
      --userspec=用户:组      指定所用的用户及用户组(可使用"数字""名字")
      --groups=组列表         指定可供选择的用户组列表,形如组1,组2,组3...
          --help        显示此帮助信息并退出
          --version        显示版本信息并退出
    
    If no command is given, run '${SHELL} -i' (default: '/bin/sh -i').
    
    GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
    请向<http://translationproject.org/team/zh_CN.html> 报告chroot 的翻译错误
    要获取完整文档,请运行:info coreutils 'chroot invocation'
  • 相关阅读:
    电脑无法删除文件提示源路径太长怎么办|电脑由于文件名太长无法删除的解决方法
    史上最清晰的红黑树讲解(上)
    深入理解Java PriorityQueue
    为什么你的博客不够火?
    Java ArrayDeque源码剖析
    Java LinkedList源码剖析
    Java HashSet和HashMap源码剖析
    Java ArrayList源码剖析
    Java Collections Framework概览
    顺序对齐
  • 原文地址:https://www.cnblogs.com/xiaoming279/p/6115167.html
Copyright © 2011-2022 走看看