2018-Linux系统基础-linux-08-用户和组群账户管理
用户和组群账户管理
- 在linux操作系统中,用户账号是登录系统的唯一凭证,其中root是最高管理者,其UID是0。
- 与用户账号和组账户相关的配置文件有/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow.
- linux操作系统可以使用chage命令管理用户口令的时效,防止用户口令由于长时间使用而泄露。
1. 用户账户管理
- 在实际工作中,用户的角色是通过UID来标识的。每个用户的UID也都是不同的。
1.1. linux用户账号概述
- linux操作系统有三种用户
1.1.1. root用户
- 系统的内置用户,权限最高。
- 在系统中的每个文件、目录和进程都归属于某一个用户,没有改用户许可,除了root用户以外其他的普通用户是无法操作的。
- root用户的特权性:
- root用户可以超越任何用户和用户群组来对文件或目录进行读写、修改和删除(在系统正常的许可范围内)。
- 可以控制可执行程序的执行和终止。
- 可以对硬件设备执行添加、创建和移除等操作。
- 可以对文件和目录的属性或权限进行修改以适合系统管理的需要。
1.1.2. 虚拟用户
- 这一类用户也被称为伪用户或假用户,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户
- 比如:bin,daemon,adm,ftp,mail等用户账户
1.1.3. 普通用户
- 由系统管理员创建,并且能够登录linux系统,只能操作自己目录内的文件,权限有限。
1.2. linux用户账户配置文件
1.2.1. /etc/passwd文件
- /etc/passwd是系统识别用户的一个文件,记录了linux系统的所有用户。
- 登录过程:
- 用户以某个用户名登录系统
- 系统检查/etc/passwd文件,确认是否存在该用户
- 确认用户的UID,存在则读取/etc/shadow影子文件中对应的口令
- 口令无误则登录系统
- 内容:读取文件内容,显示出来每一行是一个用户账户的信息。
- 每个段位用:分隔开
- 七个字段都是什么:
- 用户名
- 口令:加密的口令,被映射到了/etc/shadow中了
- 用户标识号:唯一,root->0
- 组群标识号:系统内用一个整数标识用户所属的群组的ID号
- 用户名全称:用户名描述,可以先不设置
- 主目录:用户名登录系统后首先进入的目录
- 登录Shell:用户使用的Shell类型
- UID简介:
- UID是用户的ID值,每个用户是唯一的,这关系到系统安全。
- 一个从0开始正整数,最大值可从/etc/login.defs中查到
- 命令:
cat /etc/login.defs | grep UID_MAX
- 命令:
- 一般系统会预留500以前的UID和GID(组ID号)给虚拟用户使用
1.2.2. /etc/shadow文件
- /etc/shadow文件是/etc/passwd的影子文件,并不由/etc/passwd文件产生
- 这个文件只有root可以读取和操作,/etc/shadow文件内容包括用户以及被加密的口令以及其他/etc/passwd不能包括的信息,比如用户账户的有效期限。
- 这个文件包括9个段位,每个段位之间用":"分割。
- 9个字段的基本含义:
- 用户名:这里的用户名和/etc/passwd中的用户名是相同的
- 加密口令:口令已经加密,有些用户如果显示的是!!,则还未设置口令,无法进行登录。
- 用户最后一次更换口令的日期:从1970年1月1日起,按天进行计算。
- 口令允许更换前的天数:若设置为0,则禁用这个命令
- 口令需要更换的天数:若为0,同上
- 口令更换前的天数:用户登录系统后,系统登录程序提醒用户口令即将过期。
- 账户被取消激活前的天数:表示用户口令过期多少天,系统后禁用此用户。
- 用户账户过期日期:指定用户账户禁用的天数,如果这个字段的值为空,账户永久可用。
- 保留字段:目前为空,以备后用。
1.3. 图形界面进入用户账户的设置
- 显示linux系统用户:
- 使用用户管理器,需要使用管理员登录系统,同时需要安装system-config-users软件包,可以在终端输入system-config-users命令启动。
- 单击"用户"选项卡,可以查看包括系统内本地用户的列表,单击"组群"选项卡,可以查看包括系统内本地组群的列表。
- 寻找指定用户或组群可以在"搜索过滤器"字段内输入名称的前几个字符。
- 用户管理器不显示系统默认UID。
- 在首选项对话框中取消选择"隐藏系统用户和组",单击"关闭"按钮,就可以显示系统用户。
- 创建用户账户:
- 在系统管理器中单击"添加用户"按钮,只有就可以输入。
- 在"登入Shell"文本框内输入Shell类型,可以修改为用户创建的主目录。
- 可以设置ID,之后确定。
- 修改用户账户属性:
- 从"用户管理器"中的"用户"选项卡,从用户列表中选择该用户,单击属性,打开相应对话框。
- 多个选项的数据:
- 用户数据:显示添加用户时配置的基本用户信息。
- 可以改变用户的全称、口令、主目录和登录Shell
- 账户信息:如果想要让账户在固定日期过期,可以进行设置。
- 选住本地口令被锁,锁定账户
- 口令信息:这个选项卡显示了用户口令最后一次更改的日期
- 组群:选择让用户加入的组群以及用户的主要组群。
- 用户数据:显示添加用户时配置的基本用户信息。
- 删除用户账户:
- 单击用户即可选择,然后再单击"删除"按钮
- 删除关于用户的一切信息。
1.4. 字符界面下的用户账户的设置
- 主要用的命令会是:useradd、usermod和userdel.
- 创建用户账户:
- 创建一个用户账户是在系统中创建一个新账户,然后为新账户分配用户UID、用户组群、主目录和登录Shell等资源。
- 新创建的用户账户默认是被锁定的,无法使用,需要passwd命令设置密码之后才能使用。
- 语法:
useradd [-u uid [-o]][-g 组群名][-G 组群名,...][-d home][-s shell][-c comment][-m [-k template]][-f inactive][-e expire][-p passwd][-M][-n][-r][-l][用户名]
useradd -D [-g 组群名][-b base][-s shell][-f inactive][-e expire]
- 选项:
- -d:新账户每次登录时所使用的主目录。
- -e:账户的终止日期:指定格式:MM/DD/YY
- -f:账号过期几日后永久停权。当值为0时账号立刻被停权。而当值为-1时则关闭此功能。
- -g:组群名称或以数字作为用户登录起始用户组群。预设的用户组群数字为"1"。
- -G:定义此用户为多个组群的成员。每个用户组群使用","隔开,不可以包含空白内容。
- -m:用户目录若不存在,则建立
- -M:不建立用户目录,直接用/etc/login.defs系统档设定要建立用户目录。
- -n:预设值用户的用户名称会相同,此选项将取消此预设值。
- -r:此选项用来建立系统账号
- -s:用户登录后使用的shell类型
- -u:用户使用的ID值,必须为唯一的ID值(-o 数字不可为负值)
- 修改用户账户:
- 使用usermod命令能改变用户的Shell类型、所属的群组
- 命令语法:
usermod [-u uid[-o]][-g 组群名][-G 组群名,...][-d 主目录[-m]][-s shell][-c 注释][-l 新登录名][-f 失效日][-e 过期日][-p 密码名][-L|-U][用户名]
- 各参数的含义:见PPT
- 删除用户账户:
- 使用userdel命令可以在linux系统中删除用户账户。
- 命令:
userdel [-r][用户名]
- 选项:
- -r:表示在删除用户的同时,将用户的主目录及本地邮件存储的目录或问价也一起删除。
2. 组群账户管理
2.1. linux组群用户管理
- 用户组群配置文件:
- /etc/group
- /etc/gshadow
2.1.1. /etc/group文件:
- /etc/group文件是用户组群的配置文件,包括用户和用户群组,并且能显示出用户是归属于什么。
- 如果root用户把某个文件的读写执行权限开放,root用户群组的所有用户都可以修改文件。
- 如果可执行的文件,root用户组群中的用户群组的用户也可以执行。
- 文件内容:
- /etc/group文件的内容包括用户群组名、用户组群口令、GID及该用户组群所包含的用户。
- 每一个组群都有一条记录,包含4个段位,每个段位用:分隔开。
- 组群名:用户群组口令。
- 组群口令:存放加密的密码。
- 组群标识号:在系统中用一个整数表示组群GID,每个组群的GID都是唯一的,默认。普通组群从500开始,root组群的GID是0
- 组群成员:属于这个组群的成员。
- 组群GID的概述
- 组群GID类似UID,是一个从0开始的正整数。
- 查看最大值和最小值可以使用命令来查:
cat /etc/login.defs | grep GID
2.1.2. /etc/gshadow文件
- 这个文件是/etc/group的加密文件。
- 比如:用户组群管理密口令就是存放在这个文件中。
- 文件内容:
- 这个文件每个用户群组都有一条记录。一行有4个段位,每个段位都用:分隔。
- 每个字段的含义:
- 组群号:组群的名称。
- 组群口令:口令的加密,如果有些组群在这里显示的是!,表示这个组群没有口令。
- 组群管理员:组群的管理员,有权在该组群中添加、删除用户。
- 组群成员:属于该群组的用户成员列表,如有多个用户用,分隔。
2.2. 图形界面下组群账户的设置
- 创建组群用户:
- 修改组群账户属性:
- 在群组关键卡中
- 找到属性按钮。
- 删除组群账户。
2.3. 字符界面下组群账户的设置
2.3.1. 创建组群账户
- 使用groupadd命令可以在linux系统下创建组群用户。
- 命令语法:
groupadd [-g gid [-o] ][-f][组群名]
- 含义:
- 后接GID值,除非使用-o参数,否则该值必须是唯一的,数值不可为负。
- 创建系统组群。
2.3.2. 修改组群账户
- 使用groupmod命令可以在linux系统中修改组群账户。
- 命令语法:
groupmod [-g <组群识别码> <-o>][-n <新组群名称>][组群名称]
- 参数含义:
- -g:设置欲使用的组群GID
- -o:重复使用组群GID
- -n:设置欲使用的组群GID
2.3.3. 删除组群账户
- 使用useradd可以在linux系统中删除组群账户
- 命令语法:
groupdel [组群名称]
- 说明:必须先删除所有的群组,才能删除组群。
3. 账户相关文件或目录
- 在很多对账户的操作,都会涉及到一些文件和目录。
3.1. /etc/skel目录
- 这个目录是存放用户启动文件的目录,这个目录由root用户管理,当管理员创建新用户时,这个目录下的文件会自动复制到新创建的用户的主目录下。
- 目录下的所有文件都是隐藏文件,也就是类似".file"格式,可以通过添加、修改和删除/etc/skel目录下的文件,来为用户提供一个统一、标准和默认的用户环境。
- 创建新用户:
- 使用useradd命令创建新用户,会赋值相应文件到目录下。
- 或者,手动完成上述操作。
3.2. /etc/login.defs配置文件
- 这里面规定了创建新用户时的一些默认设置,比如创建用户时是否需要主目录、UID和GID的范围、用户账户口令的期限等,需要root用户来修改。
3.3. /etc/default/useradd文件
- 记录的是使用useradd命令创建用户账户的规则文件。
4. 用户和组群维护命令
4.1. 账户维护命令
4.1.1. passwd命令
- 使用passwd命令可以设置或修改用户的口令,普通用户和超级权限用户都可以运行passwd
- 普通用户只能更改自己的用户口令,而root用户可以设置或修改任何用户的口令
- 命令语法:
passwd [选项][用户名]
- 命令中参数的含义:
- -d:
- -l:
- -u:
- -x:
- -n:
- -w:
- -i:
- -S:
4.1.2. gpasswd命令
- 使用gpasswd命令可以设置一个组群密码,或是在组群中添加、删除用户。
- 命令语法:
gpasswd [-r|-R][群组名]
gpasswd [选项][用户名][群组名]
- 参数含义:
- -a:将一个用户加入到一个组群中。
- -d:将一个用户从一个组群中删除。
- -r:取消一个用户组群的组群密码。
4.1.3. chfn命令
- 使用chfn命令可以更改用户全名、办公室地址、电话等信息。
- 命令语法:
chfn [-f full-name][-o office][-p office-phone][-h home-phone][-u][-v][用户名]
- 命令中参数的含义:
- 设置全名:
- 设置办公地址:
- 设置公司电话:
- 设置家庭电话:
4.1.4. chsh命令
- 可以更改用户的Shell类型。
- 命令语法:
chsh [-s Shell类型][-l][用户名]
- 命令参数:
- -s:更改用户的Shell类型
- -l:列出当前目录可用的Shell清单。
4.1.5. su命令
- 使用su命令可以切换到其他用户账户进行登录。
- 命令中各参数含义:
- -:默认切换到root用户,并且切换到root用户,不改变Shell环境。
- -l:登录并改变用户环境。
- -c:执行一个命令,然后退出所在的用户环境。
4.1.6. pwck命令
- 使用pwck命令可以校验用户配置文件/etc/passwd和/etc/shadow内容是否合法和完整。
- 命令语法:
pwck
4.1.7. newgrp命令
- 使用newgrep命令可以让用户账户以另一个组群的身份进行登录。
- 命令语法:
newgrp [grep]
- newgrep指令类似login指令,是以相同的账号名,不同的组群身份登录系统。使用这个指令来切换组群,用户必须是该组群的用户,否则无法登陆。
4.2. 账户信息显示
4.2.1. finger命令
- 可以显示用户账户的信息。
- 命令语法:
finger [选项][用户名]
- 参数含义:
- -l:采用长格式显示用户信息。
- -m:禁止对用户真实名字进行匹配。
- -p:把.plan和.project文件中的内容省略。
- -s:采用短格式显示用户信息。
4.2.2. groups命令
- 使用这个命令可以显示指定用户账户的组群成员身份。
- 命令语法:
groups [用户名]
4.2.3. id命令
- 使用这个id命令可以显示用户的ID以及该用户所属组群的GID。
- 命令语法:
id [选项][用户名]
- 参数含义:
- -g:显示用户所属主组群的GID
- -G:显示用户所属组群的GID
- -u:显示用户UID
4.2.4. w命令
- 使用w命令可以详细查询已登录当前计算机的用户。
- 命令语法:
w
- 参数含义:
- -f:开启或关闭显示用户从何处登录系统
- -h:不显示各栏位的标题信息列
- -l:使用详细格式列表,此为预设值
- -s:使用简介格式列表,不显示用户登录时间,终端机阶段作业和程序所耗费的CPU
- -u:忽略执行名称,以及该程序耗费CPU的
4.2.5. who命令
- 使用who命令可以显示已登录当前计算机用户的简单信息。
- 命令语法:
who [-version][am i][记录文件]
- 参数含义:
- -H:显示各栏位的标题信息列
- -i:显示闲置时间
- -m:显示当前用户信息
- -q:只显示登录系统的账号名称和总人数
- -s:此参数将忽略不计
- -w:显示用户的信息状态栏
2018-Linux系统基础-linux-08-用户和组群账户管理
https://spricoder.github.io/2018/07/16/2018-Linux-system-basics/2018-Linux-system-basics-linux-08-%E7%94%A8%E6%88%B7%E5%92%8C%E7%BB%84%E7%BE%A4%E8%B4%A6%E6%88%B7%E7%AE%A1%E7%90%86/