详细到没朋友,一文帮你理清Linux用户与用户组关系~

  

1,用户和用户组文件

  

在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。

  

在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/阴影的配置文件中。

  

在passwd文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用“:”分隔,每个字段均代表该帐号某方面的信息。

  

在刚安装完成的linux系统中,passwd配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是linux进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为/sbin/nologin,表示该帐号不能用来登录linux系统。

  

在passwd配置文件中,从左至右各字段的对应关系及其含义:

  

由于passwd不再保存密码信息,所以用x占位代表。

  

若要使某个用户账户不能登录linux,只需设置该用户所使用的外壳为/sbin/nologin即可。比如,对于FTP账户,一般只允许登录和访问FTP服务器,不允许登录linux操作系统。若要让某用户没有telnet权限,即不允许该用户利用telnet远程登录和访问linux操作系统,则设置该用户所使用的外壳为/bin/真实即可。若要让用户没有telnet和FTP登录权限,则可设置该用户的外壳为/bin/假的。

  

在/etc/壳文件中,若没有/bin/真或/bin/假,则需要手动添加:
[root@localhost ~] #回声“/bin/false"在祝辞/etc/壳
[root@localhost ~] #回声“/bin/true"在祝辞/etc/壳

  

2,用户密码文件

  

为安全起见,用户真实的密码采用MD5加密算法加密后,保存在/etc/影子配置文件中,该文件只有根用户可以读取。

  

与passwd文件类似,影子文件也是每行定义和保存一个账户的相关信息。第一个字段为用户帐户名,第二个字段为账户的密码。

  

3,用户组帐号文件

  

用户组帐号信息保存在/etc/组配置文件中,任何用户均可以读取。用户组的真实密码保存在/etc/gshadow配置文件中。

  

在组中,第一个字段代表用户组的名称,第二个字段为x,第三个为用户组的ID号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔。

  

4,添加用户

  

创建或添加新用户使用useradd命令来实现,其命令用法为:

  

useradd[选项]用户名
该命令的选项选项较多,常用的主要有:
- c注释用户设置对账户的注释说明文字
- d主目录指定用来取代默认的/home/用户名的主目录
- m若主目录不存在,则创建它。r与米相结合,可为系统账户创建主目录
- m不创建主目录
- e日期指定账户过期的日期。日期格式为MM/DD/YY
- f天帐号过期几日后永久停权。若指定为,则立即被停权,若为- 1,则关闭此功能
- g用户组指定将用户加入到哪个用户组,该用户组必须存在
- g用户组列表指定用户同时加入的用户组列表,各组用逗分隔
- n不为用户创建私有用户组
- s shell指定用户登录时使用的外壳,默认为/bin/bash
- r创建一个用户ID小于500年的系统账户,默认不创建对应的主目录
- u用户ID手动指定新用户的ID值,该值必须唯一,且大于499
- p密码为新建用户指定登录密码。此处的密码是对应登录密码经MD5加密后所得到的密码值,不实真实密码原文,因此在实际应用中,该参数选项使用较少,通常单独使用passwd命令来为用户设置登录密码。

  

示例:   

若要创建一个名为nisj的用户,并作为babyfish用户组的成员,则操作命令为:
[root@localhost ~] # useradd - g babyfish nisj
[root@localhost ~] # id nisj
uid=502 (nisj) gid=500 (babyfish)组=500 (babyfish)
/etc/passwd [root@localhost ~] #尾1
nisj: x: 502:500::/home/nisj:/bin/bash
添加用户时,若未用- g参数指定用户组,则系统默认会自动创建一个与用户帐号同名的私有用户组。若不需要创建该私有用户组,则可选用- n参数。
比如,添加一个名为nsj820的账户,但不指定用户组,其操作结果为:
[root@localhost ~] # useradd nsj820
[root@localhost ~] # id nsj820
uid=503 (nsj820) gid=503 (nsj820)组=503 (nsj820)
/etc/passwd [root@localhost ~] #尾1
nsj820: x: 503:503::/home/nsj820:/bin/bash
/etc/passwd (root@localhost ~) #尾2
nisj: x: 502:500::/home/nisj:/bin/bash
nsj820: x: 503:503::/home/nsj820:/bin/bash #系统自动创建了名为nsj820的用户组,id号为503

详细到没朋友,一文帮你理清Linux用户与用户组关系~