鸟哥私房菜第14章——Linux账号管理与ACL权限设置

1,每个登陆的用户至少都会去的两个ID,一个是用户ID(UserID,简称UID),一个是用户组ID(Group ID,简称GID)。每个账号与ID的对应关系就在/etc/passwd中。
/etc/passwd中每一行都代表一个账号,有几行就代表有几个账号在你的系统中。里面有很多账号本来就是系统正常运行所必需的的,我们可以简称它为系统账号,例如bin,daemon,adm等。这个文件里的内容有7个字段,之间使用":"分隔。
第一个字段:账号名称
第二个字段:密码,后来密码改放到/etc/shadow中了
第三个字段:UID用户标识符,0代表是系统管理员,1~499代表是系统账号,500 ~ 65535代表可登陆的账号
第四个字段:GID
第五个字段:用户信息说明列
第六个字段:主文件夹
第七个字段:Shell,当用户登陆系统后就会取得一个Shell来与系统的内核通信以进行用户的操作任务。
2,现在密码都是单独放在文件/etc/shadow中的,这个文件每行有9个字段。
第一个字段:账号名称
第二个字段:经过加密的密码
第三个字段:最近更改密码的日期
第四个字段:密码不可被更动的天数,这个账号的密码在最近一次被更改后需要多少天才能被更改
第五个字段:密码需要重新更改的天数
第六个字段:密码需要更改期限前的警告天数
第七个字段:密码过期后的账号宽限时间
第八个字段:账号失效日期
第九个字段:保留
3,用户组的配置文件放在/etc/group和/etc/gshadow中。
/etc/group中有四个字段,分别如下:
第一个字段:用户组名称
第二个字段:用户组密码,密码已经转移到/etc/gshadow中去了
第三个字段:用户组的ID
第四个字段:此用户组支持的账号名称
/etc/gshadow中也有四个字段,分别如下:
第一个字段:用户组名
第二个字段:密码列,同样,开头为!表示无合法密码,所以无用户组管理员
第三个字段:用户组管理员的账号(相关信息在gpasswd中介绍)
第四个字段:该用户组所属账号
4,用户可以同时属于多个用户组,查看用户组的命令用groups,切换用户组的命令使用newgrp。但是你想要切换的用户组必须是你已经有支持的用户组。
5,新增与删除用户
useradd 【-u UID】 【-g 初始用户组】 【-G 次要用户组】【-mM】 【-s Shell】 用户账号名,参数具体含义通过man useradd 查看。
因为系统已经规定好了非常多的默认值了,因此我们使用useradd 账号来创建用户即可。然后在使用passwd 账号来设置密码就可以了。使用命令useradd -D可以查看系统创建文件时的默认值。
当我们新增用户设置错误的时候,可以使用usermod命令进行修改,其参数见man usermod。想要删除用户时,使用命令userdel [-r] username。其中-r参数表示连同用户的主文件也一起删除。
新建删除用户组命令如下:groupadd、groupmod、groupdel、gpasswd(新建用户组管理员)
6,linux命令finger或id 用户名就可以查看很多用户相关的信息。
7,ACL的主要目的是提供传统的owner、group、others的r、w、x权限之外的具体权限设置。ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。当你的文件系统启动ACL支持后,可以使用getfacl和setfacl两个命令来设置和查看ACL。
getfacl:取得某个文件/目录的ACL设置项目;setfacl:设置某个目录/文件的ACL规定。
使用setfacl设置权限之后,文件的权限部分就会多了一个+号,但是此时你看到的权限与实际权限可能会有点误差,这个时候就可以使用getfacl命令来查看,比较精确。
8,用户身份切换su与sudo

  • su
    注意,使用这个命令切换用户的时候要加上-,不加-的方式是non-login shell的方式。这种方式下很多原本的变量不会被改变。这会造成有些变量是不可以被使用的,因此要习惯性的写成su - 用户名的格式。
    如果仅需要使用root执行一条命令就切换回当前用户,可以使用命令su - -c "命令"
  • sudo
    使用这个命令的好处是不需要root的密码,但是仅有**/etc/sudoers内的用户**才能够执行sudo这个命令。可以通过修改sudoers文件中的内容来完成很多限制,比如哪个用户只能完成哪个命令P431。
    9,PAM模块
    PAM可以说是一套应用程序编程接口,它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAM就能够回报用户验证的结果。
    10,查询用户
    如果你想要知道目前已登录在系统上面的用户都有哪些,可以使用命令w或who
    如果想要知道每个用户的最近登录时间,可以使用命令lastlog
    11,可以使用命令write给其他用户发消息
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xiaoan08133192/article/details/114930343