用户组管理
# 添加用户组
[root@192 ~]# groupadd -h
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
# 例:创建用户组group1
[root@192 ~]# groupadd group1
# 查看组
[root@192 ~]# cat /etc/group |grep group1
group1:x:1001:
# 修改用户组
[root@192 ~]# groupmod -h
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
# 例:修改用户组名称
[root@192 ~]# groupmod -n grouptest group1
[root@192 ~]# cat /etc/group |grep group
grouptest:x:1001:
# 删除用户组
[root@192 ~]# groupdel -h
用法:groupdel [选项] 组
选项:
-h, --help 显示此帮助信息并推出
-R, --root CHROOT_DIR chroot 到的目录
# 例:删除用户组grouptest
[root@192 ~]# groupdel grouptest
用户管理
# 添加用户
[root@192 ~]# useradd -h
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
# 例:添加用户user1
[root@192 ~]# useradd user1
[root@192 ~]# cat /etc/passwd |grep user1
user1:x:1001:1001::/home/user1:/bin/bash
[root@192 ~]#
# 修改用户
[root@192 ~]# usermod -h
用法:usermod [选项] 登录
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
# 修改用户名
[root@192 ~]# usermod -l usertest user1
[root@192 ~]# cat /etc/passwd |grep user
usertest:x:1001:1001::/home/user1:/bin/bash
# 修改用户家目录名
[root@192 ~]# usermod -d /home/usertest usertest
[root@192 ~]# cat /etc/passwd |grep user
usertest:x:1001:1001::/home/usertest:/bin/bash
# 将旧家目录名修改为新目录名
[root@192 ~]# mv /home/user1 /home/usertest
# 将用户添加到组
# 不加-a参数,是设置用户的附加组
[root@192 ~]# usermod -G www,docker usertest
[root@192 ~]# cat /etc/group |grep usertest
docker:x:994:usertest
www:x:1000:usertest
usertest:x:1001:
# 当-G参数取消docker时,用户将退出docker组
[root@192 ~]# usermod -G www usertest
[root@192 ~]# cat /etc/group |grep usertest
www:x:1000:usertest
usertest:x:1001:
# 加上-a参数时,将用户追加到-G后面的用户组中,不会删除之前的附加组
[root@192 ~]# usermod -a -G docker usertest
[root@192 ~]# cat /etc/group |grep usertest
docker:x:994:usertest
www:x:1000:usertest
usertest:x:1001:
# 删除用户
[root@192 ~]# userdel -h
用法:userdel [选项] 登录
选项:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
-R, --root CHROOT_DIR chroot 到的目录
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射
# 例:删除usertest
# 删除用户时,会删除用户的主组,并退出其它附加组,黙认不会删除用户的家目录,加上-r参数将删除家目录
[root@192 ~]# userdel usertest
[root@192 ~]# cat /etc/passwd |grep usertest
[root@192 ~]# cat /etc/group |grep usertest
设置密码
# 修改当前用户的密码,直接输入passwd命令
# root用户修改本账户密码
[root@192 home]# passwd
更改用户 root 的密码 。
新的 密码:
# usertest用户修改本账户密码
[usertest@192 ~]$ passwd
更改用户 usertest 的密码 。
为 usertest 更改 STRESS 密码。
(当前)UNIX 密码:
# root用户修改其它用户密码,在passwd后加上要修改密码用户的用户名
[root@192 home]# passwd usertest
更改用户 usertest 的密码 。
新的 密码:
用户切换
# 用户切换
[root@192 ~]# su -h
用法:
su [选项] [-] [USER [参数]...]
将有效用户 id 和组 id 更改为 USER 的 id。
单个 - 视为 -l。如果未指定 USER,将假定为 root。
选项:
-m, -p, --preserve-environment 不重置环境变量
-g, --group <组> 指定主组
-G, --supp-group <组> 指定一个辅助组
-, -l, --login 使 shell 成为登录 shell
-c, --command <命令> 使用 -c 向 shell 传递一条命令
--session-command <命令> 使用 -c 向 shell 传递一条命令
而不创建新会话
-f, --fast 向shell 传递 -f 选项(csh 或 tcsh)
-s, --shell <shell> 若 /etc/shells 允许,则运行 shell
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
# 注意 su - usertest和su usertest的区别
[root@192 ~]# su usertest
[usertest@192 root]$ pwd
/root
[root@192 ~]# su - usertest
上一次登录:六 10月 28 11:45:49 CST 2023pts/0 上
[usertest@192 ~]$ pwd
/home/usertest
[usertest@192 ~]$
sudo/sudo免密
centos7演示
# 将usertest添加sudo权限并配置sudo免密码
# 方法一:将用户加入wheel组(默认情况下wheel组有sudo权限),将wheel组配置为sudo免密
# 将用户加入wheel组
[root@192 ~]# usermod -a -G wheel usertest
[root@192 ~]# cat /etc/group |grep wheel
wheel:x:10:usertest
[root@192 ~]# su - usertest
上一次登录:六 10月 28 12:11:04 CST 2023pts/0 上
[usertest@192 ~]$ sudo ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] usertest 的密码:
anaconda-ks.cfg get-docker.sh install.sh
[usertest@192 ~]$
# wheel组配置sudo免密
# 编辑文件/etc/sudoers,将下面行开头的#删除
# %wheel ALL=(ALL) NOPASSWD: ALL
# /etc/sudoers默认只读,不能编辑,需要添加写权限
[root@192 ~]# chmod +w /etc/sudoers
# 通过sed命令修改文件
[root@192 ~]# cat /etc/sudoers |grep wheel
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
[root@192 ~]# sed -i 's/# %wheel/%wheel/g' /etc/sudoers
[root@192 ~]# cat /etc/sudoers |grep wheel
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL
[root@192 ~]# chmod -w /etc/sudoers
# 验证
[root@192 ~]# su - usertest
上一次登录:六 10月 28 12:12:06 CST 2023pts/0 上
[usertest@192 ~]$ sudo ls /root/
anaconda-ks.cfg get-docker.sh install.sh
# 方法二
# 将指定用户usertest配置sudo免密
# 编辑/etc/sudoers文件,添加以下内容
usertest ALL=(ALL) NOPASSWD: ALL
ubuntu 20.04
# 将ubuntu用户配置为sudo免密
# 编辑/etc/sudoers文件,添加以下内容
ubuntu ALL=(ALL:ALL) NOPASSWD:ALL
远程登录
ubuntu默认禁止root用户远程登录,需要修改/etc/ssh/sshd_config配置文件
# vi /etc/ssh/sshd_config
# 添加以下内容
PermitRootLogin yes