用户,组和权限管理

Posted

tags:

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

用户,组和权限管理

概述:在Linux中由于可以实现多用户和多任务的管理,所以在Linux中用户和组与文件的权限关系显得格外重要。如果出现混乱,那么在用户使用时会给系统造成很多不稳定性的因素。这也是linux系统相对于其它操作系统更安全的原因之一。

linux系统中用户分为:

 系统用户:
    centos6上的UID(1-499)
    centos7上的UID(1-999)
    注:系统用户无法登陆到系统之中
登录用户
    centos6上的UID(500+)
    centos7上的UID(1000+)待
    (通过交互式方式进行登录)
    注:只有管理员有创建用户的权限,普通用户无法创建用户

配置文件:
    /etc/passwd中存放着用户的账号信息,配置文件中用:号隔开了七个字段,其中的每一
    个
    字段都代表不同的含义
    如:root:x:0:0:root:/root:/bin/bash
        1:root:标识用户名
        2:x:用户密码的占位符
        3:0:用户的UID
        4:0:用户的GID
        5:root:用户的注释信息
        6:/root:用户的家目录所在的位置
        7:/bin/bash:用户所使用的shell
    /etc/shadow中存放着用户的账号密码的信息,配置文件也用:号分割成了好几段,
    每个字段同样有不同的含义
    如:root:$6$WPjpqSwxMbi2LSA//5M2Q0:17900:0:99999:7:::
        1:存放着用户的用户名
        2:存放着用户用来加密的密码,默认是用sum512算法进行加密
        3:最近更动密码的日期,默认是从1970年到现在的天数
        4:密码最短使用时间,代表在这个时间之内,不允许更改用户密码。默认是0,代指随时
        可以更改用户密码
        5:密码需要重新变更的天数,即密码的最长使用时间
        6:密码到期前的警告时间
        7:密码已经过期了之后,用户可以登录的时间,如果这个时候还不改密码,那么过了时
        间之后,该用户就无法登陆系统
        8:记录用户密码的实效时间
    注:用户密码的加密使用的是单向加密的算法,单向机密的特点是无论多长的密码串通过
    加密之后都会生成固定长度的密文,而且即使相同的密码生成的密文也会有细微的差别。
    为了提高机密性,单向加密的密码,即使是简单的改变其中的一个字符,加密之后的密
    文也会千差万别,这个称之为雪崩效应。单向加密的算法分别包括:
        1:md5
        2:sha128
        3:sha224
        4:sha256
        5:sha384
        6:sha512

相关命令:
    1,useradd(添加用户)
    2,userdel(删除用户)
    3,usermod(改用户的相关属性)
    4,su(切换用户)
        注:用su切换用户时中间要加上-号,将切换的用户初始化。当管理员切换到普通用户时
        不需要密码,普通用户之间切换时需要用户密码
    5,getent(看用户的/etc/passwd的相关属性)
    6,id(查看用户的用户组)

linux系统中用户组分为:

系统组:
    centos6上的GID(1-499)
    centos7上的GID(1-999)
普通组:
    centos6上的GID(500+)
    centos7上的GID(1000+)

作用:每个用户必须有一个主组,在创建用户时如果不指定,那么系统会默认创建一个和
用户名相同的组,做为这个用户的主组
在创建用户时还可以指定用户的附加组,附加组可以是一个或者多个。

配置文件:
    /etc/group中存放着用户组的相关信息,其中每个用户组也分为若干段,每段代表着不同
    的含义
    如:user9:x:511:user10
        1:组的名称
        2:组密码的占位符
        3:组的GID号
        4:以该组为附加组的用户
    /etc/gshadow中存放着用户的组密码,格式和用户密码的属性差不多
    如:gentoo:$6$bAR22/OrVWl/om$t2JQeQkuOSncUr2uqrLu3IrU***3loryJI9626d8C4ijz.Z.ZkQjZg0::

相关命令:
    1,groupadd(添加用户的用户组)
    2,groupdel(删除用户系统中的用户组)
    3,groupmod(修改组的相关属性)
    4,gpasswd(给组添加密码)
    5,groupmems(更改和查看组成员)

linux中文件的基本权限:

在linux中可以通过ll命令看到文件以及目录的权限信息,其中第一个字段就包含着这个文
件或目录的权限,第二个字段是此文件的属主以及属组
权限的分类:
    r:读权限,对应的二进制是4,标识用户可以读取文件中的内容
    w:写权限,对应的二进制是2,标识用户可以在文件中增添查改内容
    x:执行权限,对应的二进制是1,标识该文件可以执行。如果是目录,则标识该目录可
    以进入其中。
注:这三个权限结合成一组,每三组标识着文件以及目录的基本权限,其中第一组代表着
文件的属主,第二组代表文件的属组,第三组其他人的权限

文件或目录的属主和属组:
    在linux系统中每个文件或目录都会有属主和属组,这是基本权限的一个重要组成部分

