本文是一篇有关linux用户与用户组的详细教程,内容包括用户和用户组文件、用户密码文件、用户组账号文件、用户与用户组的管理等知识。
供初学者参考学习。
1,用户和用户组文件
在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。
在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow的配置文件中。
在passwd文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用":”分隔,每个字段均代表该帐号某方面的信息。
在刚安装完成的linux系统中,passwd配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是linux进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为/sbin/nologin,表示该帐号不能用来登录linux系统。
在passwd配置文件中,从左至右各字段的对应关系及其含义:
用户帐号 用户密码 用户ID 用户组ID 用户名全称 用户主目录 用户所使用的shell
root x 0 0 root /root /bin/bash
由于passwd不再保存密码信息,所以用x占位代表。
若要使某个用户账户不能登录linux,只需设置该用户所使用的shell为/sbin/nologin即可。比如,对于FTP 账户,一般只允许登录和访问FTP服务器,不允许登录linux操作系统。若要让某用户没有telnet权限,即不允许该用户利用telnet远程登录和访问linux操作系统,则设置该用户所使用的shell为/bin/true即可。若要让用户没有telnet和ftp登录权限,则可设置该用户的 shell为/bin/false。
在/etc/shells文件中,若没有/bin/true或/bin/false,则需要手动添加:
2,用户密码文件
为安全起见,用户真实的密码采用MD5加密算法加密后,保存在/etc/shadow配置文件中,该文件只有root用户可以读取。
与passwd文件类似,shadow文件也是每行定义和保存一个账户的相关信息。第一个字段为用户帐户名,第二个字段为账户的密码。
3,用户组帐号文件
用户组帐号信息保存在/etc/group配置文件中,任何用户均可以读取。用户组的真实密码保存在/etc/gshadow配置文件中。
在group中,第一个字段代表用户组的名称,第二个字段为x,第三个为用户组的ID号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔。
4,添加用户
创建或添加新用户使用useradd命令来实现,其命令用法为:
useradd [option] username
该命令的option选项较多,常用的主要有:
-c 注释 用户设置对账户的注释说明文字
-d 主目录 指定用来取代默认的/home/username的主目录
-m 若主目录不存在,则创建它。-r与-m相结合,可为系统账户创建主目录
-M 不创建主目录
-e date 指定账户过期的日期。日期格式为MM/DD/YY
-f days 帐号过期几日后永久停权。若指定为-,则立即被停权,若为-1,则关闭此功能
-g 用户组 指定将用户加入到哪个用户组,该用户组必须存在
-G 用户组列表指定用户同时加入的用户组列表,各组用逗分隔
-n 不为用户创建私有用户组
-s shell 指定用户登录时使用的shell,默认为/bin/bash
-r 创建一个用户ID小于500的系统账户,默认不创建对应的主目录
-u 用户ID 手动指定新用户的ID值,该值必须唯一,且大于499
-p password 为新建用户指定登录密码。此处的password是对应登录密码经MD5加密后所得到的密码值,不实真实密码原文,因此在实际应用中,该参数选项使用较少,通常单独使用passwd命令来为用户设置登录密码。
示例:
若要创建一个名为zhangjie的用户,并作为student用户组的成员,则操作命令为:
添加用户时,若未用-g参数指定用户组,则系统默认会自动创建一个与用户帐号同名的私有用户组。若不需要创建该私有用户组,则可选用-n参数。
比如,添加一个名为lijie的账户,但不指定用户组,其操作结果为:
创建用户账户时,系统会自动创建该用户对应的主目录,该目录默认放在/home目录下,若要改变位置,可以利用-d参数指定;对于用户登录时使用的shell,默认为/bin/bash,若要更改,则使用-s参数指定。
例如,若要创建一个名为vodup的账户,主目录放在/var目录下,并指定登录shell为/sbin/nologin,则操作命令为:
5,设置帐号属性
对于已创建好的用户,可使用usermod命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录shell等,该命令用法为:
usermod [option] username
部分option选项
(1)改变用户帐户名
使用-l参数来实现,命令用法为:
usermod -l 新用户名 原用户名
例如,若要将用户lijie更名为lijunjie,则操作命令为:
从输出结果可见,用户名已更改为lijunjie。主目录仍为原来的/home/lijie,若也要更改为/home/lijunjie,则可通过执行以下命令来实现
(2)锁定账户
若要临时禁止用户登录,可将该用户账户锁定。锁定账户可利用-L参数来实现,其命令用法为:
usermod -L 要锁定的账户
linux锁定用户,是通过在密码文件shadow的密码字段前加“!”来标识该用户被锁定。
(3)解锁账户
要解锁账户,可以使用带-U参数的usermod命令来实现
6,删除账户
要删除账户,可以使用userdel命令来实现,其用法为:
userdel [-r] 帐户名
-r为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。
若要设置所有用户账户密码过期的时间,则可通过修改/etc/login.defs配置文件中的PASS_MAX_DAYS配置项的值来实现,其默认值为99999,代表用户账户密码永不过期。其中PASS_MIN_LEN配置项用于指定账户密码的最小长度,默认为5个字符。
7,设置用户登录密码
使用passwd命令来设置,其命令用法为:
passwd [帐户名]
若指定了帐户名称,则设置指定账户的登录密码,原密码自动被覆盖。只有root用户才有权设置指定账户的密码。一般用户只能设置或修改自己账户的密码(不带参数)。
例如,若要设置lijunjie账户的登陆密码,则操作命令为:
[root@localhost ~]# passwd lijunjie
更改用户 lijunjie 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
账户登录密码设置后,该账户就可以登录系统了。按ctrl+alt+F2键,选择第2号虚拟控制台(tty2),然后利用lijunjie账户登录,以检验能否登录。