Linux--账号与权限的管理
管理用户与组账号
用户账号概述
Linux系统中的用户账号和组账号的作用在本质上和Windows是一样的,都是基于用户身份来控制对资源的访问。但是在个别细节和表现形式方面还是有些许差异的。
用户账号
Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。
- 超级用户:root用户是Linux系统中默认的超级用户账号,对本级拥有最高的权限,类似于Windows系统中的administrator用户。
- 普通用户:普通用户账号需要有root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bin,daemon,ftp,mail等
UID号
Linux系统中的每一个用户账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号),对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。
用户 | UID号 |
---|---|
root | 0 |
程序用户 | 1-999 |
普通用户 | 1000-60000 |
用户账号文件 /etc/passwd 与 /etc/shadow
Linux系统中的用户账号,密码等信息均保存在相对应的 配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。
与用户账号相关的配置文件主要有两个,分别是/etc/passwd, /etc/shadow、前者用于保存用户名称,宿主目录,登录Shell等基本信息,后者用于保存用户的密码,账号有效期等信息。在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号“:”进行分隔。
- 第一字段:用户账号的名称,也是登录系统时使用的识别名称
- 第二字段:经过加密的用户密码字段,或者密码占位符“x”
- 第三字段:用户账号的UID号
- 第四字段:所属基本组账号的GID号
- 第五字段:用户全名,可填写与用户相关的说明信息
- 第六字段:宿主目录,即该用户登录后所在的默认工作目录
- 第七字段;登录shell等信息,用户完成登录后使用的shell
- 第一字段:用户账号名称
- 第二字段:使用MD5加密的密码字串信息,当为“*”或者“!!”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统
- 第三字段:上次修改密码的时间,表示从1970年1月1日起到最近一次修改密码时间隔的天数
- 第四字段:密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制。
- 第五字段:密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。
- 第六字段:提前多少天警告用户口令将过期,默认值为7
- 第七字段:在密码过期后多少天内禁用此用户
- 第八字段:账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用
- 第九字段:保留
组账号概述
对于用户账号来说,对应的组账号可分为基本组和附加组两种类型,每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个,对于该用户还属于哪些附加组,则需要在对应组账号的文件中才被体现。
组账号文件 /etc/group 与 /etc/gshadow
组账号文件也有两个,分别是/etc/group, /etc/gshadow。与用户账号文件非常类似。前者用于保存组账号名称,GID号,组成员等基本信息,后者用于保存组账号的加密密码字符串等信息(但是很少使用到)。
某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用逗号“,”分隔。
文件/目录的权限及归属
在Linux文件系统的安全模型中,为系统中的赋予了2个属性,访问权限和文件所有者,简称权限和归属,其中权限包括读取R-4、写入W-2、可执行X-1三种基本类型,归属包括属主(拥有该文件的用户账户)、属组(拥有该文件的组账户)。
权限 | 解析 |
---|---|
读取(r) | 允许查看文件内容,显示目录列表 |
写入(w) | 允许修改文件内容,允许在目录中新建,删除,移动文件或者子目录 |
可执行(x) | 允许运行程序,切换目录 |
无权限(-) | 没有权限 |
查看文件/目录的权限及归属
字符 | 解析 |
---|---|
第一个字符“-” | 表示文件类型。可以是d(目录),b(块设备文件),c(字符设备文件),“-”普通文件,字母“l”(链接文件)等 |
第2-4个字符“rw-” | 表示该文件的属主用户(User)对该文件的访问权限。 |
第5-7个字符“r–” | 表示该文件的属组内每个成员用户(Group)对该文件的访问权限 |
第8–10个字符“–” | 表示其他任何用户(Other)对该文件的访问权限 |
第一个root | 表示属主 |
第二个root | 表示属组 |
设置文件/目录的权限及归属
chmod命令–更改文件/目录的权限
- 格式一:
chmod [ugoa][±=][rwx] 文件或者目录
u,g,o,a分别代表属主,属组,其他用户,所有用户
+,-,=分别代表增加,减去,设置一个权限 - 格式二:
chmod nnn(三位八进制数) 文件或者目录 - 常用选项:
-R 递归修改指定目录下所有文件或子目录的权限
chown命令–设置文件和目录的归属
-
格式:
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录 -
常用选项:
-R 递归修改指定目录下所有文件或子目录的归属权限
ACL权限
ACL(access control list),主要目的是在提供传统的owner,group,others的read,write,execute权限之外细部权限设定,ACL可以针对单一使用者,或者单一文件/目录进行,r,w,x的权限使用规范。
- 设置ACL:
setfacl -m u:username:rw filename
setfacl -m g:groupname:rwx filename - 查看:
getfacl filename - 删除:
setfacl -x u:username filename
SET位权限
-
SUID:为可执行文件文件设置(文件具有X位权限),权限标识字符:‘s’
格式: chmod u+s / 4*** filename
当执行这个可执行文件时,调用该文件的属主的身份执行 -
SGID: 一般设置在目录上,这时候在该目录下新建的文件或者里目录自动继承父目录的数组
格式:chmod g+s / 2*** 目录
粘滞位权限
为公共目录设置(777),标识为 't’ 用户不能删除其目录中其他用户的文件
格式:chmod o+t / 1*** 目录
反掩码–umask
umask 反掩码 022/002 权限的一种补码
root身份默认权限
-rw-r--r--. 1 root root 0 Jul 24 08:43 root_file 644
drwxr-xr-x. 2 root root 6 Jul 24 08:42 root_dir 755
普通用户身份默认权限
drwxrwxr-x. 2 yuxiang yuxiang 6 Jul 24 08:45 harry_dir 775
-rw-rw-r--. 1 yuxiang yuxiang 0 Jul 24 08:45 harry_file 664