首页 > 代码库 > Linux用户和组管理

Linux用户和组管理

导言:


  现代的计算机系统基本都支持多任务多用户,我们在使用计算机资源时为了资源的合理规划和利用,同时为了实现更好的管理,需要在计算机里有一个使用资源的凭证,这个凭证就是用户,为了方便管理提供了组概念,组是用户的容器,下面就介绍Linux用户和组的管理。


1.资源分派:


    资源的分派可以分为三个步骤,分别是


   (1)认证(Authertication)


   (2)授权(Authorization):


   (3)审计(Audition)


2.用户分类:


   (1)管理员:


        在Linux里默认是root,root具有绝对的权限,一般在生产中不建议使用,用户权限太大,避免误操作;Linux系统提供了其他机制解决普通用户要想使用管理员账号管理的系统的方式。


   (2)系统用户:


        系统启动和后台进程运行时需要用到的用户,具有相对的权限,一般不需要登录系统。


   (2)普通用户:


        又叫登录式用户,跟计算机交互管理系统操作需要用到的用户,具有相对的权限。


3.UID:


   Linux系统是根据UID来识别户身份的,UID在系统中具有全局唯一性,用数字标识,范围是0-65535,分配如下:


   (1)管理员root:


        系统默认为0,不可更改管理员的UID


   (2)系统用户:


        系统默认分配(1-499:是Centos6及其以前版本),(1-999:是Centos7版本)的范围,可以指定。


   (3)普通用户:


        系统默认分配(500以上:Centos6及其以前版本),(1000以上:Cent7版本)的范围,可以指定。


4.组分类:


    为了便于对用户的管理和授权,需要用到组,组相当于用户的容器。类型区别如下:1)


   (1)基本组:


        又叫用户的主组,在系统中如果创建用户不指定主组,默认创建一个跟用户名同名的主组,也叫用户的私有组。


   (2)附加组:


        用户可以是多个组的成员,系统默认用户只有一个主组,可以有多个附加组。


   (3)系统组:


        为了便于管理系统用户分配的组。


   (4)管理员组:


        默认root,管理员需要用到的组。


5.GID:


   系统识别组是根据GID,也具有系统全局唯一性,也是数字标示,跟用户分配方案一样,管理员root组默认为0.系统默认分配(1-499或1-999),主组和附加组默认分配(大于等于500或1000以上)的范围。可以指定。


6.用户的配置文件:


   (1)/etc/passwd 用户账号信息的配置文件,默认用“:”分割的7个字段,文件的语法格式如下:(1-7)


        1.login name:用户登录名。


        2.passwd:密码占位符,为了用户密码的安全,使用影子文件/etc/shadow文件保存用户密码,“x”密码占位符。


        3.UID:用户的uid。


        4.GID:用户的组的gid。


        5.COMMENT:用户描述信息。


        6.HOME:用户的家目录位置,一般默认在/home/username(跟用户同名的家目录)。


        7.SHELL:用户默认使用的shell类型,默认使用/bin/bash,可以使用cat /etc/shells 查看系统默认支持的shell类型,使用echo "$SHELL"可以查看当前用户的shell类型。


   (2)/etc/shadow 用户名密码信息配置文件,格式跟用户名文件相同,只是相应的字段意义有所改变,文件语法如下:(1-9)


        1.login name:用户名。


        2.encrypted password:

   用户密码,里面用“$xxx$xxx$xxxx”第一个xxx标示使用的加密算法,“$6”标示为sha512,“$1标示为MD5”。第二个xxx标示salt:盐,杂质,防止不同用户使用相同密码能够破解密码。第三个xxx标示为真正的加密后的16进制密码。如果仅仅是是:“!”“!!”表示锁定,“ ”空密码系统不允许用户登录。


        3.date of last password change:


         最后一次的密码修改时间,这里指距离1970-1-1到最近的一次密码修改时间


        4.minimum password age:


        最短密码使用期限,在这段时间内,普通用户不允许更改密码。


        5.maximum password age


         最长密码使用期限。


        6.password warning period


         密码到期警告期限,在最长密码使用期限之前的时间,可以登录。


        7.password inactivity period


         密码非活动时间,指超过密码最长使用期限后允许更改密码的时间。如果在超过密码非活动时间,账号锁定,用户将不能登录。


        8.account expiration date:


         账号过期时间,对用户账号限制的使用时间。


        9.reserved field


         保留字段。


7.组的配置文件:


   (1)/etc/group 组用户信息的配置文件.格式用“:”分割字段,具体语法如下:(1-4)


        1.group name:


         组名。


        2.passwd:


         密码占位符,为了安全起见,也使用影子文件/etc/gshadow保存密码。


        3.GID:


          组的标示gid.


        4.user_list


         用户列表,指加入此组的组成员用户。


   (2)/etc/gshadow 组密码的配置文件,也使用“:”分割字段。(1)


        1.group name:


         组名。


        2.encrypted passwd:


         加密后的16进制密码,格式同用户密码格式一样。


        3.administrators


         组管理员用户,管理员可以更改密码或该组的成员。


        4.member


         组成员。


         useradd [options] username 


       3.常用选项[options]:


         -u:指定用户的uid.


         -g:指定用户的主组。


         -G:指定用户的附加组。


         -c:添加用户的描述信息


         -d:指定用户的家目录,-m是默认指定在/home/下。


         -s:指定用户的登录使用的默认shell.默认为/bin/bash。


         -f:账号的有效时间,过期锁定。


