Linux的帐号管理与ACL权限设定

来源:互联网 发布:网络家教招聘 编辑:程序博客网 时间:2024/05/20 11:19

用户在终端界面通过login接口,输入帐号密码后,linux系统做了什么?

  1. 先找寻 /etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的 UID 与GID (在 /etc/group 中) 读出来,另外,该账号的家目录与 shell 设定也一并读出;
  2. Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符;
  3. 如果一切都 OK 的话,就进入 Shell 控管的阶段啰

/etc/passwd文件结构

文件每一行代表一个帐号
e.g.

root:x:0:0:root:/root:/bin/bash
  1. 帐号名称
  2. 密码(以x代替,实际密码加密存储在/etc/shadow中)
  3. UID (user id)(0代表root,1~999为系统帐号,1000~给一般使用者用的)
  4. GID (group id)(与/etc/group有关)
  5. 用户信息说明栏
  6. 家目录
  7. Shell (用哪个帐号登录时获取的shell)

/etc/group文件结构

文件每一行代表一个群组
e.g.

root:x:0:
  1. 组名
  2. 群组密码(以x代替,实际密码存储在/etc/gshadow中)
  3. GID
  4. 在此群组中的帐号(我们知道一个账号可以加入多个群组,那某个账号想要加入此群组时,将该账号填入这个字段即可。 举例来说,如果我想要让 a与 b 也加入 root 这个群组,注意不要有空格, 使成为root:x:0:a,b )(其中初始群组(initial group)的用户已默认加入,因此不会在显式写出,比如在这个root群组中root这个帐号已经默认加入,因此第四段为空)

问题:当用户加入多个群组时,在工作时,是以哪个群组为准的呢?

答:针对已经存在的文件和目录,只要是加入的群组的功能均可使用;新建文件或目录时,文件和目录的群组应为这个用户的有效群组

通过groups指令可以获取当前用户加入的所有群组,显示出的第一个群组即为有效群组
在root环境中可以使用usermod指令给用户添加群组

添加用户以及用户密码的指令

useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名
passwd [账号名称]

删除用户的指令

userdel [-r] 帐号名称 //-r表示家目录删除掉

什么是ACL?

ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一文件或目录来进行r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助

那 ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目:
1. 使用者 (user):可以针对使用者来设定权限;
2. 群组 (group):针对群组来设定其权限;
3. 默认属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;