Linux学习文档(5):用户及组管理、权限管理

用户和组管理

资源分派:

Authentication:认证
Authorization:授权
Accouting:审计

Linux用户:Username/UID

管理员:root,UID=0
普通用户:1-65535
    系统用户:1-499,1-999(Centos7)(UID)
        对守护进程获取资源进行权限分配
    登录用户:500+(500以后包含500),1000+(Centos7从1000开始记录)UID
            交互式登录到系统

Linux用户组:Groupname/GID

管理员组:root,GID=0
普通组:
    系统组:GID=1-499,1-999(Centos7)
    普通组:500+以后的GID

Linux安全上下文:

运行中的程序:进程(process)
    以进程发起者的身份,比如说我键入"ls",而这个二进制可执行程序就是由"root"用户运行的

一个进程能访问哪些资源,取决于这个进程的发起者的身份,因为基于安全考虑,有些文件普通用户默认是没有权限访问的,

而Linux则根据这个规则来查看进程发起者是谁,从而判断此用户是否有操作的权限
        root:cat /etc/shadow     #"root"用户发起"cat"进程来查看"/etc/shadow"文件,有权限
        test:cat /etc/shadow     #"test"用户发起"cat"进程来查看"/etc/shadow"文件,没有权限

Linux组的类别:

用户的基本组(主组)
    组名同用户名且仅包含一个用户:称之为用户的私有组
用户的附加组(额外组)

Linux中用户和组相关的配置文件:

/etc/passwd:用户及其属性信息(名称、UID、GID等等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性

1 /etc/passwd解释:
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    用户名:密码:UID:GID:描述:属组:家目录:用户默认shell
    x:密码占位符(应该存放密码,但考虑安全性,就存放在别的文件中了,但这个位置还是存在的,所以以x表示)

2 /etc/group解释:
    daemon:x:2:
    组名:密码:GID:以当前组为附加组的用户名称(如果有多个以","为分隔符)

3 /etc/shadow解释:
    root:$6$5XuFfCHdEATVYfLu$JTMX.OJzoOcHqtOQxzPDKrB1yJfDZkmoH6s7fL.::0:99999:7:::
    用户名:加密后的密码:最近一次更改密码的时间:密码最短使用期限:密码过期时间:密码警告时间段(提前几天提醒用户该修改
    密码了):密码禁用期(在这个期间,只要登录密码就必须修改密码,如果没改账号就锁定了):账号过期日期:保留字段

 密码解释:
     $6$5XuFfCHdEATVYfLu$JTMX.OJzoOcHqtOQxzPDKrB1yJfDZkmoH6s7fL.
     $6$:这是表明加密算法采用的是sha512
     $5XuFfCHdEATVYfLu$:生成的杂质,为防止密码相同的时候,那加密生成的字符也是相同的,所以前面加上杂质有一定安全性
     5XuFfCHdEATVYfLu$JTMX.OJzoOcHqtOQxzPDKrB1yJfDZkmoH6s7fL.:这些才是真正的密码(我还删了一些,实际不止这么短)        

 密码的复杂性策略:
     1、使用数字、大写字母、小写字母及特殊字符中至少3种;
     2、密码长度足够长
     3、不要使用易猜测密码,使用随机密码
     4、定期更换;不要使用最近曾经使用过的密码

 加密机制:
            加密:明文-->密文
            解密:密文-->明文

            加密方式:sha512sum "要加密的文件的绝对路径"(Centos6与7都是此方法加密)
            单向加密:提取数据指纹(只要数据相同,那么两次是生成的密码都是一样的)
                md5:消息摘要,128bits
                sha1sum:安全的hash算法,(1)是版本号,160bits
                sha224sum: 224bits
                sha384sum: 384bits
                sha512sum: 512bits

用户相关的管理命令:
    用户创建:useradd
        Note:每一个用户家目录中的文件都是从/etc/skel下复制过来的,如果指定的家目录已经存在,则会出现问题
        useradd [OPTION] LOGIN
            例:useradd user1  #创建user1用户,在/etc/passwd最后一行会看到新创建的用户,同时也会创建组
    常用选项:
        -u UID:[UID_MIN-UID_MAX],范围定义在/etc/login.defs文件中,没有指定默认从最后一个创建的用户当中值+1
            例:useradd -u 2000 user2 #创建用户"user2"并且指定此用户的UID为2000

        -g "组名":指明用户所属的基本组,可为组名也可位GID
            例:useradd -g mygrp -u 2001 user3 #创建"user3"用户并且指定UID为2001,属组为mygrp(前提组要存在,
                                              下面有创建组命令)

        -c "MESSAGE":创建用户时描述
            例:useradd -c "hello,It's test" user4 #创建"user4"用户并且填写描述信息

        -d "目录绝对路径":指定用户家目录
            例:useradd -d /home/test user5 #创建"user5"用户并且指定家目录为/home/test

        -s "shell类型":指定用户默认shell
            例:useradd -s /sbin/nologin user6 #创建"user6"并且指定shell为/sbin/nologin不可登陆系统
            (/etc/shells存放了当前系统中的各种shell类型)、

        -G "GROUP1,GROUP2...":指定用户的附加组,前提是组要提前存在
            例:useradd -G mygrp user7 #创建"user7"并且指定该用户的附加组为"mygrp",基本组为user7,创建时候自动指定

        -D:修改useradd的默认值
            例:useradd -D -s /bin/tcsh #修改useradd直接创建用户时候的默认shell为/bin/tcsh
            (实际修改的就是/etc/default/useradd文件,直接拿编辑器打开修改也可以)

        -r:创建系统用户(Centos6其UID号小于500,Centos7其UID号小于1000)

