Linux系统的用户和用户组管理

用户角色划分

用户在系统中是分角色的,在Linux系统中,由于角色的不同,权限和所完成的任务也不同;
值得注意的是用户的角色是通过UID和GID识别的;
特别是UID,在运维工作中,一个UID是唯一标识一个系统用户的账号。

用户账户:

  • 超级用户root(0)
  • 程序用户(1~499)
  • 普通用户(500~65535)

超级用户:

默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。

普通用户:

这类用户一般是由具备系统管理员root的权限的运维人员添加的。

程序用户:

与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。

由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。

文件的权限

修改文件所属用户/组

1
2
3
4
5
# 所有者改成用户1
chown 用户1 tmp

# 所有者改成用户1,所属组改成组1
chown 用户1:组1 tmp

-R : 对目前目录下的所有文件与子目录进行相同的权限变更

修改组

1
2
# 所属的组改成了组1
chgrp 组1 tmp

-R : 对目前目录下的所有文件与子目录进行相同的权限变更

修改文件权限

当想用chmod命令来改变权限时,就把它们当做速记符号来记忆,因为实际要做的只是记住几个符号而已。

文件的用户身份主要有如下几类。

  • u:拥有文件的用户(所有者)。
  • g:所有者所在的组群。
  • o:其他人(不是所有者或所有者的组群)。
  • a:每个人或全部(u、g、和o)。

文件权限配置行为有如下几类。

  • +:添加权限。
  • -:删除权限。
  • =:使它成为唯一权限。

用户所具有的文件访问权限类型如下。

  • r:读取权。
  • w:写入权。
  • x:执行权。

现在再来练习一下,如果要删除用户对readme.txt文件的所有权限,则命令如下:

1
chmod a-rwx readme.txt

这样所有用户都不能进行读取或其他任何操作了

-R : 对目前目录下的所有文件与子目录进行相同的权限变更

用户

查询全部用户信息

1
2
cat /etc/passwd
cat /etc/passwd|grep 用户名

查询出来的用:分割的依次为

  • 用户名
  • 密码
  • 用户ID
  • 用户所在组ID
  • 备注
  • 用户家目录
  • Shell命令目录

查看用户信息

1
2
3
4
# 查询当前用户
id
# 查询指定用户
id 用户名

添加用户

1
useradd psvmc

删除用户

1
userdel psvmc

-r 连同主目录一起删除

设置密码

普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码。超级用户则可以设置或修改所有用户的密码

当直接passwd命令后面不接任何参数或用户名时,则表示修改当前登陆用户的密码。

-d 清空密码,仅root能操作
-f 强制操作,仅root能操作  
-k 保留即将过期的用户在期满后仍能使用
-l 锁定用户账户;锁定用户无权更改其密码,仅root能操作
-S 查看用户账户的状态
-u 解锁用户账户;仅root能操作
–stdin 从标准输入取密码

查看组信息

1
2
cat /etc/group
cat /etc/group|grep 组名

查询出来的用:分割的依次为

  • 用户组
  • 用户组口令
  • 组ID
  • 该组包含的用户

查看用户所在组

查询当前用户的组内成员

1
groups

查看用户所在的所有组及组内成员

1
groups 用户名

添加组

1
groupadd 组名

删除组

1
groupdel 组名

删除的目标组不能是用户的基本组

管理组

1
gpasswd [选项] 组名

-A 定义组管理员列表
-a 添加组成员,每次只能加一个
-d 删除组成员,每次只能删一个
-M 定义组成员列表,可设置多个,用,分开(定义的组成员必须是已存在用户的)
-r 移除密码