linux学习—权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习—权限管理相关的知识,希望对你有一定的参考价值。

用户、组和权限(一)--为了让每个用户具有较安全的管理机制,文件的权限管理是很重要的。Linux通常将文件的访问方式分为三个类别(owner/group/other),并且具有Read/Write/eXecute等的权限。



目录

  •     用户

  •     用户组

  •     安全上下文

  •     组的类别

  •     passwd,shadow,group,gshadow文件

  •     useradd,userdel,groupadd,groupdel命令

  •     passwd,usermod,gpasswd,groupmod命令

  •     groupmems,newgrp,groups命令


一、用户

      Linux是多用户的系统,经常会出现多个用户同时使用主机,考虑到每个人的隐私以及个人爱好,文件拥有者(用户)就相当重要了。


用户类别          UID
管理员root ,0
系统用户1-499(centos6) ,1-999(centos7)

   普通用户

   1—65535

登录用户500+(centos6) , 1000+(centos7)

二、用户组

     用户组多用于团队开发,每个团队的成员需要同时可以修改自己团体内任何人文件,且不能让其他团体的人看到自己文件的内容,这时通过用户组的权限设置可以实现。


管理员组 root 0
系统组
普通组






     现在用家庭的概念做一个形象的比喻:

        假设有一家人,家里有三兄弟,分别是王大毛、王二毛、王三毛,这个家庭属于王大毛门下,所以,王大毛家有三个人(王大毛、王二毛、王     三毛),而且这三个人分别拥有自己的房间,共同拥有一个客厅,王大毛家相当于用户组,三兄弟相当于3个用户;

    有一个人叫做张小猪,他对于王大毛家的人就是其他人。

技术分享图片


三、安全上下文

    进程发起者  命令   对象

    进程所能够访问资源的权限取决于进程的运行者的身份


四、组的类别

     主要组(也叫私有组)    用户创建的时候,组名自动创建//组名同用户名

    附加组(真正常用的)


    思考:多个用户可以属于一个主要组吗?   

     答:可以手动设置,但是最好不要这样设置,安全考虑


五、passwd,shadow,group,gshadow文件

    /etc/passwd

         pwconv    将passwd中的密码映射到/etc/shadow

       pwunconv  取消映射

    /etc/shadow

          用户名

        密码位

        密码上一次的修改时间

        密码的最小存活期

        密码的最大存活期

        密码过期之前提前多少天提醒用户将会过期

        密码过期之后在用户仍不改密码后多少天触发帐户过期

        帐户过期时间

        保留位

     /etc/group

          组名  组密码组ID  以当前组为附加组成员列表(,为分隔符)

          grpconv 将组密码映射到/etc/gshadow

           grpunconv 取消组密码的映射

    /etc/gshadow

          组名  组密码  管理员列表  以当前组为附加组成员列表


六、useradd,userdel,groupadd,groupdel命令

      1、useradd + [选项] + 用户名

          useradd  用户创建   adduser也可以(其实adduser就是useradd的软链接)

              -u+UID     指定UID创建用户

              -o 配合-u  指定已存在的UID创建用户

             例如:useradd -u 600 lisi

                   useradd -u 600 wangwu -o

                   cat /etc/passwd 查看lisi和wangwu的UID相同

                技术分享图片

                           (以:为分隔符,第三列为UID)

              -g+GID或组名   指定已存在的主要组创建用户

              -G+附加组号或者附加组名   指定已存在的附加组创建用户,以,为分隔符可以同时指定多个

              -c+注释信息   附加注释信息创建用户

              -d+目录路径   指定目录路径,创建用户(目录名已存在,基名不存在)

              -s   指定登录shell创建用户

               例如:useradd -s /sbin/nologin wangwu  创建不可交互式登录用户wangwu

                     之后输入su - wangwu ,显示登录失败

              -N   不创建私有组作为主组,即使用users组作主组

              -r   创建系统用户

     2、/etc/default/useradd   创建用户的默认配置文件

        GROUP=100       表示使用useradd -N时默认使用的组为GIP为100的组

        HOME=/home      自动创建家目录时,从哪个目录下创建与用户同名的家目录

        INACTIVE=-1     用户是否设置 密码过期后,多少天帐户过期,为-1时,不会触发帐户过期

        EXPIRE=         是否指定一个帐户过期时间,为空表示帐户默认永不过期

        SHELL=/bin/bash 使用useradd创建用户时,如不使用-s 指定则默认的用户shell为/bin/bash

        SKEL=/etc/skel  家目录的内容数据参考目录,自动创建家目录时,从哪个目录拷贝模板文件

               (利用useradd新增用户后,新增用户家目录下的各项数据都是由/etc/skel 复制过去的)

        CREATE_MAIL_SPOOL=yes  创建用户时是否在/var/spool/mail下为用户与用户同名的邮箱文件。

       手工创建家目录的方法(加深理解)

         mkdir /home/machao

         chmod 700 /home/machao/

         cp -r /etc/skel/.[^.]*  /home/machao/

         chown -R machao.machao /home/machao

     3、userdel -r +用户名   删除用户名连同家目录以及邮箱文件一起删除

     4、groupadd + [选项] + 组名  创建组 (创建的组不分主要组和附加组,因为没有用户)

                -g+GID或者组名  创建指定GID的组

                -r   创建系统组

     5、groupdel+ 组名   删除组


