设为首页 收藏本站
查看: 858|回复: 0

[经验分享] puppet系列之sudo模块

[复制链接]

尚未签到

发表于 2018-8-3 07:32:17 | 显示全部楼层 |阅读模式
  需求:每台服务器上都创建dev组,专门给开发人员,给特定的开发人员建账号,并加入dev组;
  运维人员也将创建各自的用户,并加入wheel组,通过sudo来对组里成员做权限设置。
  架构如下:

  manfests里面的文件内容如下:
  


  • 1,init.pp
  • class sudo {
  •   case $::osfamily {
  •     'RedHat': {
  •       include "sudo::conf"
  •       import 'sudoers.pp'
  •     }
  •     default: {
  •       fail("$::osfamily not yet supported by the 'sudo' module!")
  •     }
  •   }
  • }

  • 2,conf.pp
  • class sudo::conf {
  •   package { "sudo":
  •     ensure => present,
  •   }

  •   # Source the sudoers file from the Puppet Master
  •   file { "/etc/sudoers":
  •     ensure  => present,
  •     owner   => 'root',
  •     group   => 'root',
  •     mode    => 0440,
  •     source  => "puppet:///modules/sudo/sudoers",
  •     require => Package["sudo"],
  •   }

  •   # Source a new 'su' file for PAM (caution: this may be platform-specific)
  •   file { "/etc/pam.d/su":
  •     ensure => present,
  •     owner  => 'root',
  •     group  => 'root',
  •     mode   => 0644,
  •     source => "puppet:///modules/sudo/pam_su_el6"
  •   }

  •   # Clear any config in sudoers.d
  •   file { "/etc/sudoers.d":
  •     ensure  => directory,
  •     owner   => 'root',
  •     group   => 'root',
  •     mode    => '0750',
  •     recurse => true,
  •     purge   => true,
  •     require => Package["sudo"],
  •   }
  • }

  • 3,sudoers.pp
  • define sudo::sudoers (
  •   $sudo_sudoers ,
  •   $sudo_sysadmins ,
  • # $admins   = split($sudo_sysadmins, ','),
  • # $sudoers  = split($sudo_sudoers, ','),
  • )
  • {
  •   user { [ $sudo_sysadmins ]:
  •     ensure  => present,
  •     groups  => ['wheel'],
  •     require => Group['wheel'],
  •   }

  •   user { [ $sudo_sudoers ]:
  •     ensure  => present,
  •     groups  => ['dev'],
  •     require => Group['dev'],
  •   }

  •   group { "wheel":
  •     ensure => present,
  •   }

  •   group { "dev":
  •     ensure => present,
  •   }
  • }
  

  files目录文件内容如下:
  


  • 1,pam_su_el6
  • #%PAM-1.0
  • # This file is managed by Puppet.
  • #
  • auth        sufficient  pam_rootok.so
  • # Uncomment the following line to implicitly trust users in the "wheel" group.
  • #auth       sufficient  pam_wheel.so trust use_uid
  • # Uncomment the following line to require a user to be in the "wheel" group.
  • auth        required    pam_wheel.so use_uid
  • auth        include     system-auth
  • account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
  • account     include     system-auth
  • password    include     system-auth
  • session     include     system-auth
  • session     optional    pam_xauth.so

  • 2,sudoers

  • ## Sudoers allows particular users to run various commands as
  • ## the root user, without needing the root password.
  • ##
  • ## Examples are provided at the bottom of the file for collections
  • ## of related commands, which can then be delegated out to particular
  • ## users or groups.
  • ##
  • ## This file must be edited with the 'visudo' command.

  • ## Host Aliases
  • ## Groups of machines. You may prefer to use hostnames (perhap using
  • ## wildcards for entire domains) or IP addresses instead.
  • # Host_Alias     FILESERVERS = fs1, fs2
  • # Host_Alias     MAILSERVERS = smtp, smtp2

  • ## User Aliases
  • ## These aren't often necessary, as you can use regular groups
  • ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
  • ## rather than USERALIAS
  • # User_Alias ADMINS = jsmith, mikem


  • ## Command Aliases
  • ## These are groups of related commands...

  • ## Networking
  • #Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

  • ## Installation and management of software
  • Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

  • ## Services
  • #Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

  • ## Updating the locate database
  • #Cmnd_Alias LOCATE = /usr/bin/updatedb

  • ## Storage
  • Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

  • ## Delegating permissions
  • #Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

  • ## Processes
  • #Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

  • ## Drivers
  • #Cmnd_Alias DRIVERS = /sbin/modprobe

  • ## Denied commands for dev
  • Cmnd_Alias DEV_DENIED = /bin/su, /usr/sbin/visudo, /bin/chgrp, /usr/sbin/adduser, /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/sbin/passwd, /sbin/shutdown, /sbin/init, /sbin/reboot, /usr/bin/reboot

  • # Defaults specification

  • #
  • # Disable &quot;ssh hostname sudo <cmd>&quot;, because it will show the password in clear.
  • #         You have to run &quot;ssh -t hostname sudo <cmd>&quot;.
  • #
  • Defaults    requiretty

  • #
  • # Refuse to run if unable to disable echo on the tty. This setting should also be
  • # changed in order to be able to use sudo without a tty. See requiretty above.
  • #
  • Defaults   !visiblepw

  • Defaults    env_reset
  • Defaults    env_keep = &quot;COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
  •                         LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
  •                         LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
  •                         LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
  •                         LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
  •                         _XKB_CHARSET XAUTHORITY&quot;

  • ## Next comes the main part: which users can run what software on
  • ## which machines (the sudoers file can be shared between multiple
  • ## systems).
  • ## Syntax:
  • ##
  • ##  user    MACHINE=COMMANDS
  • ##
  • ## The COMMANDS section may have other options added to it.
  • ##
  • ## Allow root to run any commands anywhere
  • root    ALL=(ALL)   ALL

  • ## Allows members of the 'sys' group to run networking, software,
  • ## service management apps and more.
  • # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

  • ## Allows people in group wheel to run all commands
  • %wheel  ALL=(ALL)   ALL

  • ## Same thing without a password
  • # %wheel    ALL=(ALL)   NOPASSWD: ALL

  • ## Allows members of the users group to mount and unmount the
  • ## cdrom as root
  • # %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

  • ## Allows members of the users group to shutdown this system
  • # %users  localhost=/sbin/shutdown -h now

  • ## Denied DEV_DENIED and STORAGE commands for dev group
  • %dev     ALL=(ALL)       ALL, !DEV_DENIED, !STORAGE
  

  使用方法如下:
  


  • include sudo
  • sudo::sudoers { &quot;example&quot;:
  •   sudo_sysadmins => ['test-wheel-1','test-wheel-2'],
  •   sudo_sudoers   => ['test-sudo-1'],
  • }
  

  github地址如下:https://github.com/vTNT/puppet-sudo

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545591-1-1.html 上篇帖子: puppet kick 功能实现 下篇帖子: puppet系列之user模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表