一.引子

最近在忙大创项目,在折腾hadoop的过程中免不了需要创建一个新用户并配置ssh免密登陆,然而这个看起来简单得不能再简单的地方我也栽了个跟头,真的尴尬,不过还是记下来吧,希望其他碰到问题的人能顺利解决。

二.情况复现

那么到底发生了啥,请容我娓娓道来,因为我要把用户创建和配置全部写到脚本里,所以我期望做到的是尽可能少的交互操作,更接近无人值守式配置。

①.需要给新创建的用户hadoop赋予root权限。这个如果是交互式操作那很方便了,直接visudo然后按照root的权限格式添加hadoop就行,但是非交互式就需要直接操作/etc/sudoers文件了,我选择的是使用sed命令插入,虽然echo貌似也行,但不能准确插入到指定行,所以作为半个强迫症我果断放弃,那么问题来了,怎么获取目标行号?这就需要一套组合拳

这条命令便能输出"root    ALL=(ALL)       ALL"这行的行号,我们的目标便是在它的下一行插入"hadoop    ALL=(ALL)       ALL",所以我们需要

这里我一开始没加"a"(ahadoop前那个),然后试了半天各种报错……这个是after的意思,即为在指定行数之后,还有个"i"是之前。把这两条命令合并便是如下

OK,这个问题便解决了。 阅读全文→