练习:创建用户gentoo,附加组为distro和linux,默认shell为/bin/csh,注释信息为"Gentoo Distribution"?
提示:创建组的命令:groupadd "组名"
    解: (1) groupadd distro
            groupadd linux
        (2) useradd -c "Gentoo Distribution" -s /bin/csh -G distro,linux gentoo

组创建:groupadd
    groupadd [OPTION]...group_name
        常用选项:
            -g GID:指明GID号(范围在[GID_MIN-GID_MAX]之间)
                例:groupadd -g 3000 testgroup #创建组"testgroup'并且GID号为3000(/etc/group中有创建完的组信息)

            -r:创建系统组(Centos6其GID号<500,Centos7其GID号<1000)
                例:groupadd -r -g 121 memcached #创建系统组"memcached"并且指定GID为121

查看用户相关ID信息:id
    id [OPTION]...USER
        常用选项:
            -u:仅显示用户uid号
                例: id -u user7     #仅显示"user7"用户的UID号
            -g:仅显示基本组GID号
                例: id -g user7     #仅显示"user7"用户基本组的GID号
            -G:显示所有组GID号
                例: id -G user7     #显示"user7"用户所属的所有组GID号,无论是附加组还是基本组
            -n:显示用户的名字
                例: id -G -n user7  #显示"user7"用户所属所有组的组名称

切换用户或以其他用户身份执行命令:su
    su [options]... [-] [user [args...]]
        切换用户方式:
            su USERNAME:非登录式切换,即不会读取目标用户的配置文件
            su - USERNAME:登录式切换,会读取目标用户的配置文件,完全切换
                例:su - user7       #切换至"user7"用户,并且切换后默认会在"user7"的家目录,如果不加"-"则在哪个
                                    位置执行的"su user7"切换后"user7"就会在哪个路径
        Note:root su至其他用户无须密码,非root用户su的话是需要密码的

    切换身份执行命令:
        su [-] UserName -c "command"  #以其他用户的身份执行命令,结果会输出到当前环境
            例:su - user7 -c "echo $PATH"  #以user7的身份打印PATH环境变量到当前环境中
    常用选项
        -l:su - l Username"相当于"su - Username

