1、用户和用户组文件
在 linux 中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。
在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / etc/passwd 配置文件中。由于所有用户对 passwd 文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了 / etc/shadow 的配置文件中。
在 passwd 文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用 ":” 分隔,每个字段均代表该帐号某方面的信息。
在刚安装完成的 linux 系统中,passwd 配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是 linux 进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为 / sbin/nologin,表示该帐号不能用来登录 linux 系统。
在 passwd 配置文件中,从左至右各字段的对应关系及其含义:
由于 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,则需要手动添加:
[root@localhost ~]# echo "/bin/false">>/etc/shells
[root@localhost ~]# echo "/bin/true">>/etc/shells
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 命令来为用户设置登录密码。
示例:
若要创建一个名为 nisj 的用户,并作为 babyfish 用户组的成