概述
在部署运维平台时,需要使用服务器用户登录终端,上传、解压、运行finekey工具,以部署启动运维平台。
在部署运维项目时,需要提供服务器用户名称与密码,用于项目的部署和运行。
执行相关操作,需要确保所使用的服务器用户的权限满足需求。
优先推荐使用超级管理员账号部署
优先推荐使用用户id为0且名叫root的服务器用户部署运维平台和运维项目。
注意:用户id为0但不叫root的用户,不支持部署,请更名为root
非超管账号部署需要配置权限
权限要求说明
如需使用非超管root用户进行项目的部署和运行,至少需要拥有以下权限:
命令 | 说明 |
---|---|
mkdir | 命令说明:创建目录 应用场景: 1)在用户的home目录下创建docker临时安装目录,用于存放Docker和相关组件的安装文件 2)在系统目录/usr/bin下创建docker最终安装目录,用于存放Docker和相关组件的可执行文件 3)在指定的项目挂载目录下创建运维平台和项目的数据和组件目录,用于存放Docker容器的数据和配置文件 示例命令: 示例:mkdir -p -m 750 /home/fanruan/data 说明:创建项目挂载目录/home/fanruan/data,并设置权限为750 |
chown | 命令说明: 更改文件或目录的所有者 应用场景: 1)更改docker临时安装目录的所有者,以确保安装过程中的权限问题 2)更改docker最终安装目录的所有者,以确保系统和用户对可执行文件的访问权限 3)更改运维平台和项目的数据和组件目录的所有者,以确保Docker容器对数据和配置文件的访问权限 示例命令: 示例:chown -R fanruan:fanruan /home/fanruan/data 说明:递归更改目录 /home/fanruan/data 及其子目录和文件的所有者为 fanruan 用户和组 |
groupadd | 命令说明:创建用户组 应用场景:用于系统用户组管理,为docker服务创建专用用户组 示例命令: 示例:groupadd docker 说明:创建一个名叫docker的新用户组 |
gpasswd | 命令说明:管理用户组成员 应用场景:将用户添加到指定用户组,赋予用户对docker服务的访问权限 示例命令: 示例:gpasswd -a $USER docker 说明:将当前用户添加到docker用户组中 |
swapoff | 命令说明:禁用系统中所有的交换分区和交换文件 应用场景:关闭交换空间,提高性能 示例命令: 示例:swapoff -a 说明:禁用系统中所有的交换分区和交换文件 |
modprobe | 命令说明:加载内核模块 应用场景:动态加载 br_netfilter 模块,确保 Docker 网络通信的正常运行和管理 示例命令: 示例:modprobe br_netfilter 说明:加载 br_netfilter 模块,使其在内核中生效,以支持 Docker 的网络功能 |
systemd | 命令说明:控制 systemd 系统和服务管理器 应用场景:确保 Docker 服务在系统启动时自动启动 示例命令: 示例:systemctl enable docker.service 说明:启用 docker.service 服务,使其在系统启动时自动启动 |
kill | 命令说明:向进程发送信号 应用场景:向 Docker 守护进程发送 SIGHUP 信号,实现热加载配置文件,无需停止和重新启动 Docker 服务 示例命令: 示例:kill -HUP 1234 说明:向 Docker 守护进程 1234 发送 SIGHUP 信号,在不中断docker服务的情况下应用新的配置更改 |
sudo | 命令说明:允许授权用户以超级用户的身份运行特定的命令,而无需直接登录到超级用户账户 应用场景:用于自动化脚本或需要以超级用户权限执行的场景 示例命令: 命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker" 示例:以超级用户权限启动 Docker 服务 |
sh | 命令说明:解释并执行由 -c 选项指定的命令字符串 应用场景:在一个命令中完成复杂的操作,并确保命令在具有适当权限的环境中执行 示例命令: 命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker" 示例:以超级用户权限在一个新的 shell 中执行命令 |
echo | 命令说明:将字符串输出到标准输出 应用场景:方便地将字符串输出并传递给其他命令,从而实现自动化和批处理操作 示例命令: 命令:echo sudo_xxxx_passwd | sudo -S sh -c "systemctl start docker" 示例:将 echo 命令的输出(即 sudo 密码)传递给 sudo -S 命令,使其能够以超级用户权限执行命令 |
cp | 命令说明:复制文件和目录 应用场景:部署或更新服务文件,从而使系统能够管理和启动相应的服务 示例命令: 示例:cp -f /home/finekey/docker.service /etc/systemd/system/ 说明:将文件 /home/finekey/docker.service 复制到目录 /etc/systemd/system/ 中,以便 systemd 可以管理该服务 |
sysctl | 命令说明:查看和修改内核参数 应用场景:查看和修改一些特定的内核参数,例如net.bridge.bridge-nf-call-iptables、net.ipv4.conf.all.forwarding、net.ipv4.ip_forward等 示例命令: 示例:sysctl -n net.ipv4.ip_forward 说明:检查当前系统中 IPv4 转发(IP forwarding)的状态 |
sed | 命令说明:用于在文本文件中进行查找、替换、插入、删除等操作 应用场景:用于修改一些配置文件和内核参数,主要用于修改/etc/sysctl.conf,如果这些参数已经配置成了目标值,只会令这些参数生效,不会再去修改文件 示例命令: 示例:sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config 说明:修改 /etc/selinux/config 文件,将 SELINUX 设置从 enforcing 改为 permissive,以防影响通过 systemctl 命令以服务方式启动 Docker |
rm | 命令说明:删除文件和目录 应用场景:部署失败时回滚,清理残留文件 示例命令: 示例:rm -rf /home/fanruan/data 说明:递归地删除 /home/fanruan/data 目录及其所有内容 |
权限配置步骤
请自行编辑 /etc/sudoers 文件,确保满足以下两项
步骤 | 说明 |
---|---|
修改用户的sudo权限 | 自行修改dev为你的用户名 1)允许用户"dev"在任何主机上以root身份使用sudo权限执行后续配置的命令 dev ALL=(root) /bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo 2)如果仍然权限不足(报错:[sudo] password for ubuntu:),可以配置NOPASSWD的sudo权限(自选) dev ALL=(root) NOPASSWD:/bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo |
对用户禁用requiretty选项 | 注释掉原本的requiretty相关内容 确保 dev 用户在执行 sudo 命令时不需要 TTY 会话,否则无法通过脚本/远程命令使用sudo #Defaults: requiretty |
sudoers 文件示例:(本文件仅作为示例,请勿直接拷贝覆盖,请逐一参考上文修改)
# User privilege specification root ALL=(ALL:ALL) ALL # Defaults requiretty # Allow dev user to run specific commands as root dev ALL=(root) /bin/sh,/bin/mkdir,/bin/rm,/bin/cp,/bin/systemctl,/bin/kill,/usr/sbin/sysctl,/usr/bin/gpasswd,/usr/sbin/groupadd,/usr/bin/chown,/usr/sbin/modprobe,/usr/bin/echo,/usr/bin/sed,/usr/sbin/swapoff,/bin/sudo |