Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。
用户账户 | 功能 |
---|---|
超级用户 | root用户是Linux系统中默认的超级用户账号,对本级拥有最高的权限,类似于Windows系统中的administrator用户。 |
普通用户 | 普通用户账号需要有root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。 |
程序用户 | 在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bin,daemon,ftp,mail等。 |
匿名用户 | Windows中的匿名用户时guest,Linux系统中匿名用户是nobody。 |
对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。
账户 | 描述 |
---|---|
私有组(基本组) | 随着用户的建立而建立,与用户同名 |
共有组(附加组) | 直接创建空组,可以自由添加已有用户。给组设置权限后,该组中的所有用户都具备此权限。 |
Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。
用户 | UID号 |
---|---|
root用户 | 固定值UID=0 |
程序用户 | UID 1—999 |
普通用户 | UID 1000—6万 |
Linux系统中的用户账号,密码等信息均保存在相对应的 配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。
与用户账号相关的配置文件主要有两个,分别是/etc/passwd, /etc/shadow、前者用于保存用户名称,宿主目录,登录Shell等基本信息,后者用于保存用户的密码,账号有效期等信息。
在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号“:”进行分隔。
系统中所有用户的账号信息都保存在“/etc/passwd”文件中,该文件是文本文件,任何用户都可以读取文件中的内容。
系统中新增加的用户账号信息会保存到passwd文件的末尾。
基于系统运行和管理的需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,但是可以被不法用户暴力破解,因此后来将信息转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”。
例如:查看passwd文件头两行内容(每一行对应一个用户的账号记录)
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
字段 | 解释 |
---|---|
用户账号 | 用户账号的名称,也是登录系统时使用的识别名称 |
密码占位符 | 表示自己有密码 |
用户账号ID(UID) | 用户账号的UID号 |
组账号ID(GID) | 所属基本组账号的GID号 |
用户说明 | 用户全名,可以填写与用户相关的说明信息 |
宿主目录(家目录) | 该用户登录后所在的默认工作目录 |
登录Shell | 登录shell等信息,用户完成登录后使用的shell |
查看头两行shadow文件内容
[root@localhost ~]# head -2 /etc/shadow
root:$6$mH8hzgaq7mY/pNmy$L.P3c2kw1EYGn7upTEcckuVE88wOb4XdGqf0qxMq3cml.W0ewoF0m6fGmXnGWn3jCkPRNGEo6xXCcPjtKmKSo0::0:99999:7:::
bin:*:17110:0:99999:7:::
字段 | 解释 |
---|---|
第一字段(root) | 用户账号名称 |
第二字段(红色字体部分) | 使用MD5加密的密码字串信息,当为“*”或者“!!”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统 |
第三字段(14374) | 上次修改密码的时间,表示从1970年1月1日起到最近一次修改密码时间隔的天数 |
第四字段(0) | 密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制 |
第五字段(99999) | 密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制 |
第六字段(7) | 提前多少天警告用户口令将过期,默认值为7 |
第七字段 | 在密码过期后多少天内禁用此用户 |
第八字段 | 账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用 |
第九字段 | 保留字段,目前没有特定用途 |
1.5.1:/etc/group和/etc/shadow
组账号文件也有两个,分别是/etc/group, /etc/gshadow。与用户账号文件非常类似。前者用于保存组账号名称,GID号,组成员等基本信息,后者用于保存组账号的加密密码字符串等信息(但是很少使用到)。
某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用逗号“,”分隔。
例如:查看root组包括哪些用户成员,哪些组中包含root用户
检索root组包括哪些用户
[root@localhost ~]# grep "^root" /etc/group
root:x:0:
检索哪些组包括root用户
[root@localhost ~]# grep "root" /etc/group
root:x:0:
基本命令格式如下
useradd [选项] 用户名
常用选项有:
-u 指定用户的UID号,要求UID号码未被其他用户使用
-d 指定用户的宿主目录位置(当与 -M 一起使用时,不生效)
-e 指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-g 指示基本组
-G 指示附加组
-M 不建立宿主目录,即使/etc/login.defs系统配置中已设置要建立宿主目录
-s 指定用户的登录shell
[root@localhost ~]# useradd -e 2020-12-31 -s /sbin/nologin 66
/sbin/nologin后用户无法直接登录和被切换登录
创建一个用户,并设置密码且只输入一次,此功能在脚本中常用
useradd test1
echo “密码” | passwd --stdin test1 '免交互方式创建密码(stdin:输入)'
使用命令基本格式
passwd [选项] 用户名
常用选项
-d 清空指定用户的密码,仅使用用户名即可登录系统
-l 锁定用户账户
-S(大S) 查看用户账户是否被锁定
-u 解锁用户账户
通过passwd命令锁定的用户账号,将无法再登录系统(shadow文件中的对应密码子串前将添加“!!”字符),只能由管理员来解除锁定。(还可以从root用户切换登录)
root用户有权限管理其他账号的密码(指定账号名称作为参数即可),不指定用户名时,修改当前账号的密码。普通用户只能执行单独的“passwd”命令修改自己的密码。
例如:执行“passwd 66“命令可以为66账号设置登录密码
[root@localhost ~]# passwd 66
例如,普通用户设置自身的密码
[66@55~]$passwd
命令使用基本格式
usermod [选项] 用户名
常用选项
-l 更改用户账号的登录名称(Login Name)
-L 锁定用户账户
-U 解锁用户账户
-u 修改用户的UID号
-d 修改用户的宿主目录位置
-e 修改用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-s 指定用户的登录shell
命令执行基本格式
groupadd [-g GID] 组账号名
[root@33 ~]# groupadd -g 1000 market
命令使用基本格式
gpasswd [选项] 组账号名
常用选项
-a 向组内添加一个用户
-d 从组中删除一个用户成员
-M 定义组成员列表,以逗号分隔
例如:向root组内添加一个mike用户
[root@33 ~]# gpasswd -a mike root
例如:从root组内删除一个mike用户
[root@33 ~]# gpasswd -d mike root
例如:添加多个用户
[root@33 ~]# gpasswd -M a,b,c,d
一定注意:如果用了-M,就是对组列表的覆盖。
-M需要首次使用,后面不能再次使用。
首次使用了-M后,再次添加用户需要使用-a
使用命令基本格式
groupdel 组账号名
例如
[root@33 ~]# groupdel market
id命令基本格式
id [用户名] 查询用户身份标识
finger teacher 可以显示出teacher账户的详细信息
groups命令使用格式
groups [用户名] 查询用户所属的组
[root@33 ~]# w
12:16:47 up 2:27, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.197.1 09:51 7.00s 0.10s 0.02s w
~]#lastb 查看最近登录的历史记录
类型 | 解释 |
---|---|
读取r | 允许查看文件内容,显示目录列表 |
写入w | 允许修改文件内容,允许在目录中新建,移动,删除文件或子目录 |
可执行x | 允许运行程序,切换目录 |
类型 | 解释 |
---|---|
属主 | 拥有该文件或目录的用户账号 |
属组 | 拥有该文件或目录的组账号 |
字符 | 解释 |
---|---|
第一个字符“-” | 表示文件类型。可以是d(目录),b(块设备文件),c(字符设备文件),“-”普通文件,字母“l”(链接文件)等 |
第2-4个字符“rw-” | 表示该文件的属主用户(User)对该文件的访问权限。 |
第5-7个字符“r–” | 表示该文件的属组内每个成员用户(Group)对该文件的访问权限 |
第8–10个字符“r–” | 表示其他任何用户(Other)对该文件的访问权限 |
字段 | 解释 |
---|---|
1 | 子文件数量 |
root | 属主 |
root | 属组 |
34298 | 大小,单位:字节 |
04-02 00:23 | 创建时间 |
chmod命令使用基本格式
chmod [ugoa] [+-=] [rwx] 文件或目录 (不常用) (u,g,o,a分别表示属主,属组,其他用户,所有用户)(+-=分别表示增加,去除,设置权限)
或
chmod nnn 文件或目录 (最常用) (nnn表示三位八进制数字,如刚刚提到的 777,755,644等)
常用选项
-R 递归修改指定目录下所有子项的权限
chown命令使用基本格式
chown 属主 文件或目录
chown:属组 文件或目录
chown 属主:属组 文件或目录
常用选项
-R 递归修改指定目录下所有文件,子目录的归属
+:在原有参数的基础上,追加参数。
-:在原有参数基础上,移除参数
=:更新为指定参数
a:设置只能向文件中添加数据,而不能删除
i:设置后,不能对文件进行删除、写入、改名等操作
使用lsattr命令可显示文件的底层属性,其中配合该命令查看文件的属性常用的选项有:
-a:显示所有文件属性
-d:仅显示目录属性
-R:递归显示
umask作用 |
---|
控制新建的文件或目录的权限 |
默认权限去除umask的权限就为新建的文件或者目录的权限 |
umask设置命令格式
umask 000(000指数字)
umask查看
umask
umask的分数指的是“该默认值需要减掉的权限,”因此,如果执行“umask 022”,代表group和other被拿掉了权限“2”,也就是被拿掉了写的权限。
如果执行命令“umask 000”,代表文件的默认权限是“777”