第十四章 Linux账号管理域ACL权限设置

一、Linux的账号与群组

(一)使用者识别码UID,GID

linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后:

  1. 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的shell设置也一并读出。
  2. 然后根据UID到/etc/shadow文件中去寻找相应用户的密码,如果匹配一致
  3. 进入shell控制的阶段。

下面我们详细解释文件:

 1:/etc/passwd   

//我的passwd的一部分内容
student@student:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
  • 字段之间用 :分开.
字段 含义
1 用户名
2 用户的密码原来直接存储在第二字段,但是为了安全,最后专门有了/etc/shadow文件,现在默认用x替代
3 用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。
4 用户的gid。linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。
5 用户的账号说明解释
6 用户的家目录文件夹
7 用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。

2:/etc/shadow 

student@student:~$ cat /etc/shadow
root:$6$X9iEgIhv$wGtrUhjiNRp72LgCTzC1qdi.myfSU9S5nqsfr.m1KInUFoeOUBN73AmMy5sTe91biJLdHgsoimZQzeD9EvGlv1:16769:0:99999:7:::
daemon:*:16547:0:99999:7:::
bin:*:16547:0:99999:7:::
sys:*:16547:0:99999:7:::
sync:*:16547:0:99999:7:::
games:*:16547:0:99999:7:::
man:*:16547:0:99999:7:::
  • 字段 含义
    1 用户名
    2 用户的密码加密字段
    3 密码已经使用的日期(从1970-01-01开始,为什么?因为unix1969年发布雏形,基于当时对系统的考虑,就这样了)
    4 密码最少多少天之后可以修改(例子中是3天之后,也就是修改一次3天之后才能再次修改)
    5 密码多少天之后必须修改(例子中99999就是表明可以一直不用修改密码)
    6 密码修改之前几天提醒我修改(例子中是7天之前)
    7 要是没有修改延长几天(例子中延长3天)
    8 无论怎样到这个时间过期(例子中的时间从1970-01-01算)
    9 保留字段,目前无含义

3、/etc/group 内容具体分析 

/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:

group_name:passwd:GID:user_list 
在/etc/group 中的每条记录分四个字段: 
第一字段:用户组名称; 
第二字段:用户组密码; 
第三字段:GID 
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名(非系统用户,即UID小鱼500或者1000,该列可以为空,像root管理员,是要出现在本字段的); 


初始用户组:通过useradd添加新用户之后,会默认创建与用户名一模一样的组名。可通过/etc/passwd中的第四列和/etc/group中的信息查看

有效用户组:newgrp设置“newgrp 新组名”。可以通过groups查看,排在第一位的,就是当前有效用户名。比如,当时用“touch”创建文件后,查看文件属性(ls),其所属组是有效用户组。

注意:处理root用户之外,通过newgrp新更改的有效用户组,必须本身就是该用户支持的组。

可以让root用户,“usermod -G 组名 用户名 ”。-g代表的是更改初始用户组。


二、账号管理

(一)新增与删除用户

以下三个命令,都是管理员权限可以执行的操作。

1、useradd

会在/etc/passwd /etc/shadow(密码相关的参数填入,但是没有设置密码,第二列是两个谈好“!!”,,重置密码的话,使用passwd即可,如果输入的密码不符合规范,root用户输入两次,系统就统一了,普通用户必须要输入合规的密码才行),/etc/group(与账号名一模一样的组名)中创建相应信息。

在/home下创建一个和账号名一模一样的主文件夹,且权限为700

2、usermod

当时用useradd设置的参数需要被更改是,可以使用usermod进行个别参数的修改,比如上文提到的-g,-G这样重新设置用户组。

usermod的参数和useradd很类似,因为本身usermod就是对useradd做过的设置进行修改。

3、userdel

“userdel [-r] 用户名”。参数“-r”会同时删除主目录。推荐这个,不然以后再创建同名用户的时候,系统会提示有同名mail。

使用userdel删除的有:

用户相关参数:/etc/passwd, /etc/shadow

用户组相关参数:/etc/group, /etc/gshadow

用户个人文件数据:/home/username,/var/spool/mail/username

(二)用户功能

1、id

查看某人或者自己的uid, gid等信息

id [username]

(三)新增与删除用户组

1、groupadd

"group [-g gid] 用户组名": 规定使用的gid

"group [-r] 用户组名":为了让UID和GID成对,新建系统用户组时,使用“-r”。

2、groupmod

3、groupdel

注意:如果一个组,是其他用户的初始用户组,那

么就无法删除。不然,/etc/passwd中第四列GID的值找不到了,用户登录时会很懵逼。

以上创建、修改、删除用户组的操作,只能由root用户才有权限执行

4、gpasswd

root操作

"gpasswd testgroup":设置用户组的密码

"gpasswd -A 用户名 组名":把该用户设置为该组的用户组管理员

用户组管理员操作

"gpasswd -a 用户名 组名":将该用户添加到该组中

(四)、账号管理实例

SUID和SGID会出现在用户的执行位或者用户组的执行位上,比如:

  1. -rwsr-xr-x 1 root root 42824 Sep 13  2012 /usr/bin/passwd  

用户执行位由x变成s字母,意思是,当某用户执行这个文件时,享有该文件拥有者的权限

第十四章 Linux账号管理域ACL权限设置_第1张图片













你可能感兴趣的:(第十四章 Linux账号管理域ACL权限设置)