最近在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'