在团队工作中难免需要使用 Linux 系统进行开发,为了分工明确,搞清楚 Linux 系统中用户的权限如何分配还是很重要的

本文仅介绍一些常用的命令用法,掌握这些即可实现用户和组的基本操作

文件与目录权限和用户之间也有很多关系。详见 ---> 点击跳转

用户和组

1.1 超级管理员-root

在任意版本的 Linux 系统中,root用户(系统管理员)是拥有最高权限的,初始状态下无密码配置。

若启用root用户,需先给root用户设置密码:

sudo -i				# 当前普通用户提权操作,用于下一步设置root密码
sudo passwd root	# 给root用户设置密码

二次确认后,输入如下命令切换用户:

su $user			# 切换指定用户,在这里使用 su root

至此,root用户启用完成

1.2 用户组

在实际开发或生产环境运维中,总是将一部分用户划分为一个组,并赋予相应的权限,如下:

1.2.1 查看用户和组

查看用户详情

使用 id 命令查看用户信息

id $user			# 查看用户信息

在控制台中,清晰的看到了指定用户的 id 与所属

查看组详情

使用 cat 命令和 grep 组合命令:

cat /etc/group | grep $group_name		# | 号关联命令

可见输出结果为:root:x:0: 【完整标准格式为:group:x:id:user】即:

用户组:执行权限:组ID:组内用户

1.2.2 处理用户和组

创建用户组

使用如下命令来创建用户组:

groupadd [options] $group_name		# 创建用户组,[options]为命令参数

这里参数详情请输入groupadd --help 来了解:

创建用户

创建用户分为两个命令:

useradd [options] $user_name
adduser $user_name

两个命令的区别如下:

useradd:可以自行输入参数来确定用户的主目录,用户组等配置

adduser:将用户主目录创建在/home下,仅配置密码和用户信息,其他默认

使用 useradd --help 查看说明文档:

举个例子:

# 在/cokesr/admin/目录下创建名为zhangsan的用户,密码为jishushijiangu,主用户组为cokesr同时也属于root用户组
useradd -d /cokesr/admin/ -m -g cokesr -p jishushijiangu -G root zhangsan

删除用户组

使用如下命令来删除用户组:

groupdel $group_name		# 删除用户组,必要时使用 sudo 前缀

删除用户

使用如下命令来删除用户:

userdel [options] $user_name
deluser $user_name

两个命令的区别如下:

userdel:使删除的信息具体化,需要提供参数

deluser:删除用户账户及其主目录相关文件

总的来说,删除用户时更推荐使用deluser,减少出错的可能性

修改用户组信息

使用如下命令来修改用户组信息:

groupmod [options] $group_name

这里参数详情请输入groupmod --help 来了解:

举个例子:

sudo groupmod -g 114514 -n cokesr coke	# 将coke组更名为cokesr,同时将组ID更改为114514

修改用户信息

使用如下命令:

usermod [options] $user_name

老规矩:usermod --help

举个例子:

# 将张三添加到cokesr组,并保留原组位置(-a参数)
usermod -a -G cokesr zhangsan

管理组信息

使用如下命令来管理组信息:

gpasswd [option] $group_name

还是老规矩:gpasswd --help

举个例子:

gpasswd -a zhangsan coke	# 将张三添加进coke用户组
gpasswd -d lisi coke		# 将李四从coke用户组移除

1.3 其他

1.3.1 口令参数

在上面提到了使用passwd命令来修改指定用户的密码(口令),参数如下:

passwd [options] $user_name		
# -l: 锁定密码,用户可以通过ssh登录到此用户,但无法更改密码
# -u: 解锁密码,解除禁用
# -d: 清除密码,使账户进入无密码状态

1.3.2 切换组

当某些用户同时属于多个组的时候,往往默认使用主用户的权限配置,若需要切换用户权限,使用该命令:

newgrp $group_name		# 切换用户组

1.3.3 用户账户文件

在/etc/passwd文件中,记录了一些用户的基本属性,该文件对所有用户可读

使用命令查看:

cat /etc/passwd

不难看出,一行对应一个用户,每行记录被分隔为7个字段,含义如下:

用户名:权限:用户ID:组ID:用户描述:主目录:登录shell

1.3.4 密码文件

在/etc/shadow中,记录着用户更为隐私的信息,仅超级管理员可访问。其格式与/etc/passwd类似

含义如下:

登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志