用户属性修改:usermod
    usermod [OPTION] login
        -u UID:修改为新的UID
        -g GID或组名:修改新的基本组
        -G GID或组名:修改新的附加组,原来的附加组将会被覆盖,若只想追加,要使用"-a"选项
        例:usermod -a -G distro,linux user7 #在不覆盖"user7"用户的附加组前提下添加"distro,linux"附加组
        [root@bogon default]# id user7 #以下为执行命令的结果
        uid=1002(user7) gid=1004(user7) 组=1004(user7),1000(distro),1001(linux),1005(mygrp)
        -s shell:修改新的shell
        -d HOME:修改为新的家目录,原家目录中的文件不会同时移动至新的家目录,如果要移动需要同时使用"-m"选项
        例:usermod -d /home/newuser6 -m user6 #如果不用"-m"选项,指定的目录是不会被创建的
        -c "message":新的描述信息
        -l login_name:修改新的名称
        -L:锁定用户
        -U:解锁用户
        -e YYYY-MM-DD:指明用户账号过期时间
        -f:密码过期后允许多少天内可以登录修改密码

给用户添加密码:passwd
    passwd [OPTIONS] UserName:修改指定用户的密码,仅root用户有权限
    passwd:修改自己的密码,当前用户如果没有密码是不可以改的
        常用选项:
            -l:锁定指定用户
            -u:解锁指定用户
            -n:指定密码最短使用期限
            -x:指定密码最长使用期限
            -w:距密码过期还有几天时开始警告用户修改密码
            -i:密码过期后允许多少天内可以登录修改密码
            -d:删除密码
            --stdin:从标准输入接收用户密码
                echo "PASSWORD" | passwd --stdin USERNAME
            Note:/dev/null,无底洞
                 /dev/zero,要多少有多少

删除用户:userdel
    userdel [OPTION]... login
        常用选项:
            -r:删除用户家目录

组属性修改:groupmod
    groupmod [OPTION]... group
        -g GID:修改GID
        -n group_name:修改组的新名称

组删除:groupdel
    groupdel GROUP

组密码添加:gpasswd
    gpasswd [OPTION] GROUP
        常用选项:
            -a user:将user添加至指定组中
                例:gpasswd -a user1 mygrp #将mygrp作为user1的附加组添加
            -d user:将user从指定组中删除
                例:gpasswd -d user1 mygrp #将user1从mygrp中删除
            -A user1,user2...:设定有管理权限的用户
                例:gpasswd -A tom,jerry root #设定tom和jerry拥有管理权限

    newgrp命令:临时切换基本组
        如果当前用户不属于此组,则需要组密码

权限管理:
    (1) 文件的权限主要针对以下三类对象进行定义:
            owner:属主,u
            group:属组,g
            other:其他,o

    (2) 每个文件针对每类访问者都定义了三种权限:
            r:读取
            w:写入
            x:执行

    (3) 对文件来说:
            r:可使用文件查看类工具获取其内容
            w:可编辑其内容
            x:可以把此文件提醒内核启动为一个进程
    (4) 对目录来说:
            r:可以使用"ls"查看此目录中文件列表
            w:可在此目录中创建文件,也可删除此目录中文件
            x:可以使用"ls -l"查看此目录中的文件列表,可以"cd"进入此目录
    (5) --- 000 0              (权限变化最多只有左边的8种)
        --x 001 1
        -w- 010 2
        -wx 011 3
        r-- 100 4
        r-x 101 5
        rw- 110 6
        rwx 111 7
            例如:
                640:rw-r-----(一共对应9个字符,分成三个三个的去看,640每个数字分别对应了三个字符)
                    6:rw-
                    4:r--
                    0:---
                rwxr-xr-x:755
                    rwx:7
                    r-x:5
                    r-x:5

修改文件权限:
 (1) chmod [OPTION]... OCTAL_MODE FILE...
        以数字方式修改:
            例:
                chmod 640(rw-r-----) a.txt (括号里面的不用写,我是解释一下640对应的权限)
        -R:递归修改权限
            例:
                chmod -R 750(rwxr-x---) app/ (给app文件夹赋予750权限,同时文件夹下的文件也设置为750)
