
【Linux】用户管理和配置免密登陆【一】用户管理【1】新增用户1检查用户是否存在2如果用户不存在创建用户3设置密码修改密码【3】删除用户【4】权限管理1文件/目录权限授权2授予特定目录的读写执行权限3创建目录并授权【二】服务器间调用【1】服务器之间互相访问的基本方式1基本的ssh连接2通过scp传输文件3通过rsync同步文件在这里插入代码片【2】配置SSH免密登录1生成SSH密钥对2复制公钥到目标服务器【3】案例描述【一】用户管理【1】新增用户1检查用户是否存在# 方法1使用id命令最常用id username# 方法2检查/etc/passwd文件grep^username:/etc/passwd# 方法3使用getent命令getent passwd username# 方法4检查用户目录是否存在ls-ld/home/username2如果用户不存在创建用户# 方法1使用useradd创建用户sudo useradd-m username# -m: 创建家目录# 方法2创建用户并指定shellsudo useradd-m-s/bin/bash username# 方法3创建用户并指定UIDsudo useradd-m-u 1001 username# 方法4使用adduserDebian/Ubuntusudo adduser--disabled-password--gecosusername完整的命令如下创建组创建用户创建用户目录groupadddataxuseradd-gdatax datax-d/home/datax使用 useradd的各种选项# 查看useradd所有选项useradd--help# 常见选项示例sudo useradd-m username# 创建家目录sudo useradd-s/bin/bash username# 指定shellsudo useradd-u 1500 username# 指定UIDsudo useradd-g users username# 指定主组sudo useradd-G sudo,www-datausername# 添加到附加组sudo useradd-c开发人员username# 用户描述sudo useradd-e 2025-12-31 username# 设置过期时间sudo useradd-M username# 不创建家目录3设置密码修改密码passwddatax输入密码回车使用root用户可以编辑覆盖原来的密码【3】删除用户# 删除用户但保留家目录sudouserdelusername# 删除用户及其家目录sudouserdel-rusername【4】权限管理1文件/目录权限授权# 将目录所有权给datax用户chown-R datax:datax/path/to/directory# 或只给datax用户chown-R datax/path/to/directory2授予特定目录的读写执行权限# 给datax用户对目录的完全控制chmod 750/path/to/directory chown datax:datax/path/to/directory# 或通过ACL添加权限setfacl-m u:datax:rwx/path/to/directory3创建目录并授权# 创建目录并设置权限mkdir-p/datachown datax:datax/datachmod 755/data【二】服务器间调用【1】服务器之间互相访问的基本方式1基本的ssh连接# 从服务器A连接到服务器Bssh usernameserverB_IP# 指定端口连接ssh-p 2222 usernameserverB_IP# 通过主机名连接需先配置/etc/hosts或DNSssh usernamehostname案例ssh root192.168.21.202通过scp传输文件# 从本地复制文件到远程服务器scp/path/to/local/file usernameserverB_IP:/path/to/remote/# 从远程服务器复制文件到本地scp usernameserverB_IP:/path/to/remote/file/path/to/local/# 递归复制整个目录scp-r/local/dirusernameserverB_IP:/remote/dir/3通过rsync同步文件在这里插入代码片# 同步文件/目录rsync-avz/local/path usernameserverB_IP:/remote/path/# 从远程同步到本地rsync-avz usernameserverB_IP:/remote/path/local/path/【2】配置SSH免密登录我们通过一台 Linux 服务器远程另外一台服务器时每次远程都需要输入对端机器的密码如何实现不用输入密码就可以远程别的服务器在 Linux 服务器上正确配置了免密码登录也就是使用密钥认证代替密码认证就可以实现不用输入密码就能远程登录到服务器。如果我们在运行自动化脚本或者跑定时任务并且需要在多台服务器之间传递免密码登录可以大大提高效率并减少因密码输入错误导致的问题。1生成SSH密钥对cd ~/.ssh/ ssh-keygen-t rsa一路按回车键生成客户机秘钥对在客户机我们可以看到在家目录自动创建一个隐藏文件夹 .ssh并且生成两个文件分别是私钥文件 id_rsa 和公钥文件 id_rsa.pub 。ls/root/.ssh2复制公钥到目标服务器使用ssh-copy-id传公钥ssh Tab键发现有ssh-copy-id命令# 自动将公钥复制到目标服务器ssh-copy-idusernameserverB_IP# 指定端口ssh-copy-id-p 2222 usernameserverB_IP# 指定特定密钥文件ssh-copy-id-i ~/.ssh/id_rsa_serverB usernameserverB_IP案例在客户机键入下面的命令在应答的位置输入 yes接着输入远程机的密码之后就可以免密码登录ssh-copy-idroot192.168.21.20在远程机我们会发现同样在用户家目录创建了一个隐藏文件夹 .ssh这个目录下面多了一个文件 authorized_keys这就是刚才传过来的公钥这样下次客户机远程过来就不用再输入密码这种方式在集群中用得比较多。【3】案例描述配置datax集群的远程免密1后端服务器——》前端服务器的nginx使用root登陆后端服务器 cd ~/.ssh/ ssh-keygen-t rsa然后一路按回车 ssh-copy-idnginx10.238.168.96配置后端到前端nginx的免密 输入密码 然后在后端服务器校验ssh nginx10.238.168.962前端服务器——》datax服务器root登陆前端服务器 cd ~/.ssh/ ssh-keygen-t rsa然后一路按回车 ssh-copy-iddatax10.238.168.62 输入密码 然后校验ssh datax10.238.168.62