Linux用户分类和权限详解
一、用户种类
linux系统中用户分为三类:
- root超级用户:root(超级管理员),UID为0,这个用户有极大的权限,可以直接无视很多的限制,包括读写执行的权限
- ftp系统用户:系统用户,UID为1~499。一般是不会被登入的,系统中系统服务由不同用户运行,更加安全,默认被限制登录系统。
- test普通用户:普通用户,UID范围一般是500~65534。这类用户的权限会受到基本权限的限制,也会受到来自管理员的限制。不过要注意nobody这个特殊的帐号,UID为65534,这个用户的权限会进一步的受到限制,一般用于实现来宾帐号。
UID和GID
- UID,也就是用户 ID。每个用户都有唯一的一个 UID,Linux 系统通过 UID 来识别不同的用户。一般默认root用户UID是0。实际上,UID 就是一个 0~65535 之间的数,不同范围的数字表示不同的用户身份,具体如表所示:
且需要注意:
- GID,全称“Group ID”,简称“组ID”,表示用户初始组的组 ID 号。
- GID 是用户组的编号,可以将多个用户加入到某个组中,方便指派任务或工作。每个用户在被创建时均会创建一个默认组(其GID与UID相同,叫作基本组或初始组),而后加入的组叫作扩展组或附加组。用户组名和GID则保存在 /etc/group 文件中。并且在 /etc/passwd 文件的第四个字段中看到的 ID 是这个用户的初始组。
初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。
附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。
小结:linux下用户的ID分为两类:UID和GID。每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 UID 和 GID 对应的用户名和群组名,然后显示出来。
1)/etc/passwd
首先我们来看一下这个文件目录下保存了什么东西,效果如图:
- 当然这里只是截图了一部分。那么看到这里你可能会蒙蔽,这么多用户哪来的。那么这里可以告诉你这些用户中的绝大多数是系统或服务正常运行所必需的用户,这种用户通常称为
- 系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。
且每行用户信息都以 “:” 作为分隔符,划分为 7 个字段,每个字段所表示的含义如下:
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
- 首先用户名,没啥好说的,就是代表用户的一段字符串,但是系统识别用户是用过UID来识别并且去分配权限,而/etc/passwd文件中就说明了用户名和UID的关系
- 密码的话,“x” 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中。
- 其次就是该文件是系统用户配置文件,所有的用户都具有可读权限
2)/etc/shadow
用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。
且该文件只有root用户有读权限,这就保证了密码的安全性。
格式如下:
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
- 加密口令 :使用SHA-512/SHA-256/MD5 算法加密后的密码,若为空,表示该用户无需密码即可登录,若为 “*” 表示该账号不能用于登录系统,若为 “ !! ” 表示该账号密码已被锁定,无法的登录。
3)/etc/group
格式:
组名:密码:GID:该用户组中的用户列表
4)/etc/gshadow
组名:加密密码:组管理员:组附加用户列表
个人的话是用不着的,企业里会用了解就好
1.文件访问用户分类
对于linux的文件有三种不同的用户权限类型
- 文件或目录的属主 u —— User
- 与属主同组的用户 g —— Group
- 其他用户(超级管理员除外) o —— Others
2.文件访问权限
比如随便打开一个文件:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
分为三种:
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏> 览该目录信息的权限
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有
删除移动目录内文件的权限 - 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有>进入目录的权限
- “—”表示不具有该项权限
- 用8进制数表示:
3.文件权限修改
chmod命令
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
-R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
1. 通过+/-权限字符修改文件访问权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
比如说为文件text.txt的拥有用户增加可执行功能
2. 通过8进制数字修改文件访问权限
比如改变为640执行权限
chown命令
- 功能:修改文件的拥有者 格式:chown [参数] 用户名 文件名
- -R:递归更改文件属组,就是在更更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chgrp命令
- 功能:修改文件或目录的所属组 格式:chgrp [参数] 用户组名 文件名
umask命令
查看或修改文件掩码 新建文件夹默认权限=0666 新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002。
umask码详细解读
三、目录的权限
- 在linux 环境下万物皆文件,目录也是,也具有读写和可执行三种权限。
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
- 但是为了防止其他用户具有写目录的权限就可以删除我们的文件,因此需要用到粘滞位
chmod +t test.txt
这样就可以避免被目录可写的访问者删除
总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档