目录和文件权限的异同点:
    1,执行权限:
        文件:可执行此文件
        目录:可进入此目录之中,但是如果没有读权限,则看不到目录中的文件
    2,写权限:
        文件:可以在文件中增删查改,如果只有写权限,那么则无法看到文件中的内容
        目录:可以删除该目录中的文件,如果只有写权限,那么需要事先知道目录中有
        什么内容,才可以进行增删查改等进一步操作
    3,读权限
        文件:可以阅读此文件的内容
        目录:可以看到目录中有多少文件
    4,删除目录内的文件
        即使对目录内的文件没有任何权限,只要对目录有写权限,就可以删除目录内的文件

如:-rw-r--r--. 1 root root 986 1月  22 14:59 /etc/fstab
    1;文件的权限是644
    2:文件的属主是root,可以读写此文件
    3:文件的属组是root,可以读此文件
    4:其他人权限,仅可读取此文件

相关命令:
    1,chmod(该文件的权限)
        (1)赋权表示法
        (2)八进制表示法
        (3)引用权限表示法
    2,chown(改文件的属主和属组)
    3,chgrp(该文件的属组,由于上一条命令的存在,这条命令已经赶不上时代的存在)

默认权限:在系统中有普通用户和管理员都有默认的权限掩码(遮照码),在创建文件或目录是会默认与系统中的权限掩码相减

管理员的umask:022
普通用户的umask:002

文件:默认的是666,如果减的权限中有执行,那么会在减的结果中加1
目录:默认的是777

配置文件:
    在/etc/profile中定义的有umask的配置文件
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002
    else
        umask 022
    fi

Linux文件系统上的特殊权限:

作用:在使用linux中基础权限有时会不满足系统中的使用,要加入一些特殊权限进行补足,即SUID, SGID, Sticky

SUID/SGID:该权限的权限标识位是s,当用户在执行此文件时,将使自己的身份临时切
换成文件的属主或属组。前提当给用户赋予SUID/SGID权限时,该文件的属主和属组必
须要有执行权限,否则权限标识位会显示成S

赋权方法:
    1,chmod u+s file , chmod 4700 file
    2,chmod g+s file , chmod 2700 file

Sticky:该权限的权限标识位是t,具有写权限的目录通常用户可以删除该目录中的任何
文件,在目录中加入Sticky权限,可使对该目录的中的内容删改权限仅有root可使用

赋权方法:
    1,chmod o+t directory , chmod o-t directory

linux中文件的特殊属性即不可改变位权限:

作用:
    目录:
        a:只允许在目录中建立和修改文件,但是不允许删除
        i:只能修改目录下文件的数据,却不能执行删除和新建文件
    文件:
        a:可对文件进行添加,不可删除
        i:不可对文件进行任何操作

赋权方法:
    chatter +i file/directory
    chatter +a file/directory
查看方法:
    lsatter file/directory

ACL权限:

作用:可以对目录或文件进行灵活的权限管理,让除了文件的属主,属组和其它人,可以
对更多的用户设置权限。

ACL权限的生效顺序:所有者,自定义用户,自定义组,其他人 

查看磁盘的ACL权限:
    tune2fs -l /dev/sda1
设置磁盘的ACL权限
    tune2fs -o acl /dev/sda1
    mount -o remount,acl /dev/sda1
注:在centos7中,无论是xfs还是ext4的系统都会默认加入ACL权限,之前的版本需要
手动添加ACL权限

赋权方法:
    1,给单个文件和目录设置:setfacl -m u:admin:rwx file/directory
    2,给目录进行递归设置:setfacl -Rm u:admin:rwx file/directory
    3,给目录设置默认的ACL权限:setfacl -m d:u:rwx file/directory
    4,删除ACL权限的方法 setfacl -x admin file/directory
注:
    1,给文件重新赋予ACL权限的,要用选项--set
    2,ACL中的mask是限制这个文件和目录能设置的最高的ACL权限,在设置的过程中,如果
    出现超过mask的权限,系统会将mask权限和设置的权限相与,得到的最终结果才是这个
    用户对此目录或文件的最终权限
查看方法:getfacl file/dirctory

备份和恢复ACL权限:文件中cp和mv命令都默认支持保留ACL权限,但是tar命令在打包
的同时,并不会保留文件中的ACL权限
    1,getfacl -R /tmp/dir1 > acl.txt(把ACL权限保存到文件中)
    2,setfacl -R -b /tmp/dir1(递归删除目录中的ACL权限)
    3,setfacl -R  --set-file=acl.txt /tmp/dir1 (重新给递归给目录赋予ACL权限) 
    4,setfacl --restore acl.txt(给文件恢复备份的acl权限) 

以上是关于用户,组和权限管理的主要内容,如果未能解决你的问题,请参考以下文章

用户,组和权限

Gitlab禁止用户创建群组和项目

Gitlab禁止用户创建群组和项目

Gitlab禁止用户创建群组和项目

django 自定义用户模型组和权限

39-Ubuntu-用户管理-04-usermod设置主组和附加组