linux账户、组、文件权限

账户与群组

每个系统用户都至少有两个ID:使用者ID(User ID,简称UID)、群组ID(Group ID,简称GID)。

显示文件属性时,系统会依据UID从/etc/passwd中找出账户名,根据GID从/etc/group中找出组名,然后再把账户名和组名显示出来。

账号文件/etc/passwd组成:

每行表示一个用户,每个字段用:分隔,共有7个字段:账户名称:密码:UID:GID:用户信息说明:家目录:登录shell

UID为0表示是系统管理员;1 - 499是保留给系统账号的;500 - 65535是可登入账号的,给一般使用者使用。

系统账号主要用于运行服务,一般不会建立家目录。

密码文件/etc/shadow组成:

实际保存用户的密码,以:分隔,有9个字段:
账户名称:密码:最近更改密码的日期:密码不可被更改的天数:密码需要重新变更的天数:密码需要变更期限前的警告天数:密码过期后的账号宽限时间:账号失效日期:保留

说明:

  • 最近更改密码的日期:记录了密码上次被修改的日期,日期是以1970年1月1日作为1而累加的日期,每过一天加1。
  • 密码不可被更改的天数:(与第3个字段相比)记录了这个账号的密码在上次被更改后需要经过几天才可以再被更改。如果是0表示密码随时可以更改。
  • 密码需要重新变更的天数:(与第3个字段相比)指定上次更改密码之后,在多少天内需要再次更改密码才行。
  • 密码需要变更期限前的警告天数:当账号的密码有效期限快要到的时候(第5个字段),系统会依据这个字段的设定,发出“警告”言论给这个账号。
  • 密码过期后的账号宽限时间:(与第5个字段相比),密码的有效日期为更新日期(第3个字段) + 重新变更日期(第5个字段),过了这个期限后用户依旧没有更新密码,那该密码就算过期。密码过期后,账户登入系统时,系统会强制要求重新设定密码才能登入继续使用。
  • 账号失效日期:用1970年以来的总天数设定。表示这个账号在此字段规定的日期后将无法再使用,不管密码是否过期。

root密码忘记后,可以用LiveCD挂载根目录修改/etc/shadow,将root的密码字段清空,再重新启动后root将不用密码即可登入。

群组文件/etc/group组成:

每行代表一个群组,用冒号:分隔:组名:群组密码:GID:群组支持的账号名称

群组支持的账号名称用逗号分隔多个账号。

群组分为有效群组(effective group)与初始群组(initial group)。
/etc/passwd里的第4栏GID就是初始群组,当用户登入系统,立刻就拥有这个群组相关的权限。
初始群组不需要在/etc/group的第4个字段写入账号,有效群组才需要。

有效群组的作用是在新建文件时,新文件所属的群组就是用户当前的有效群组。

继续阅读