浅析Linux系统下用户与权限管理

Linux作为一种多用户多任务操作系统,在日常的使用中不可避免地要划分出一个角色的概念来管理和使用计算机,这个角色与每一个计算机使用者关联,在Linux中称这种角色为用户。而在每一个用户使用计算机的过程中,又必然存在对有限计算机资源使用的限制性,那么操作系统就必须提供一种途径来保证每个用户独立、合理的使用计算机。

一、用户和用户组管理

(一)用户及用户组相关基本概念

用户:泛指计算机的使用者。用计算机可识别的用户ID(UID,user id)标识。

用户组:用户容器,用来将多个用户合并为一个单一的逻辑组件。用计算机可识别的用户组ID(GID,group id)标识。

UID和GID:都是16位二进制数,其范围为0-65535,共计2^16=65536个。

用户类别:

(1)管理员用户:被称为root,UID为0。

(2)系统用户:为系统运行提供服务的非登陆式用户,UID从1-999这个范围进行分配。

(3)登陆用户:真正使用计算机的普通用户,UID从500-60000进行分配。

组类别:Linux系统中用户组可按三种方式划分:

1、与类似用户的分类方式

(1)管理员组:管理员所在组,GID为0。

(2)系统用户组:系统用户所在组,GID为1-999。

(3)登陆用户组:登陆用户所在组,GID为1000-60000。

2、从用户角度出发分类

(1)用户的基本组:每个用户的主要组。

(2)用户的附加组:每个用户加入的其他组。

3、从用户组的角度出发分类

(1)私有组:组名和用户名相同,且只包含一个用户。

(2)公共组:组名包含多个用户。

认证信息:用户名和密码,通过比对事先存储的信息与登陆时用户提供的信息是否一致来认证用户。

那么遵从Linux中“一切皆文件”的哲学理念,认证信息也保存在文件来中。我们来认识三个文件分别是/etc/passwd、/etc/group和/etc/shadow,这三个文件分别保存了用户的信息、组的信息和密码的信息,当用户登陆时就是通过比对这三个文件中的信息来实现认证,接下来,我们对这三个文件的内容格式作出解释。

(1)/etc/passwd 文件字段说明

name:password:UID:GID:GECOS:directory:shell

① name:用户名

② password:可以是加密的密码,也可以是占位符x:

③ UID:用户ID

④ GID:用户所属的基本组ID

⑤ GECOS:可选,用户的注释信息

⑥ directory:用户的家目录

⑦ shell:用户的默认shell(登陆时)

(2)/etc/shadow 文件字段说明

① name:用户名。

② $加密算法$salt$加密密码:salt称为杂质,加密时添加。

③ 最近一次修改密码的时间:表示从1970年1月1日(unix元年)开始的天数;0表示用户下次登录时应该更改密码;空字段表示这个功能被禁止。

④ 最短使用期限:从更改密码开始,下次可更改密码经过的天数。

⑤ 最长使用期限:从更改密码开始,可合法使用此密码的天数。

⑥ 警告期限:在最长使用期限过期之前,警告密码应更改的天数。

⑦ 非活动期限:在最长使用期限后,此密码还可被使用的一段时间。

⑧ 账户过期期限:从1970年开始,账户可被使用的天数。

⑨ 保留字段

浅析Linux系统下用户与权限管理

(3)/etc/group 文件字段说明

group_name:password:GID:user_list

① group_name:用户组名

② passwd:组密码

③ GID:用户组ID

④ user_list:以该组为其附加组的用户的用户列表;

(二)用户和用户组管理相关命令

命令概述:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,id,su,chown,chgrp

1、groupadd  添加组

使用格式 :groupadd [options] group

-g,--gid GID  指定GID;如不指定则默认是上一个已存在组的GID加1

-r, --system  创建系统组

# group add mygroup

# groupadd -r mygroup

2、groupmod  修改组属性

使用格式 : groupmod [options] GROUP

-g GID: 修改GID

-n new_name:修改组名

#  groupmod -g 1002 mygroup

#  groupmod -n mynewgroup mygroup

3、groupdel  删除组

使用格式:    groupdel [options] group

#  groupdel mynewgroup

4、useradd  创建用户

使用格式:    useradd [options] LOGIN

-u,--uid UID:指定UID;

-g,--gid GROUP:指定基本组ID,此组需要事先存在

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之

间用逗号隔开

