Linux账号管理

Linux的账号和用户组

用户账号

用户账号有两个重要的文件:

  1. 管理用户UID/GID参数的/etc/passwd。UID指User ID,GID指Group ID
  2. 专门管理密码相关数据的/etc/shadow

1. /etc/passwd文件结构

每一行都代表一个账号,有几行就代表有几个账号在系统中,一般权限为-rw-r--r--,举例如下:

root:x:0:0:root:/root:/bin/bash

每一行使用“:”分隔开,共7个字段

  1. 账号名称,即账号。用来对应UID,root的UID对应是0。
  2. 密码。现在密码放在/etc/shadow中,一般用x表示。
  3. UID。用户标识符。0表示系统管理员,即root。1-499为系统账号,权限稍弱于root,一般不可登录。500-65535为可登陆账号,给一般用户使用。
  4. GID。与/etc/group有关
  5. 用户信息说明列。用于解释账号的意义。
  6. 主文件夹。用户的主文件夹,以上述例子来看,root的主文件夹在/root中,当root登录后会立即跑到/root目录里面。默认的用户主文件夹在/home/账号名称
  7. Shell。 一般使用bash

2. /etc/shadow文件结构

/etc/shadow一般存储对应账号的密码,具体不做详细解读。

有效与初始用户组: groups,newgrp

1. /etc/group文件结构

这个文件用于记录GID与组名的对应,举例如下:

root:x:0:root

每一行代表一个用户组,以“:”作为分割符,共分为四列。

  1. 用户组名称。
  2. 用户组密码。一般为x。
  3. GID。用户组ID。
  4. 此用户组支持的账号名称。一个账号可以加入多个用户组。

2. 有效用户组与初始用户组

  1. 初始用户组。即在/etc/passwd第四列的GID。当用户登录系统时,就立即拥有这个用户组的相关权限
  2. 有效用户组。对于一个拥有多个用户组的账号,当前所在的用户组就是有效用户组。
  • groups命令表示有效与支持用户组的查看,输出的第一个用户组为当前用户组
  • newgrp命令表示有效用户组的切换。newgrp 用户组。使用newgrp命令是另外以一个shell来提供这个功能,若要退回到当前环境,输入exit命令即可。

3. /etc/gshadow

gshadow最大的功能就是创建用户组管理员,减轻root的负担,但现在已较少使用。举例如下:

root:::root

同样以“:”分隔,分为四个字段,字段可为空

  1. 用户组名
  2. 密码列,开头为!表示无合法密码,即无用户组管理员
  3. 用户组管理员的账号
  4. 该用户组拥有的账号

账号管理

新增用户命令: useradd

useradd [-u UID] [-g 初始用户组] 用户账号名
参数:
-r 创建一个系统的账号,该账号的UID会有限制

举例如下:

用users为初始用户组,uid为700创建一个名为vbird2的账号

useradd -u 700 -g users vbird2

创建一个系统账号,名称为vbird3

useradd -r vbird3

添加账号密码命令: passwd

  1. 命令: passwd 账号,一般在root用户下使用,表示要帮一般账号新建密码
  2. 命令: passwd表示修改自己的密码。

新增用户组命令: groupadd

格式:

groupadd [-g gid] [-r] 用户组名
参数:
-r:新建系统用户组

设置用户组管理员命令: gpasswd

系统管理员(root)的操作:

  1. groupadd groupname 新建用户组
  2. gpasswd groupname 设置用户组密码
  3. gpasswd [-A user1] groupname 将user加入用户组为groupname的管理员,A表示将groupname的主控权交由后面的用户管理

用户组管理员(Group administrator)做的操作:

  1. gpasswd [-a] user groupname 将user加入到groupname用户组。谨记在root操作完之后还需要在用户组管理员操作时添加

sudo

sudo虽然是以管理员身份(仅有/etc/sudoers内的用户才能够执行sudo命令)运行命令,但是输入的密码为当前用户的密码

shell和终端的区别

  1. 终端:即所谓的命令行界面,用户输入shell命令用的窗口
  2. shell:用户和操作系统之间的壳中介,shell将用户输入翻译为操作系统能处理的命令

每个人的环境变量配置在~/.bashrc

Share