烂泥:puppet添加带密码的用户
前一篇文章,我们介绍了有关puppet3.7的安装与配置,这篇文章我们再来介绍下如何利用puppet添加带密码的用户。
要通过puppet添加带密码的用户,我们需要分以下几个步骤:
1、查看user资源帮助
2、user选项说明
3、添加系统用户
4、生成用户密码
5、添加带密码的用户
一、查看user资源帮助
要通过puppet为系统添加用户,我们需要首先查看puppet如何添加用户,这个我们可以查看puppet的user资源帮助信息。如下:
puppet describe user

puppet describe user命令可以查询user资源各个选项的帮助信息。
除此之外,我们还要通过puppet resource user命令,查看user资源在puppet中的使用方法,以及puppet中给出的user的资源使用模版。如下:
puppet resource user

二、user选项说明
user资源的选项比较多,我们在此主要介绍几个常用的选项。
ensure指定用户所处的状态,其值可以为:present、absent、role。其中present表示添加用户,absent表示删除用户。
uid指定用户的UID。
gid设置用户的组ID,可以是数字也可以是组名。
groups设置用户的组名,只能是组名,不能是gid。
name指定用户名。
comment用户的描述。
expiry用户使用期限。
home设置用户的家目录,user资源默认不创建用户家目录。
password指定用户的密码。
shell指定用户登录的shell。
system指定用户是否为系统用户,一般是小于500的UID用户。
三、添加系统用户
通过第一章节,我们知道了如何使用user资源,那么我们现在就添加一个用户。
3.1 给centos添加用户
在《烂泥:puppet3.7安装与配置》这篇文章中,我们提到puppet目前搭建在centos系统之上,所以我们先来给centos系统添加一个用户。
在puppet master端编辑puppet的站点文件site.pp,如下:
vi /etc/puppet/manifests/site.pp
node default{
user { 'ilanni':
ensure => 'present',
}}
这条命令的作用是,创建用户ilanni。其中ensure后边的字段为present表示创建ilanni这个用户,如果ensure后边的字段为absent表示删除ilanni这个用户。

puppet master端配置完毕后,现在我们切换puppet agent端,执行同步命令。如下:
cat /etc/system-release
puppet agent --test --server s.ilanni.com

通过上图,我们可以很容易的看到agent端已经从master端同步到相关的命令。
现在我们来查看,系统中是否已经创建ilanni这个用户。如下:
cat /etc/passwd |grep ilanni
cat /etc/group |grep ilanni
ll /home/

通过上图,我们可以看出系统中已经创建ilanni这个用户。
注意:通过上图,我们可以很明显的看出来。目前ilanni用户是没有家目录的。尽管passwd文件显示有其家目录,所以ilanni用户是不能登录到系统中的。
以上操作都是centos系统,因为puppet具有跨平台的性能,所以我们下面就在ubuntu上执行puppet同步。
3.2 给ubuntu添加用户
要给ubuntu添加用户,我们需要先给ubuntu安装puppet客户端。
有关在ubuntu上安装puppet客户端,我们可以查看puppet官网提供的帮助信息。如下:
https://docs.puppetlabs.com/guides/install_puppet/install_debian_ubuntu.html
wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update
apt-get -y install puppet





puppet客户端安装完毕后,我们来配置puppet和授权证书。有关puppet客户端的配置以及证书授权,可以参考《烂泥:puppet3.7安装与配置》这篇文章。
具体操作,看如下截图:
cat /etc/hosts
puppet agent --server s.ilanni.com
puppet cert --list
puppet cert sign c1.ilanni.com



puppet配置完毕后,我们现在在ubuntu上执行同步命令。如下:
puppet agent --test --server s.ilanni.com

查看是否创建ilanni用户,如下:

通过上图,我们可以很明显的看出puppet已经在ubuntu系统创建用户。
3.3 给windows添加用户
puppet也是支持windows系统,但是目前puppet只支持puppet客户端。
有关puppet的windows系统相关帮助信息,我们也可以在puppet官网查看帮助,如下:
https://docs.puppetlabs.com/guides/install_puppet/install_windows.html


有关puppet客户端在windows系统的下载及安装,我们在此就不一一进行截图。
puppet客户端安装完毕后,puppet的操作及配置与centos系统是一样的。如下:


通过上图,我们可以很容易的看出windows系统中也创建ilanni这个用户。这充分体现了puppet 的跨平台性。
注意:puppet for windows目前只支持file、user、group、scheduled_task(Windows专属资源类型)、package、service、exec、host,这个几个资源类型。
四、生成用户密码
Linux系统的密码都不是明文的,而是经过加密的。
要生成Linux系统密码,我们有两种方法:一种是先新建一个用户然后对对该用户设置密码,最后取其对应的shadow文件第一个冒号与第二个冒号之间的内容。第二种是通过grub-md5-crypt进行生成。
下面我们一一介绍下,本次我们测试的密码为ilanni123。
通过查看shadow文件的方法:
useradd test
passwd test
cat /etc/shadow |grep test

上图中红色细线标记出来的部分,就是我们所需要的加密后的密码。
通过grub-md5-crypt生成密码的方法:
yum -y install grub
grub-md5-crypt