(2) chmod [OPTION]... MODE[,MODE]... FILE...
        MODE:
            修改一类用户的所有权限,不给任何权限"="后面留空即可
(修改属主的权限)                u=
    例:chmod u=rw a.txt       #针对"a.txt"文件,所有者的权限改为rw
(修改属组的权限)                g=
    例:chmod g=rw a.txt       #针对"a.txt"文件,所有者的权限改为rw
(修改其他人的权限)              o=
    例:chmod o=rw a.txt       #针对"a.txt"文件,其他人权限改为rw
(修改所有权限)                  a=
    例:chmod a=rw             #针对"a.txt"文件,属主,属组,其他人的权限都为rw
(当属主与属组权限相同时)         ug=
    例:chmod ug=rw a.txt      #针对"a.txt"文件,更改属主,属组的权限都为rw
(属组与属主权限不同时,分别指定)   u=,g=
    例:chmod u=rw,g=rwx  /app #针对"app"文件夹,分别指定属主为rw权限,属组为rwx权限

            修改一类用户某位或某些权限
            (增加属主的权限)  u+
                    例:chmod u+w b.txt #针对"b.txt"文件,对其属主添加"w"权限
            (去掉属主的权限)  u-
                    例:chmod u-w b.txt #针对"b.txt"文件,对其属主去掉"w"权限
            (增加属组的权限)   g+
                    例:chmod g+w b.txt #针对"b.txt"文件,对其属组增加"w"权限
            (去掉属组的权限)   g-
                    例:chmod g-w b.txt #针对"b.txt"文件,对其属组去掉"w"权限
            (增加其他人的权限) o+
                    例:chmod o+w b.txt #针对"b.txt"文件,对其他人增加"w"权限
            (去掉其他人的权限) o-
                    例:chmod o-w b.txt #针对"b.txt"文件,对其他人去掉"w"权限
            Note:如果要对所有人赋予权限或者取消权限,则按照下列例子中方法
                    例:chmod +w b.txt #针对"b.txt"文件,对所有人都添加"w"权限
                    例:chmod -w b.txt #针对"b.txt"文件,对所有人去掉"w"权限

(3)  chmod [OPTION].. --reference=RFILE FILE...
        参考RFILE文件的权限,将FILE的权限修改成语RFILE相同的权限
            例:chmod --reference=a.txt b.txt #将b.txt的文件权限改为与a.txt文件相同的权限

修改文件的属主和属组:
    仅root可用:

    修改文件的属主:chown
        chown [OPTION]... [OWNER][:[GROUP]] FILE...
            用法:
                OWNER
                    例:chown tom a.txt     #针对"a.txt"文件,修改其属主为"tom"
                :GROUP
                    例:chown :jerry a.txt  #针对"a.txt"文件,修改其属组为"jerry"
                OWNER:GROUP(":"可换为".")
                    例:chown tom:tom a.txt #针对"a.txt"文件,修改其属主与属组都为"tom"
            -R:递归,如果修改的目标是目录的话,加上此选项,目录下面的所有文件或目录都与第一个目录的权限相同
                    例:chown -R tom:tom /app #针对"/app"文件夹,"app"文件夹与其下面文件的属主属组都相同

文件或目录创建时的遮罩码:umask
    FILE:666-umask
        Note:如果某类的用户的权限减的得到的结果中存在x权限,则将其权限+1
    DIR:777-umask
    像直接在Linux系统中创建一个文件的话,它的默认权限是644,因为umask值为022,用666-022="创建文件的默认权限"
    目录的话则是777-022="创建的目录的默认权限"
        [root@bogon ~]# umask                #查看
        uamsk #:设定umask值,当前shell生效
            例:umask 003     #设定umask为033,此时再创建出来的文件默认还是664权限,因为666-003=663,拥有执行权限就
                            会+1,所以还是664

猜你喜欢

转载自blog.csdn.net/kaikai0720/article/details/81066850