第14章 Linux帐号管理与ACL权限设置

 

一、Linux的账户与用户组

 

  1.UID和GID

 

UID:用户ID

GID:用户组ID

1.1 文件根据UID和GID去判断文件的归属。

eg:

1.新建用户为UID,并且查看该用户的UID

useradd UID

passwd UID

cat /etc/passwd | grep UID

显示:UID:x:1005:1005::/home/UID:/bin/sh

2.使用用户UID新建文件,并查看属性

 

cd ~

touch ceshi

ll ceshi

显示:-rw-r--r-- 1 UID UID  0 2012-11-08 15:23 ceshi

 

3.修改/etc/passwd,把用户UID的uid号修改成1006,查看文件ceshi属性

sudo vi /etc/passwd

cat /etc/passwd | grep UID

显示:UID:x:1006:1005::/home/UID:/bin/sh

cat ~

ll ceshi

 显示:-rw-r--r-- 1 1005 UID  0 2012-11-08 15:23 ceshi

 4.结论

系统根据文件的UID去查找/etc/passwd中用户对于的UID对应的帐号名,如果找不到UID那么文件属性中将直接显示UID而不是用户名。用户名只是为了让人更好的识别,而UID是让系统更好的识


 

2.用户账户

 

2.1 系统根据/etc/passwd和/etc/shadow 判别用户登录时候的身份。

 

2.2 /etc/passwd文件格式

1.查看用户root、UID和sshd

cat /etc/passwd | grep '\(root\)\|\(UID\)\|\(sshd\)' 

显示:

root:x:0:0:root:/root:/bin/bash
    sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
    UID:x:1006:1005::/home/UID:/bin/sh

用户名

密码

UID

GID

用户信息说明

(描述)

主目录

shell

root

x

0

0

root

/root

/bin/bash

sshd

x

104

65534

/var/run/sshd

/user/sbin/nologin

UID

x

1006

1005

/home/UID

/bin/sh

 

密码:早起密码是存放在这个字段,但是由于这个文件所有的程序都可以读取容易照成安全隐患,为此后来密码改存在/etc/shadow里面,而这个这段就变成值就变成X

UID:0为管理员专用,1-499为系统帐号(1-99为不同类型的linux自行创建的系统帐号,100-499为用户有系统帐号需求的时候可以使用的UID),500-65535为一般用户(现在2.6.x内核的已经可以支持到2^32-1的UID了)

shell:特殊shell /sbin/nologin (表示无法登录) 

2.3 /etc/shadow文件格式(命令chage修改该文件内容)

1.查看/etc/shadow中root

显示:UID:$1$LhhGQ7yq$F46jKrmDT/RJwoSI4ce8N1:15652:0:99999:7:5:15700: 

用户名

密码(加密)   

最后一次修改密码的时间

修改完密码后几天内不能再次修改

最后一次修改密码后再过几天需要再次修改

密码到期前几天提醒需要修改密码

密码过期后几天密码失效

密码失效时间

root

一串加密后的密文

15652

0

99999

7

5

15700

  

(1)第二字段:该字段为密码加密后的密文,如果该字段为“!”的话就表示该密码为空或者失效,这时候将无法登录,当使用命令“passwd 用户名  -l”(-u 为解锁)的时候,该字段就会变成“!”作用:锁定该用户。

(2)最后一次修改密码时间(第三个字段):该字段是按照天数来算的,表示从1970年1月1日开始的第15652天修改了密码。比如1971年1月1日修改密码,那么就是365(一年365天)+1(1970/01/01这一天)=366,第三个字段就是366。

(3)第四个字段:表示最后一次修改密码完后的X天内不能修改密码,X=0表示没有限制。

(4)第五个字段:表示最后一次修改密码完后的X内天需要修改密码,X=99999(273年)表示没限制。

(5)第六个字段:密码到期前X天内提醒修改密码

(6)第七个字段:密码过期后X天密码失效。

(7)第八个字段:密码失效日期(和第二个字段一样的算)(如果要让账户暂时不能用的话可以把该字段设置为0)

PS:密码到期不等于密码失效,

密码过期后用户还可以登录系统,但是登录后必须修改密码才能继续接下来的操作。

密码失效后用户无法再登录系统,如果密码失效时间(第8字段)比密码过期时间早的话,那么不敢密码是否过期用户都无法登录

 


3.有效与初始用户组:groups newgrp

 

3.1 /etc/group文件结构

head -n 4 /etc/group

显示:

root:x:0:yoyo,root
    daemon:x:1:
    bin:x:2:
    sys:x:3:
 

用户组名称

用户组密码

GID

用户组里面的用户

root

x

0

yoyo,root

(1)用户组密码:密码移动到/etc/gshadow,所以此处为x

3.2 有效用户组(effective group)和初始用户组(initial group)

一个用户可以加入多个组,那是以哪个用户组为准?

(1)初始用户组:/etc/passwd 中第四个字段GID,这个GID所代表的用户组就是用户的初始用户组,当用户登录系统后,立刻拥护该用户组的权限。所以用户名不用填在初始用户组的/etc/group中第四个字段,初始用户组

(2)有效用户组:如果用户同时加入两个用户组,那么用户在读取和写入的时候都用户两个用户组的权限,但是如果在创建文件的时候文件的组为当时的有效用户组。

3.3 有效用户组查看

命令:groups user(用户名)

显示:group_A group_B

表示:user属于group_A和group_B,gourp_A为用户当前的有效用户组(第一个用户组为有效用户组),这时候创建文件的时候属组是group_A

3.4 有效用户组切换

命令:newgrp group_B(用户组)

表示:切换当前登录的用户的有效用户组为group_B。

原理:当使用newgrp命令后,系统会重新给一个shell给我们,而这个shell除了有效用户外其他都和原shell一样。而当我们不用这个shell的时候我们可以输入exit退出当前这个shell或者重新登录系统,这时候有效用户组就会变回原来的。

3.5 /etc/gshadow文件格式

命令:cat /etc/gshadow | grep root

显示:root:::root,bin

组名

密码列

用户组管理员帐号

组内用户

Root

Root,bin

解释

(1)第二字段:如果字段内容为!表示无合法密码,所以无用户组管理员

(2)第三字段:用户组管理员可以协助root把用户添加到自己管理的组内。可以使用gpasswd命令添加