8.用户管理命令:


   (1)添加用户:


       1.useradd


       2.语法格式:


         -p:指定用户名的密码


         -D:默认预设值。


         -r:直接指定创建的用户为系统用户。


 


   (2)添加用户密码:


        1.passwd


        2.语法格式:


         passwd [options] username


         passwd username 交互式修改用户密码,管理员root可以随意修改。


         passwd 直接回车,默认修改当前用自己的密码


        3.常用选项[options]


         -l:锁定用户。


         -u:解锁用户。


         -e:强制用户下次登录时必须修改密码。


         -n:指定密码最短使用期限。


         -x:指定密码最长使用期限。


         -i:非活动密码期限。


         –stdin:从标准输入接受用户密码:格式如下:


           echo "passwd" |passwd –stdin username 


   (3)修改用户属性:


        1.usermod


        2.语法格式:


         usermod [optons] username 


        3.常用选项[optons]:


         -u:更改用户的uid,配合-o不检查uid.


         -g:更改用户的主组。


         -G:更改用户的附加组,配合-a指不覆盖已有的附加组。


         -s:更改用户的shell


         -l:更改新登录名


         -L:锁定用户。


         -U:解锁用户。


         -d:更改家目录,要迁移家目录需要配合-m.


       


       更改用户shell命令


        1.chsh


        2.语法格式:


         chsh [options] username


        3.常用选项[options]


         -s:更改系统默认s预设hell.echo "$SHELL"也可以查看当前用户shll。


         -l:查看系统支持的shell类型,cat /etc/shells也可以查看当前系统支持的shell类型。


       


       更改用户Comment描述信息:


        1.chfn


        2.语法格式


         chfn 直接回车修改当前用户Comment信息。


         chfn username 直接指定用户Comment信息。


        3.查看chfn填写的信息:


         使用finger username 命令语法格式。 


          


       修改用户密码策略:


        1.chage


        2.语法格式:


         chage [options]  username


        3.常用选项[options]


         -d: -d 0 强制用户下次登录重设密码。


         -l:显示用户密码策略。


       


        查看用户账号信息:


        1.id


        2.语法格式:


         id [options] [user]


        3.常见选项:


         -u:查看uid


         -n:查看用户名。


         -g:查看基本组


         -G:查看附加组


        


        查看用户所属的组:


        1.groups


        2.语法格式:


          groups username 


        


   (4)删除用户:


        1.userdel


        2.语法格式:


         userdel [options] username


        3.常用选项[options]:


         -r:删除用户的同时,删除用户的家目录。


   (5)检查语法


       1.使用语法检查格式编辑配置用户文件命令

          vipw


       2.检查用户配置文件语法格式命令:


          pwck


   (6)批量创建用户:


      配置用户格式:


         newuser user-file 


        user-file:这个文件语法格式跟/etc/passwd/一样.


      配置密码格式:


          cat passwd-file |chpasswd 


      passwd-file:文件内的语法格式如下:


         loginname:passwd


     


9.组管理命令:


   (1)创建组


       1.groupadd


       2.语法格式:


         groupadd [options] groupname


       3.常用选项[optons]:


         -r:创建组为系统组。


         -g:指定GID.


   (2)修改组属性:


       1.groupmodd


       2.语法格式:


         groupmod [options] groupname


       3.常用选项[optons]


        -n:更改组名。


        -g:更改GID


   (3)删除组:


       1.groupdel


       2.语法格式:


         groupdel groupname


   (4)添加组密码:


       1.gpasswd


       2.语法格式:


         gpasswd [options] groupname


       3.常用选项[options]


         直接回车交互输入密码


         -a:添加成员用户。


         -d:删除成员用户。


         -A:设置具有组管理权限的用户。


   (5)语法格式检查:


       使用语法检查格式编辑配置组文件命令


          vigr


       检查用户配置文件语法格式命令:


         grpck


    (6)用户名文件和密码文件同步命令

        preconv

        

        注意:如果/etc/shadow 不存在就根据/etc/passwd创建;如果存在就跟/etc/passwd文件中的记录比对;没有就添加,有多余就删除;   


10.常见问题补充:


   (1)Linux的安全上下文是怎样的?


        1.程序要想运行必须放在内存中,放在内存中的程序叫进程。


        2.进程运行的身份是以进程发起者(用户),这也意味着相应的权限也就是发起者的权限。


   (2)组不用登陆系统为什么也要设置密码?


        原因是用户操作系统发起进程,属组的权限应该是自己的属组的权限,这时想要创建文件变更属组,使用newgrp切换当前用户的属组,如果当前用户也是切换后属组的成员可以不用输入密码为了安全起见切换其他组必须需要使用密码,默认空密码不给切换。


   (3)目前系统密码使用的加密算法有什么特点?


       目前Centos7使用的sha512位的加密算法,属于单项加密,特点是提取密码特征码,不可逆。密码安全相对性比较高。


                


本文出自 “夏世祥” 博客,请务必保留此出处http://xiashixiang.blog.51cto.com/9232879/1852906

Linux用户和组管理