Linux用户和组管理

相关系统文件

/etc/passwd # 保存用户信息的文件
/etc/shadow # 保存用户密码相关信息的文件
/etc/group # 保存组信息的文件
/etc/gshadow # 保存组密码相关信息的文件

用户管理

查看 / 切换用户

whoami        # 查看当前用户是谁
id root       # id命令,查看指定用户信息,结果:uid:用户标识;gid:组标识,用户的主组;groups:用户所属组信息
su yunwei     # su命令,切换到指定用户

useradd -- 添加用户

添加用户的操作只有root能操作

# 语法
useradd 选项 选项的参数 用户名

# 选项
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-u:指定用户ID号。
-s:指定用户登入后所使用的shell。
# 区分的两种shell
/bin/bash:可登录shell,如果用户的shell是这个,那么该用户可以登录到系统中
/sbin/nologin:非登录shell,如果用户的shell是这个,那么该用户是不允许登录到系统的

userdel -- 删除用户

# 语法
userdel [-r] [用户帐号]
# 如不加-r 选项删除的时候不会删除用户的家目录和邮箱

passwd -- 修改密码

# 语法,不加选项参数直接passwd则是修改当前用户密码,普通用户只能使用 passwd 命令修改自己的密码,而不能修改其他用户的密码。
passwd [选项] [参数]

# 选项
-d:删除密码,仅有系统管理者才能使用,被删除密码的用户登录无需密码;
-f:强制用户下次登录时必须修改口令;
-l:锁住密码,被锁住密码的用户无法修改密码;
-u:解开已上锁的帐号;
-s:列出用户密码的状态,仅有系统管理者才能使用(虽然没啥用,不过可以看到上次更改密码的日期);
--stdin:可以将通过管道符输出的数据作为用户的密码,主要在批量添加用户时使用。
# 示例
echo 123456 | passwd --stdin tom

usermod -- 修改用户

# 选项
-G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g:修改用户的主要组
-a:一般和-G联合使用,追加附属组
-u:修改用户的uid
-d:修改用户的家目录
-s:修改用户的shell
-L : 锁定用户帐号
-U : 解锁帐号

用户组管理

groupadd -- 添加组

# 语法
groupadd 选项 选项的参数 组名
# 选项
-g:添加组时,指定gid是多少
-r:创建系统组

groupmod -- 修改组

# 选项
-g:指定gid
-n:修改组名
# 示例
groupmod -g 1888 组名
groupmod -n 新组名 组名

groupdel -- 删除组

不能够删除用户的主要组,能够删除用户的附属组

# 语法
groupdel [群组名称]

gpasswd -- 组管理

给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。

# 选项
-A:指定用户为组管理员,示例:gpasswd -A 用户 组名
-a:向组中添加成员(管理员可用),示例:$ gpasswd -a 用户 组名
-d:将用户从组中删除,示例:gpasswd -d sha groups
# 给组设置密码
gpasswd 组名

sudo

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
比如说ubuntu,默认不让root远程登录,只能普通用户远程登录,这个普通用户使用sudo就能获得root权限。
但是centos经root创建的普通用户默认是没有sodu权限的,需要修改sudo配置文件(root身份)。

# 修改sudo配置文件,修改示例参考下方
visudo        # 自带命令,等同于vi /etc/sudoers

# 查看自己sudo权限
sudo -l

# 指定用户执行命令
sudo -u userb ls -l

# 以root权限执行上一条命令
sudo !!

打开配置文件直接拉到最下面
image

配置文件修改示例,添加一个用户,指定sudo权限

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
yunwei  ALL=(root)      NOPASSWD:ALL,!/sbin/shutdown,!/sbin/init,!/bin/rm -rf /,!/sbin/reboot

解释说明:

  1. 第一个字段yunwei指定的是用户:可以是用户名,也可以是别名。每个用户设置一行,多个用户设置多行。
  2. 第二个字段ALL指定的是用户所在的主机:可以是ip,也可以是主机名,表示该sudo设置只在该主机上生效,ALL表示在所有主机上都生效,一般都指定为"ALL"表示所有的主机,不管文件拷到那里都可以用。比如:10.1.1.1=...则表示只在当前主机生效。
  3. 第三个字段(root)括号里指定的也是用户:指定以什么用户身份执行sudo,即使用sudo后可以享有所有root账号下的权限。如果要排除个别用户,可以在括号内设置,比如ALL=(ALL,!oracle,!pos)。这里用root也就是演示一下,如果用ALL,sudo可以使用-u选项指定其它用户的权限执行命令。
  4. 第四个字段ALL指定的是执行的命令,NOPASSWD: ALL表示使用sudo的不需要输入密码并且拥有全部权限,多个权限用逗号分隔,拒绝的权限前加上感叹号。
  5. 也可以授权给一个用户组 %admin ALL=(ALL) ALL # 表示admin组里的所有成员可以在任何主机上以任何用户身份执行任何命令
posted @ 2022-12-28 11:44  待满茶杯  阅读(46)  评论(0编辑  收藏  举报