目录
用户
用户的分类
管理员用户
普通用户
程序用户
UID
passwd
chage
useradd
usermod
userdel
组
gpasswd
其他
Linux中用户分为三类,分别为
即root用户,我们在安装Linux虚拟机的过程中,有一个步骤就是设置root账户。设置了root账户后普通账户就无所谓怎么设置了,因为root对本机的控制权极高,ID=0。直接使用root账户登录系统,就可以随意修改普通账户了。主要还是权限大,很多操作使用普通用户是进行不了的,会提示权限不够。
普通用户权限就比root少很多了,一般只在自己的宿主目录才有完整,用户的宿主目录不特地去修改的话,一般就在home下。在我们安装虚拟机的时候也弹出过创建用户的步骤,一般不使用普通用户登录。可以由root创建、赋权、删除。
在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。这类用户被称为伪,用户一般不会用来登录系统。
每个用户都有一个身份标识,这个表示就是Uid,类似于每个人的身份证。
root作为管理员用户uid肯定要特殊一点,他的uid为0
普通用户基本上都是从1000开始,如果不做特别的设置就是逐一往后加。
passwd是用来记录文件账号详细说明的。文件里的每一行代表一个用户,后面的详细信息被冒号隔开
例如:
random:x:1202:1300::/home/random:/bin/bash
random:代表用户名,用户名是为了方便用户记忆的,Linux系统是通过UID来识别用户身份的。
x:表示此用户设有密码,密码都保存在/etc/shadow下,只有root用户才能查看。
1202:用户的UID号
1300:用户所属的基本组账号的GID
:描述性信息
/home/random:宿主目录。即该用户登录后的默认目录
/bin/bash:记录shell等信息,用户完成登录后使用的
还有另外一个文件,也记录了用户账号的详细信息,这个文件是/etc/shadow
我们称之为影子文件
他是这样一串代码:
random:!!:19894:0:99999:7:::
和passwd一样,shadow文件里的信息也被冒号隔开。
第一列:账户名
第二列:存放真正加密的密码,采用特殊的算法,更加难破译。!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d "1970-01-01 18983 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是 0,则密码可以随时修改 最小修改间隔时间 ,也就是说 该字段规定了从第三个字段(最后一次修改密码的日期)起,多长时间之内不能修改密码,如果是0 则随时修改密码,如果是10 则代表密码修改后10天之内不能再次修改密码,此字段是为了针对某些人频繁更改账号密码而设计的。
第五列:密码有效期,默认99999(273年),表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出 "修改密码" 的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
比如说,此字段规定的宽限天数是10,则代表密码过期10天后失效;如果是0 则代表密码过期后立即失效;如果是 -1 则代表密码永远不会失效
第八列:账号失效时间,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间
第九列:保留,未使用
既然知道了一个用户创建后会有哪些信息,那么接下来就要对这些信息进行修改,我们通常使用chage命令来对那些信息进行修改
用法是:chage [选项] [所作修改] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。chage -M 60 root
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
例如我想要修改laowang这个用户的到期时间为2023.6.1,我们可以用
chage -E 2023-06-01 laowang
这样,laowang这个用户就不可以登录了,因为到期时间是去年,用户已经失效了。
知道了用户基本信息如何修改,但是,修改哪个用户的呢?这时候我们需要创建用户,使用useradd命令。
用法:useradd [选项] [选项对应的操作] [用户名]
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:指定用户的基本组名(或使用 GID 号)。
-G:指定用户的附加组名(或使用 GID 号)。
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
-s:指定用户的登录Shell。
例如,我想要创建laowang这个用户,并且我想自定他的UID为1888(前提是这个UID未被使用),然后宿主目录是/home/1888/laowang,把他加到组wang中(前提是这个组存在,下面会讲如何创建组)
那么我们可以用
useradd -u 1888 -d /home/1888 -G wang(这里输入组的gid也可以)
然后创建完成我们可以用 id laowang 命令来查看一下
前面我们知道,chage命令可以修改用户账号一些信息,但是只能修改跟登录成功与否相关的。
那么想要修改账户的一些其他属性,我们就需要用usermod,比如说我新建了laozhang用户,我想让laozhang用1888这个UID,但是这个UID被laownag占用了,所以我需要修改laownag的UID,改成别的,这样我新建laozhang的时候,就不会显示UID已被占用了
用法 usermod [选项] [选项对应的操作] [用户]
参数
-l:更改用户账号的登录名称
-L:锁定用户账户
-U:解锁用户账户
-u:修改用户的 UID 号
-d:修改用户的宿主目录位置
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)
-G:修改用户的附加组名(或使用 GID 号)
-s:指定用户的登录 Shell
例如我要修改laowang的宿主目录
mv /home/laowang /laowang 先将目录移过去
usermod -d /home/laowang /laowang 再从属性是修改
cat /etc/passwd|grep laowang 查看一下passwd并过滤laowang的条目
与uesrmod -U -L 用法相同的还有passwd命令,同样也可以锁定/解锁用户
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
有创建用户那必然有删除用户,删除用户的代码是userdel
用法 userdel [-r] 用户名
添加-r的原因是删除用户时要连同用户的宿主目录一并删除。
组也分为基本组和附加组。
基本组:基于某种特定联系将多个用户集合在一起,即构成一个用 户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)。一般新建用户的时候会随用户自动创建,与用户同名。
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。一般一个用户可以有0个或多个附加组。
我们可以用groupadd和groupdel来创建和删除组,在/etc/group里可以查看组的信息。
gpasswd -a laowang gebi将laowang用户加入gebi组
groupdel命令简单很多,和userdel用法几乎相同
创建组后,我们可以通过gpasswd命令来进行一些组的操作。
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和
-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
groups [用户名] 命令可以查看用户所在组有哪些
finger [用户名] 可以查查学用户账号的详细信息
who 可以查看登录到主机的用户信息(远程登陆显示tty)