-c,--comment COMMENT:指定注释信息

-d,--homeHOME_DIR:  以指定的路径为用户的家目录;通过复制/etc/skel此目录并

重命名来实现:指定的家目录路径事先存在,则不会为用户复制环境配置文件;

-s,--shell SHELL:指定用户的默认shell,而可用的所有shell列表存储在/etc/shells文

件当中;

-r,--system:创建系统用户;

-M  不创建用户主目录

-f    密码过期后的使用天数,0表示禁用,-1表示永不禁用

-D  显示创建用户的默认设定

注意:创建用户时的诸多默认设定在/etc/login.defs文件中

#  useradd myuser

5、usermod  更改用户属性

使用格式:    usermod [options] LOGIN

-u,--uid UID :修改用户ID

-g,--gid GROUP  修改用户所属的基本组,

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的

附加组会被覆盖

-a,--append:与-G一起使用,用于为用户追加新的附加组;

-c,--comment COMMENT:修改注释信息

-d,--home HOME_DIR: 修改用户的家目录,用户原有的文件不会被转移至新位置;

-m,--move-home:只能与-d一起使用,用于将用户的主目录移动到新位置

-l,--login LOGIN:修改用户登录名

-s,--shell SHELL:修改用户的默认shell

-L,--lock:锁定用户密码

-U,--unclock:解锁用户的密码;

#  将用户myuser的家目录更改为/tmp/home/user,并且原来的用户配置不变,且更改用户的默认shell为tcsh

#  usermod -s /bin/tcsh -d /tmp/home/user -m myuser

6、userdel  删除用户

使用格式:    userdel[option] login

-r  删除用户时,一并删除其家目录

注意:当删除一个用户时,其基本组也会被删除。

#  删除用户myuser

#  userdel myuser

7、passwd  密码管理

使用格式:    passwd [-k] [-l][-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i

inactivedays] [-S][--stdin] [username]

(1)passwd:修改用户自己的密码

(2)passwd USERNAME:修改指定用户的密码,但仅root用户有此权限,且不需要知道

原密码;

-l,-u:锁定和解锁用户

-d:清除用户密码串

-e DATE:设定过期期限;

-i DAYS:非活动期限;

-n DAYS: 密码的最短使用期限

-x DAYS: 密码的最长使用期限

-w DAYS:警告期限

--stdin:从标准输入读入密码。

通常在脚本中如此使用:echo "PASSWORD" | passwd--stdin USENAME

#  更改用户user的密码

#  passwd myuser

8、gpasswd: 更改用户组密码

使用格式:    gpasswd [option]  group

-a USERNAME: 向组中添加用户

-d USERNAME: 从组中移除用户

#  更改用户组密码

#  gpasswd mygroup

#  将用户myuser添加进mygroup组中,即让mygroup成为myuser的附加组。

#  gpasswd myuser

9、chage 更改密码过期信息

使用格式:    chage [options] LOGIN

-d:更改上次修改密码的期限

-E:更改账户过期期限

-I:更改密码的非活动期限

-W:更改警告期限

-m:更改密码最短使用期限

-M:更改密码最长使用期限

10、id  显示用户的真实和有效 id 信息

使用格式:    id[OPTION]... [USER]

id:显示自己的ID信息

-u:仅显示有效UID

-g:仅显示有效基本组ID

-G:显示用户所属的所有组的ID

-n:不显示ID而显示名称(配合以上显示ID的选项一起用)

11、su  切换用户

登陆时切换:会重新读取目标用户的配置文件来重新初始化

su- USERNAME

su-l USERNAME

非登陆式切换:不会读取目标用户的配置文件来进行初始化

suUSERNAME

-c 'COMMAND':仅以指定用户的身份运行此处指定的命令

注意:管理员可无密码切换至其他任何用户;非管理员必须要给出目标用户的登陆密码

12、chown 更改文件属主或者属组或者属主和属组

使用格式:      chown [OPTION]... [OWNER][:|.[GROUP]] FILE...

可以使用OWNER:GROUP或者OWNER.GROUP

chown [OPTION]... --reference=RFILE FILE...

选项:

-R,--recursive:递归修改

注意:用户仅能修改属主为自己的那些权限

#  将文件file1的属组和属主更改为mygroup和myuser

#  chown myuser:mygroup file1

13、chgrp 仅更改属组

使用格式:      chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

注意:仅管理员可修改文件的属组 

相关推荐