上图中红色细线标记出来的部分,就是我们所需要的加密后的密码。
对比下以上两种方法,你会发现尽管密码是一样的,但是经过加密后的却不一样。
对于以上两种方法,我比较倾向于第一种方法,查看shadow文件。因为这种方法不需要在安装其他软件。
注意:windows系统添加用户密码时,使用的是明文,不需要加密。
五、添加带密码的用户
密码创建完毕后,我们现在来正式创建带密码的用户。
其实很简单的,我们只需要把相关的选项写上去就行了。内容如下:
cat site.pp
user { 'ilanni':
ensure => 'present',
home => '/home/ilanni',
shell => '/bin/bash',
password => '$6$5YNwr11X$cfNwsJNrGBVg/yEE.sL1E.Ch5KoZrVrhmz4bOP8QnhWRBS/hCYNxP52EGdS38aSJhB8GBN60PSbcaNbcjofUt0',
}
file {'/home/ilanni':
owner => ilanni,
group => ilanni,
mode => 700,
ensure => directory;
}
注意:该命令中出现了file资源,主要目的是对/home/ilanni目录进行授权以及修改其所属用户及用户组。
这样操作,是因为ilanni用户的家目录就是/home/ilanni,如果不对其进行授权以及修改其所属用户及用户组的话,ilanni是无法登录到系统的。

现在切换到puppet agent端,执行同步命令。如下:
puppet agent --test --server s.ilanni.com

通过上图,我们可以很明显的看出agent端已经同步到相关命令。
现在我们使用刚刚创建的用户登录系统,如下:
whoami

通过上图,我们可以很明显的看到ilanni用户已经可以正常登录到系统中了。
以上是在centos系统上进行操作的,下面我们在ubuntu系统上操作下。如下:


通过上图,我们可以很明显的看到新创建的用户已经可以登录到系统中了。
以上是在centos和ubuntu系统中进行操作的,可以看到创建的用户已经可以正常登录到系统了。
windows系统与centos、ubuntu添加带密码的用户不同,那就是windows系统添加的用户密码是明文的。即puppet master端user资源的password选项使用明文。
如下:
cat /etc/puppet/manifests/site.pp
node default{
user { 'ilanni':
ensure => 'present',
password => 'ilanni123',
} }

现在切换到windows端执行同步操作,如下:



通过上图我们可以看到,windows系统中puppet已经创建了ilanni用户,并且也可以正常登录系统了。
到此有关通过puppet创建带密码的用户就结束了。
烂泥:puppet添加带密码的用户的更多相关文章
- puppet运维自动化之用户管理
系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...
- roundcute 添加修改密码插件
添加修改密码插件 现打开main.inc.php 文件,搜索“$rcmail_config['plugins']”,找到: // List of active plugins (in plugins/ ...
- 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!
转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208 版权声明:本文为博主 ...
- 创建免密码sudo用户
创建免密码sudo用户 #!/bin/bash c1=`grep -w 'bkuser' /etc/passwd | wc -l` ]; then echo "bkuser已经存在" ...
- Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- python win32com 读取带密码的excel
之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, ...
- [转帖]vagrant 添加带版本号的 box
vagrant 添加带版本号的 box https://www.jianshu.com/p/12cf1ecb224b 第三种好用 lnmpcomposerphp 阅读约 8 分钟 前言 众所周知,v ...
- Ruby Rails学习中:添加安全密码
接上篇 一. 添加安全密码 我们已经为 name 和 email 字段添加了验证规则, 现在要加入用户所需的最后一个常规属性: 安全密码.每个用户都要设置一个密码(还要二次确认), 数据库中则存储经过 ...
- day01 mysql认识 安装 配置 起服务 密码 字符集 用户授权
day01 mysql 一.认识mysql 关系型数据库: 最流行的关系型数据库管理系统,支持大型数据库,处理上千万条记录 关系型: oracle, ...
随机推荐
- OpenWRT学习笔记-1@WNDR3800
很久以前买了一台二手wndr3800 放假了刷成op可以一耍.ar71xx,芯片还比较热门. 首先是刷机,准备使用OP CC 15.05 r46767,官方稳定版.把原装系统降级到1.0.0.16,就 ...
- [mysql] 查看mysql执行时间
mysql的 profiling不是默认打开的 查看profiling是否找开 mysql> show variables like "%pro%"; +---------- ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- ENVI【非监督分类】
非监督分类的概念: 非监督分类,又称“聚类分析或者点群分析”.在多光谱图像中搜寻.定义其自然相似光谱集群的过程.它不必对图像地物获取先验知识,仅依靠图像上不同地物光谱信息进行特征提取,在统计特征的差别 ...
- 过去几个月出炉的30款最喜欢的 jQuery 插件
在这篇文章中,我们收集了一些在过去的几个月里最喜欢的 jQuery 插件.为了使您更容易搜索到自己喜欢的 jQuery 插件,我们已经对插件进行了分类: 页面布局插件,图片和视频插件,滑块和画廊,排版 ...
- ImageLightbox.js – 响应式的图片 Lightbox 插件
ImageLightbox.js 是一款很简洁的用于显示图片灯箱效果(Lightbox)的插件,没有字幕,导航按钮或默认背景.如果默认功能不够用的话,你可以很容易地自定义 JavaScript 函数扩 ...
- 如何判断一个js对象是否一个DOM对象
我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否DOM对象,首先想到的无非就是它是否具有D ...
- ArcGIS中国工具2.2正式发布
ArcGIS中国工具2.2新功能 1. 2.0全面支持ArcGIS10.3 2. 全面修改成插件,原来部分是独立运行的EXE 3. 可以制作倾斜的矩形图框 4. 修改宗地(地块)左上角为第一个点,填写 ...
- Kotlin语法(基础)
一.基础语法: 1. 定义包名: 包名应该在源文件的最开头,包名不必和文件夹路径一致:源文件可以放在任意位置. package my.demo 2. 定义函数: fun sum(a: Int , b: ...
- Android 4.4 KitKat 新特性
New in Android 4.4 KitKat 本文是一个概览,关于KitKat,也即Android4.4的新东西,先是功能型的,之后是设计上的. 很多特性本文并没有提到,很多提到的特性也只是简短 ...