puppet怎样实现ftp用户更改密码码

puppet自动化运维用户管理传文件改密码shell脚本_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
puppet自动化运维用户管理传文件改密码shell脚本
上传于|0|0|文档简介
&&puppet自动化运维用户管理传文件改密码shell脚本
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩12页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&烂泥&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添加用户
在《》这篇文章中,我们提到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
通过上图,我们可以很容易的看到agent端已经从master端同步到相关的命令。
现在我们来查看,系统中是否已经创建ilanni这个用户。如下:
cat /etc/passwd |grep ilanni
cat /etc/group |grep ilanni
通过上图,我们可以看出系统中已经创建ilanni这个用户。
注意:通过上图,我们可以很明显的看出来。目前ilanni用户是没有家目录的。尽管passwd文件显示有其家目录,所以ilanni用户是不能登录到系统中的。
以上操作都是centos系统,因为puppet具有跨平台的性能,所以我们下面就在ubuntu上执行puppet同步。
3.2 给ubuntu添加用户
要给ubuntu添加用户,我们需要先给ubuntu安装puppet客户端。
有关在ubuntu上安装puppet客户端,我们可以查看puppet官网提供的帮助信息。如下:
/guides/install_puppet/install_debian_ubuntu.html
wget /puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update
apt-get -y install puppet
puppet客户端安装完毕后,我们来配置puppet和授权证书。有关puppet客户端的配置以及证书授权,可以参考《》这篇文章。
具体操作,看如下截图:
cat /etc/hosts
puppet agent --server
puppet cert --list
puppet cert sign
puppet配置完毕后,我们现在在ubuntu上执行同步命令。如下:
puppet agent --test --server
查看是否创建ilanni用户,如下:
通过上图,我们可以很明显的看出puppet已经在ubuntu系统创建用户。
3.3 给windows添加用户
puppet也是支持windows系统,但是目前puppet只支持puppet客户端。
有关puppet的windows系统相关帮助信息,我们也可以在puppet官网查看帮助,如下:
/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,
注意:该命令中出现了file资源,主要目的是对/home/ilanni目录进行授权以及修改其所属用户及用户组。
这样操作,是因为ilanni用户的家目录就是/home/ilanni,如果不对其进行授权以及修改其所属用户及用户组的话,ilanni是无法登录到系统的。
现在切换到puppet agent端,执行同步命令。如下:
puppet agent --test --server
通过上图,我们可以很明显的看出agent端已经同步到相关命令。
现在我们使用刚刚创建的用户登录系统,如下:
通过上图,我们可以很明显的看到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创建带密码的用户就结束了。
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.052 (s). 10 q(s)系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限。你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户?那就是我们今天的主题,puppet运维自动化之用户管理。
系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限。你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户?那就是我们今天的主题,puppet运维自动化之用户管理。
【基础回顾】
puppet如何管理用户(user)资源呢?
利用符合POSIXAPI标准的puppet自带的私有工具来进行用户和组管理,puppet不会直接修改/etc/passwd文件
puppet用户管理特性
allows_duplicates:支持同样的用户拥有同样的uid
manages_homedir:管理用户的home目录,删除和新建
manages_passwords:管理用户密码
manages_solaris_rbac:管理角色和普通用户
puppet用户资源管理参数
allowdupe:是否允许相同的uid用户存在,可以设置的值为true或者false.
auth_membership:whetherspecifiedauthsshouldbetreatedastheonlyauthsofwhichtheuserisamemberorwhethertheyshouldbemerelybetreatedastheminimummembershiplist.可设置的值是inclusive,minmum.
auths:指定用户的认证方式。多个认证方式可用数组列出来。
comment:用户的描述。
ensure:指定用户是否存在,可以设置的值为present,absent,role.
gid:用户的组ID。
groups:指定该用户属于那些组的成员.
home:用户的主目录
key_membership:whetherspecifiedkeyvlauesshouldbetreatedastheonlyattributesoftheuser
keys:用于solaris,指定key
managehome:指定用户是否管理home主目录.
指定用provider,用什么命令来执行用户操作,可用的provider有:
directoryserviceOSX上面的用户管理命令,不详述,有需求请参考原文档
hpuxuseraddhp-ux系统的用户管理命令
ldapldap方式管理用户
pwfreebsd上面的用户管理
user_role_addsolaris上面的用户管理
useraddlinux上面的用户管理
password:指定用户的结过MD5加密码后的密码。最好以&&引起来,记着,用单引号,因为经过MD5加密后可能会出$符号。
role_membership:whetherspecifiedrolesshouldbetreatedastheonlyrolesofwhichtheuserisamember.
role:用户的角色,多个角色可以用数组来表示。
shell:用户登录后的shell.
uid:用户的uid
【测试示例】
1.我要创建一个名为test的用户.
user{"test":
uid=&2000,
gid=&2000,
home=&"/home/test",
shell=&"/bin/bash";
注意:puppet在创建用户的时候,并不会创建用户的home目录
2.比如test用户离职了,需要删除test用户
代码示例:
user{"test":
ensure=&"absent",
3.创建test用户并管理用户目录
代码示例:
user{"test":
ensure=&"present",
managehome=&true,
4.创建test用户,且让test用户是属于sa组。
代码示例:
user{"test":
ensure=&"present",
managehome=&true,
groups=&sa,
注意,用户所属的SA组要先创建。
关于如何创建组,在接下来的会为大家讲,这里给举个例子
代码示例:
group{"sa":
ensure=&"present",
gid=&3000,
总结:用户和密码跟系统管理员关系密切,管理用户的切不可马虎。方便快捷,实用的管理才是王道。
阅读(...) 评论()用户名:凌激冰
文章数:199
评论数:2094
访问量:2976696
注册日期:
阅读量:1297
阅读量:3317
阅读量:433660
阅读量:1121343
51CTO推荐博文
puppet成长日记一 file资源详细介绍及案例分析一、系统环境1、puppet服务端
Release:RHEL6.4
HOSTNAME: puppetserver.rsyslog.org
TCP/IP: 172.16.200.100/24
Packages:
puppet-server-2.7.21-1.el6.noarch
mcollective-client-2.2.4
activemq-5.5.0
2、puppet节点
Release: RHEL5.8
HOSTNAME: agent1.rsyslog.org
TCP/IP: 172.16.200.101/24
puppet-2.7.21-1.el5
mcollective-2.2.4-1.el5
3、puppet节点
Release: RHEL6.4
HOSTNAME: agent3.rsyslog.org
TCP/IP: 172.16.200.103/24
puppet-2.7.21-1.el6
mcollective-2.2.4-1.el6二、资源介绍1、实现功能1.1、支持文件和目录1.2、设置文件及目录的所有者及权限1.3、恢复文件(包括文件的内容、权限及所有者)1.4、清理目录以及子目录2、支持参数2.1 ensure =& {present|absent|directory|file|link}, 指定文件的目标状态=& present, 检查文件是否存在,不存在则新建之=& absent, 检查文件是否存在,存在则删除之=& directory, 指定这是一个目录,不存在则创建2.2 owner|user =& root, 所属用户,也可以用UID2.3 group =& puppet, 所属用户组,也可以用GID2.4 mode =& 0644, 权限属性,四位八进制数2.5 source =& &puppet:///modules/ssh/etc/ssh/sshd_config& | soure =& &/etc/passwd& 文件获取地址,以puppet:///开头为从master下载,正常路径则在agent本地读取 备注:&puppet://&等价于主配置文件puppet.config中的modulepath值2.6 path =& &/etc/postfix/main.cf&, &文件完整路径。默认与title相同可不写eg.file { &main.cf&: & &path =& &/etc/postfix/main.cf&,2.7 content =& &hello&,|content =& template(&postfix/main.cf.erb&), &文件的具体内容,亦可由erb模板生成,选择这个可不写资源source2.8 backup =& &#39;main&#39;,| backup =& &.$backup_date.bak&, 节点更新之前上一个版本备份方式;backup =& &#39;main&#39;,需要结合资源filebucket实现2.9 recurse =& &#39;{true|false|inf|remote}&#39;, 对目录是(true)否(false)递归(ensure =& directory时有效) 2.10 puppet依赖关系资源有三个,分别为require,before,afterrequire =& Class[&mysql::install&], | require =& Package[&setup&], &当前资源或者类被要求的资源或者类所依赖,需要被要求的资源或者类先执行成功后在执行自己的资源或者类before &在某个资源之前执行package { &openssh-server&:...before =& File[&/etc/ssh/sshd_config&], & }after 在某个资源之后执行file {&/etc/ssh/sshd_config&:... & &after =& Package[&openssh-server&], & }2.11 puppet触发更新有两个,分别为notify,subscribe,写的位置不同。notify {&operatingsystem is $operatingsystem&: &将输出内容记录到日志里面,可在调试的时候查看。 & &withpath =& true|false, &#是否打印全路径}notify =& Class[&mysql::service&], 当前类或者资源的文件被改动后通知服务重启。subscribe =& Class[&ssh::config&], 该资源有更新时,通知另一个资源执行相应的动作。目前支持subscribe只有exec、service、mount2.12 link软连接设置 /etc/file2 -& /etc/passwdfile{ &/etc/file2&:... & & & &ensure =& link, & & & &target =& &/etc/passwd&,}2.13 purge =& true &清理目录下面没有被资源被管理的文件都会被清除force =& true & 和purge =& true配合使用才能删除目录,mode =& 0700保证具有删除权限ignore =& file|directory, 忽略某一个目录或者文件做任何操作三、资源示例1、示例一1.1 实现功能*要求从服务器指定路径下载motd文件*要求文件权限为700,属组和属主都为puppet*要求setup包在motd文件下载之前被安装1.2 配置说明class motd::motd {
package{ setup:
ensure =& present,
file{ "/etc/motd":
owner =& "puppet",
group =& "puppet",
mode =& 0700,
source =& "puppet://$puppetserver/modules/motd/etc/motd",
require =& Package["setup"],
}1.3 客户端agent1上测试[root@agent1 ~]# puppet agent --test
info: Caching catalog for agent1.rsyslog.org
info: Applying configuration version ''
notice: /File[/etc/motd]/ensure: defined content as '{md5}0acb622c16dbdecb670d8920d96bdd30'
notice: Finished catalog run in 0.41 seconds
[root@agent1 ~]# ll /etc/motd
-rwx------ 1 puppet puppet 82 Sep
3 15:33 /etc/motd2、示例二2.1 实现功能*在节点上创建/etc/passwd的软连接为/etc/file22.2 配置说明class motd::file2 {
file{ "/etc/file2":
owner =& "puppet",
group =& "puppet",
ensure =& link,
target =& "/etc/passwd",
}2.3 客户端agent1上测试[root@agent1 ~]# puppet agent --test
info: Caching catalog for agent1.rsyslog.org
info: Applying configuration version ''
notice: /File[/etc/file2]/ensure: created
notice: Finished catalog run in 0.07 seconds
[root@agent1 ~]# ll /etc/file2
lrwxrwxrwx 1 puppet puppet 11 Sep
3 15:46 /etc/file2 -& /etc/passwd3、示例三3.1 实现功能*在节点上创建/etc/dir1目录*要求目录下面除了dir2外的所有目录及文件的权限为0700,所有者为puppet*要求每次更新将&This is dir1!&写入日志里面3.2 配置说明class motd::dir1 {
file{ "/etc/dir1":
owner =& "puppet",
group =& "puppet",
mode =& 0700,
ensure =& directory,
recurse =& true,
purge =& true,
force =& true,
ignore =& "dir2",
notify { "This is dir1!":
withpath =& true,
}3.3 客户端agent1上测试[root@agent1 ~]# puppet agent --test
info: Caching catalog for agent1.rsyslog.org
info: Applying configuration version ''
notice: This is dir1!
notice: /Stage[main]/Motd::Dir1/Notify[This is dir1!]/message: defined 'message' as 'This is dir1!'
notice: /File[/etc/dir1/dir3]/owner: owner changed 'root' to 'puppet'
notice: /File[/etc/dir1/dir3]/group: group changed 'root' to 'puppet'
notice: /File[/etc/dir1/dir3]/mode: mode changed '0755' to '0700'
notice: /File[/etc/dir1/dir3]/seluser: seluser changed 'root' to 'system_u'
notice: /File[/etc/dir1/dir3/file3]/owner: owner changed 'root' to 'puppet'
notice: /File[/etc/dir1/dir3/file3]/group: group changed 'root' to 'puppet'
notice: /File[/etc/dir1/dir3/file3]/mode: mode changed '0644' to '0700'
notice: /File[/etc/dir1/dir3/file3]/seluser: seluser changed 'root' to 'system_u'
notice: Finished catalog run in 0.11 seconds
[root@agent1 ~]#
[root@agent1 ~]#
[root@agent1 ~]# ll /etc/dir1/
drwxrwxrwx 2 puppet puppet 4096 Sep
3 16:00 dir2
drwx------ 2 puppet puppet 4096 Sep
3 16:06 dir34、示例四4.1 实现功能*在节点上创建/etc/dir2目录,权限为0700,所有者为puppet*要求目录下面只允许有dir1目录,并且dir1目录及下一级目录或文件权限属性保持原有不变4.2 配置说明class motd::dir2 {
file{ "/etc/dir2":
owner =& "puppet",
group =& "puppet",
mode =& 0700,
ensure =& directory,
recurse =& true,
purge =& true,
force =& true,
ignore =& "dir1",
}4.3 客户端agent1上测试[root@agent1 ~]# puppet agent --test
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/my_apply2.rb
info: Loading facts in /var/lib/puppet/lib/facter/my_apply1.rb
info: Loading facts in /var/lib/puppet/lib/facter/my_apply3.rb
info: Loading facts in /var/lib/puppet/lib/facter/backup_date.rb
info: Caching catalog for agent1.rsyslog.org
info: Applying configuration version ''
notice: /File[/etc/dir2]/ensure: created
notice: Finished catalog run in 0.05 seconds
[root@agent1 ~]# mkdir /etc/dir2/dir1
[root@agent1 ~]# mkdir /etc/dir2/dir2
[root@agent1 ~]# touch /etc/dir2/dir1/file1
[root@agent1 ~]# touch /etc/dir2/dir2/file2
[root@agent1 ~]# puppet agent --test
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/my_apply2.rb
info: Loading facts in /var/lib/puppet/lib/facter/my_apply1.rb
info: Loading facts in /var/lib/puppet/lib/facter/my_apply3.rb
info: Loading facts in /var/lib/puppet/lib/facter/backup_date.rb
info: Caching catalog for agent1.rsyslog.org
info: Applying configuration version ''
info: /File[/etc/dir2/dir2]: Recursively backing up to filebucket
info: FileBucket adding {md5}d41d8cd98f00b204e9800998ecf8427e
info: /File[/etc/dir2/dir2]: Filebucketed /etc/dir2/dir2/file2 to puppet with sum d41d8cd98f00b204e9800998ecf8427e
notice: /File[/etc/dir2/dir2]/ensure: removed
notice: Finished catalog run in 0.09 seconds
[root@agent1 ~]# ll /etc/dir2/
drwxr-xr-x 2 root root 4096 Sep
3 16:13 dir1
[root@agent1 ~]#欢迎puppet精英加入自动化运维管理群 本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
18:13:15 14:15:56

我要回帖

更多关于 puppet什么意思 的文章

 

随机推荐