CentOS 7 创建运维用户

需求

  • 一台服务器安装各种五花八门的应用?
  • 前端、后端、架构、DBA、运维都要维护服务器?
  • 人员经常变动,服务器密码总需要修改?
    经历过以上痛苦的小伙伴们一定都在想,如何才能保障安全的前提下,又方便管理呢,以下介绍一个方案供各位小伙伴参考。

方案规划:在linux中规划运维用户组,运维人员每人都使用自己的账号,相关管理权限的用户划分到同一个组中。

以下以一个WEB业务运维组(www)以及一个运维用户(www)为例。

环境

硬件

配置 测试配置
CPU 1.8GHz
内存 4GB
核心 4核
带宽 1000Mb

软件

  • VMware® Workstation 16 Pro 16.1.1 build-17801498
  • CentOS Linux release 7.6.1810 (Core)

权限规划

服务管理

/usr/bin/systemctl start
/usr/bin/systemctl stop
/usr/bin/systemctl reload
/usr/bin/systemctl restart
/usr/bin/systemctl status
/usr/bin/systemctl enable
/usr/bin/systemctl disable

进程管理

/usr/bin/nice
/usr/bin/kill
/usr/bin/killall
/usr/bin/ps
/usr/bin/top

网络管理

/usr/sbin/route
/usr/sbin/ifconfig
/usr/bin/netstat

存储管理

/usr/sbin/fdisk
/usr/sbin/sfdisk
/usr/sbin/parted
/usr/sbin/partprobe
/usr/bin/mount
/usr/bin/umount

关闭系统

/usr/sbin/reboot
/usr/sbin/halt
/usr/sbin/poweroff

软件管理

/usr/bin/rpm
/usr/bin/yum
/usr/local/bin/pip
/usr/local/bin/pip3

文件管理

/usr/bin/ls
/usr/bin/cat

其它

根据实际情况维护维护人员需要执行的其它命令。

visudo

介绍

sudo的配置文档是/etc/sudoers ,我们能够用他的专用编辑工具visudo对其进行编辑 ,此工具的好处是在添加规则有误时,保存退出会提示给我们错误信息。

如果没有visudo命令 需要 yum install -y sudo

配置完毕后,如果想知道哪些命令是您当前用户能够执行或禁止的,可通过切换至该用户身份,然后通过sudo -l 查看。

配置文件介绍

默认内容

## 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 (perhaps 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, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

## 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

# Defaults specification

#
# Refuse to run if unable to disable echo on the tty.
#

别名类型包括如下四种

  • Host_Alias 定义主机名别名;
  • User_Alias 用户别名,别名成员能够是用户,用户组(前面要加%号)
  • Runas_Alias 用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许转换至的用户;
  • Cmnd_Alias 定义命令别名。

需要注意的是:

  1. 在每一种Alias后面定义的别名 NAME 可以是包含大写字母、下划线、数字,但必须以一个大写字母开头。
  2. 配置文件中的 Default env_reset 表示重置(就是去除)用户定义的环境变量,也就是说,当你用sudo执行一个命令的时候,你当前用户设置的所有环境变量都是无效的。

放权格式

授权用户/组 主机名(允许转换至的用户) NOPASSWD:命令动作

  1. 粗体标注的三个要素缺一不可,但在动作之前也能够指定转换到特定用户下,在这里指定转换的用户要用( )号括起来,
  2. 假如无需密码直接运行命令的,应该加NOPASSWD:参数,不需要时方可省略,下面介绍中会有NOPASSWD的使用示例。

创建运维用户

groupadd www                                              # 添加用户组
cut -d : -f 1 /etc/group                                  # 确认添加结果
useradd -g www -d /home/www www                           # 添加用户,指定用户组与根目录
cut -d : -f 1 /etc/passwd                                 # 确认添加结果

运维用户配置

# 定义用户组
User_Alias  WEB = %www

# 服务管理
Cmnd_Alias SERVICES = /usr/sbin/service, /usr/sbin/chkconfig, /usr/bin/systemctl start *, /usr/bin/systemctl stop *, /usr/bin/systemctl reload *, /usr/bin/systemctl restart *, /usr/bin/systemctl status *, /usr/bin/systemctl enable *, /usr/bin/systemctl disable *

# 进程管理
Cmnd_Alias PROCESS = /usr/bin/nice, /usr/bin/kill, /usr/bin/killall, /usr/bin/ps, /usr/bin/top

# 网络管理
Cmnd_Alias NETWORKING = /usr/sbin/route, /usr/sbin/ifconfig, /usr/bin/netstat

# 存储管理
Cmnd_Alias STORAGE = /usr/sbin/fdisk, /usr/sbin/sfdisk, /usr/sbin/parted, /usr/sbin/partprobe, /usr/bin/mount, /usr/bin/umount

# 关闭系统
Cmnd_Alias SHUTDOWN = /usr/sbin/reboot, /usr/sbin/halt, /usr/sbin/poweroff, /usr/sbin/shutdown

# 软件管理
Cmnd_Alias SOFTWARE = /usr/bin/rpm, /usr/bin/yum, /usr/local/bin/pip, /usr/local/bin/pip3

# 文件管理
Cmnd_Alias FILE = /usr/bin/ls, /usr/bin/cat

# 其他
Cmnd_Alias NGINX = /usr/local/nginx/sbin/nginx, /usr/local/nginx/sbin/nginx -s *, /usr/local/nginx/sbin/nginx -t 

# 规则
WEB ALL = (root) NOPASSWD: SERVICES, PROCESS, NETWORKING, STORAGE, SHUTDOWN, SOFTWARE, FILE, NGINX

验证效果

验证服务sudo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。