七、passwd,usermod,gpasswd,groupmod命令

     1、passwd + username   指定要修改密码的用户名(仅root运行,普通用户不输入用户名,可直接修改自己的密码)

             -l              锁定用户  实际就是在密码位前加!!

             -u              取消用户锁定 

             -e              强制用户下次登录时更改密码

             -n + mindays:  指定最短使用期限

             -x + maxdays: 最大使用期限

             -w + warndays:提前多少天开始警告

             -i + inactivedays:非活动期限

             --stdin         从标准输入接收用户密码(常用)

     2、usermod + username  用户属性修改

              -u+UID              修改用户ID

          -g+GID或者组名   修改用户主要组

          -G+GID或者组名[,组名]   设定用户的附加组为哪些组,之前的附加组信息被覆盖

          -aG                  增加用户的附加组,不会覆盖之前的附加组

          -s+shell           修改用户的登录shell

          -c+注释信息      修改用户的描述信息

          -d+目录路径      新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

          -l+目标用户名+原始用户名  更改用户名

          -L+用户名         锁定指定用户,在/etc/shadow密码栏增加!

          -U+用户名          解锁指定用户,将/etc/shadow密码栏的!拿掉

          -e+年月日          指明账户过期的日期

          -f              设定非活动期限

    3、gpasswd + [选项] + 组名 (重点难点)

         gpasswd + 组名        设置组密码

         gpasswd -a + 用户名  添加指定用户到指定组名的附加组

         gpasswd -d + 用户名  删除用户

         gpasswd -M + 用户名(多个用户用,分隔)  仅root执行,设置用户列表到指定用户组名的组

               (可以用命令groupmems -l -g +组名   查看指定组下用户列表)

         gpasswd -A + 用户名(多个用户用,分隔) 设置指定组的管理员   仅root执行

                   (管理员只可以修改组密码,单个踢出组成员,单个添加组成员;管理员可能不是组成员,也就不能访问组内的文件,但是管理员可以                  把自己加入该组内,然后访问文件)

    4、groupmod

          -n+目标组名+原始组名   修改组名

          -g+目标GID+原始组名    修改组ID 


八、groupmems,newgrp,groups命令

     1、groupmems  仅限于root

           -g + 组名 -a + 用户名  添加指定用户到指定组名的附加组

           -g + 组名 -d + 用户名  删除指定用户

           -g + 组名 -p              清空所有指定组成员

           -g + 组名 -l              查看指定组有那些成员(仅附加组)

     2、newgrp + 组名(普通用户执行)

         非附加组成员的普通用户在正确输入组密码后临时变更指定组名为主要组,原主要组临时变成附加组

       附加组成员的普通用户无须输入密码就可以临时变更指定组名为主要组,原主要组临时变成附加组

     *******************

     使用newgrp之后实质就是进入了一个子shell,在这个子shell环境下的主要组为指定组,使用exit后,只是退出了子shell,当前用户没有变(注意理解)

技术分享图片技术分享图片

       进入guanyu用户下,查看用户的主要组和附加组,使用了newgrp命令之后,主要组和附加组发生变化;exit退出之后,用户并没有变

     *********************

    3、groups + 用户名    查看指定用户属于那些组(包含主要组和附加组)


小总结:添加删除组成员可以用usermod -G,gpasswd -d,groupmems -g + 组 -d +用户




以上是关于linux学习—权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记之权限的管理

Linux学习笔记——Linux用户管理和权限管理

?Linux命令学习权限管理命令

linux学习—权限管理

#Linux学习# 权限管理命令

linux学习笔记二-----文件权限管理