zoukankan      html  css  js  c++  java
  • linux学习17 运维核心技能-Linux系统下用户权限管理

    一、权限管理

      1、ls -l

        rwxrwxrwx

        左三位:定义user(owner)的权限

        中三位:定义group的权限

        右三位:定义other的权限

      1、进程安全上下文

        a、进程对文件的访问权限应用:

          进程的属主与文件的属主是否相同,如果相同,则应用属主权限。

          否则则检查进程的属主是否属于文件的属组,如果是,则应用属组权限;

          否则就只能应用其它other的权限

      2、权限:

        r:read,读

        w:write,写

        x:excute,执行

        a、文件:

          r:可获取文件的数据

          w:可修改文件的数据

          x:可将此文件运行为进程

        b、目录:

          r:可使用ls命令获取其下的所有文件列表:但是不能获取详细信息,比如ls -l

          w:可修改此目录下的文件列表:即创建或删除文件

          x:可cd至此目录中,其可使用ls -l来获取所有文件的详细属性信息

        c、mode:rwxrwxrwx

        d、ownership:user,group

      3、权限组合机制

        ---::000  0

        --x:001  1

        -w-:010  2

        -wx:011  3

        r-- :100  4

        r-x:101  5

        rw-:110  6

        rwx:111  7

      4、练习

        rw-rw-r--:664

        rwxrwxr-x:775

        rwxr-x---:750

        rw-------:600

        rwxr-xr-x:755

    二、权限管理命令

      1、chmod命令

        a、我们一共有三类用户:

          u:属主

          g:属组

          o:其它

          a:所有

        b、chmod [OPTION]... MODE[,MODE]... FILE...

          MODE表示法:

            赋权表示法:可以分别表示也可以同时表示

              u=

              g=

              o=

              a=

    [root@node1 ~]# ll fstab 
    -rw-r--r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod g=rw fstab 
    [root@node1 ~]# ll fstab 
    -rw-rw-r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod ug=r fstab 
    [root@node1 ~]# ll
    total 8
    -r--r--r--  1 root root  465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod u=rwx,g=rw,o= fstab 
    [root@node1 ~]# ll fstab 
    -rwxrw---- 1 root root 465 Dec 20 16:15 fstab

            授权表示法:直接操作一类用户的一个权限位r,w,x:

              u+,u-

              g+,g-

              a+,a-

    [root@node1 ~]# ll fstab 
    -rwxrw---- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod u-x fstab 
    [root@node1 ~]# ll fstab 
    -rw-rw---- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod o+r fstab 
    [root@node1 ~]# ll fstab 
    -rw-rw-r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod ug+x fstab 
    [root@node1 ~]# ll fstab 
    -rwxrwxr-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod g-wx fstab 
    [root@node1 ~]# ll fstab 
    -rwxr--r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod +x fstab 
    [root@node1 ~]# ll fstab 
    -rwxr-xr-x 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod -x fstab 
    [root@node1 ~]# ll fstab 
    -rw-r--r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod +w fstab #因为全局写是非常危险的因此+w时只会给u加上写权限
    [root@node1 ~]# ll fstab 
    -rw-r--r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod u+x,g+w fstab 
    [root@node1 ~]# ll fstab 
    -rwxrw-r-- 1 root root 465 Dec 20 16:15 fstab

        c、chmod [OPTION]... OCTAL-MODE FILE...。八进制表示法。

    [root@node1 ~]# ll fstab 
    -rwxrw-r-- 1 root root 465 Dec 20 16:15 fstab
    [root@node1 ~]# chmod 660 fstab 
    [root@node1 ~]# ll fstab 
    -rw-rw---- 1 root root 465 Dec 20 16:15 fstab

        d、chmod [OPTION]... --reference=RFILE FILE...。引用其它文件权限。

    [root@node1 ~]# ll /var/log/messages
    -rw------- 1 root root 438751 Dec 20 16:30 /var/log/messages
    [root@node1 ~]# chmod --reference=/var/log/messages fstab 
    [root@node1 ~]# ll fstab 
    -rw------- 1 root root 465 Dec 20 16:15 fstab

        e、参数

          -R,--recursive:递归修改。一般用于赋权表示法。

      2、从属关系管理命令:chown

        a、chown [OPTION]... [OWNER][:[GROUP]] FILE...

          -R:递归修改

    [root@node1 ~]# ls -la /tmp/skel/
    total 16
    drwxr-xr-x   2 root root   62 Dec 20 16:47 .
    drwxrwxrwt. 12 root root 4096 Dec 20 16:48 ..
    -rw-r--r--   1 root root   18 Dec 20 16:47 .bash_logout
    -rw-r--r--   1 root root  193 Dec 20 16:47 .bash_profile
    -rw-r--r--   1 root root  231 Dec 20 16:47 .bashrc
    [root@node1 ~]# ls -ld /tmp/skel/
    drwxr-xr-x 2 root root 62 Dec 20 16:47 /tmp/skel/
    [root@node1 ~]# chown -R nova /tmp/skel/
    [root@node1 ~]# ls -ld /tmp/skel/
    drwxr-xr-x 2 nova root 62 Dec 20 16:47 /tmp/skel/
    [root@node1 ~]# ls -la /tmp/skel/
    total 16
    drwxr-xr-x   2 nova root   62 Dec 20 16:47 .
    drwxrwxrwt. 12 root root 4096 Dec 20 16:49 ..
    -rw-r--r--   1 nova root   18 Dec 20 16:47 .bash_logout
    -rw-r--r--   1 nova root  193 Dec 20 16:47 .bash_profile
    -rw-r--r--   1 nova root  231 Dec 20 16:47 .bashrc
    [root@node1 ~]# chown -R archlinux:mygrp /tmp/skel/
    [root@node1 ~]# ls -ld /tmp/skel/
    drwxr-xr-x 2 archlinux mygrp 62 Dec 20 16:47 /tmp/skel/
    [root@node1 ~]# ls -la /tmp/skel/
    total 16
    drwxr-xr-x   2 archlinux mygrp   62 Dec 20 16:47 .
    drwxrwxrwt. 12 root      root  4096 Dec 20 16:56 ..
    -rw-r--r--   1 archlinux mygrp   18 Dec 20 16:47 .bash_logout
    -rw-r--r--   1 archlinux mygrp  193 Dec 20 16:47 .bash_profile
    -rw-r--r--   1 archlinux mygrp  231 Dec 20 16:47 .bashrc

          我们还可以使用点号来表示

    [root@node1 ~]# chown -R root. /tmp/skel/
    [root@node1 ~]# ls -ld /tmp/skel/
    drwxr-xr-x 2 root root 62 Dec 20 16:47 /tmp/skel/
    [root@node1 ~]# ls -la /tmp/skel/
    total 16
    drwxr-xr-x   2 root root   62 Dec 20 16:47 .
    drwxrwxrwt. 12 root root 4096 Dec 20 16:58 ..
    -rw-r--r--   1 root root   18 Dec 20 16:47 .bash_logout
    -rw-r--r--   1 root root  193 Dec 20 16:47 .bash_profile
    -rw-r--r--   1 root root  231 Dec 20 16:47 .bashrc

        b、chown [OPTION]... --reference=RFILE FILE...。参考其它文件或路径的属主属组修改

    [root@node1 ~]# ll /tmp/
    total 0
    drwx------ 2 moosefs moosefs 62 Dec 19 20:43 moosefs
    drwxr-xr-x 2 root    root     6 Dec 19 20:46 mytest
    drwxr-xr-x 2 root    root    62 Dec 20 16:47 skel
    drwx------ 3 root    root    17 Dec 19 18:39 systemd-private-310789de41c149e295ca734de6eb34ff-vgauthd.service-2RCX6b
    drwx------ 3 root    root    17 Dec 19 18:39 systemd-private-310789de41c149e295ca734de6eb34ff-vmtoolsd.service-fjAVWv
    [root@node1 ~]# chown -R --reference=/tmp/moosefs/ /tmp/skel/
    [root@node1 ~]# ls -ld /tmp/skel/
    drwxr-xr-x 2 moosefs moosefs 62 Dec 20 16:47 /tmp/skel/
    [root@node1 ~]# ls -la /tmp/skel/
    total 16
    drwxr-xr-x   2 moosefs moosefs   62 Dec 20 16:47 .
    drwxrwxrwt. 12 root    root    4096 Dec 20 17:00 ..
    -rw-r--r--   1 moosefs moosefs   18 Dec 20 16:47 .bash_logout
    -rw-r--r--   1 moosefs moosefs  193 Dec 20 16:47 .bash_profile
    -rw-r--r--   1 moosefs moosefs  231 Dec 20 16:47 .bashrc

      3、chgrp命令。和chown一样的效果

    三、高阶功能

      1、思考:用户对目录有写权限,但对目录下文件没有写权限时,能否修改此文件内容?能否删除此文件?

        答:不能修改此文件内容,但是可以删除此文件,因为对目录有写权限。

    [root@node1 ~]# cp /etc/fstab /tmp/mytest/
    [root@node1 ~]# ls
    anaconda-ks.cfg  fstab
    [root@node1 ~]# ls -lda /tmp/mytest/
    drwxr-xr-x 2 root root 19 Dec 20 17:20 /tmp/mytest/
    [root@node1 ~]# chown :mygrp /tmp/mytest/
    [root@node1 ~]# ls -ld /tmp/mytest/
    drwxr-xr-x 2 root mygrp 19 Dec 20 17:20 /tmp/mytest/
    [root@node1 ~]# chmod g+w /tmp/mytest/
    [root@node1 ~]# ls -ld /tmp/mytest/
    drwxrwxr-x 2 root mygrp 19 Dec 20 17:20 /tmp/mytest/
    [root@node1 ~]# id archlinux
    uid=5005(archlinux) gid=5006(archlinux) groups=5006(archlinux),3000(mygrp)
    [root@node1 ~]# su - archlinux 
    Last login: Thu Dec 19 22:16:28 CST 2019 on pts/1
    [archlinux@node1 ~]$ cd /tmp/mytest/
    [archlinux@node1 mytest]$ ls
    fstab
    [archlinux@node1 mytest]$ echo wohaoshuai >> fstab 
    -bash: fstab: Permission denied
    [archlinux@node1 mytest]$ rm -rf fstab 

      2、umask:文件的权限反向掩码,遮罩码。

        a、普通用户创建的文件默认权限是664,root用户创建的文件默认权限是644。

        b、创建文件时文件权限为:666-umask

          创建目录时目录权限为:777-umask

        c、注意:之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限则需要将其加1。对目录的话没有这个限制。

          umask: 023

            666-023=644

            777-023=754

    [root@node1 ~]# umask 011
    [root@node1 ~]# umask 
    0011
    [root@node1 ~]# touch wohaoshuai
    [root@node1 ~]# ll wohaoshuai 
    -rw-rw-rw- 1 root root 0 Dec 20 17:51 wohaoshuai
    [root@node1 ~]# umask 022
    [root@node1 ~]# mkdir wohaoshuai1
    [root@node1 ~]# ls -ld wohaoshuai1/
    drwxr-xr-x 2 root root 6 Dec 20 17:53 wohaoshuai1/

        d、umask命令使用(仅对当前shell有效)

          umask:查看当前umask

          umask MASK:设置umask

    [root@node1 ~]# umask 
    0022
    [root@node1 ~]# umask 027
    [root@node1 ~]# umask 
    0027
    [root@node1 ~]# touch mytest2
    [root@node1 ~]# ll mytest2 
    -rw-r----- 1 root root 0 Dec 20 17:33 mytest2
    [root@node1 ~]# mkdir mytest3
    [root@node1 ~]# ll -d mytest3
    drwxr-x--- 2 root root 6 Dec 20 17:36 mytest3

      3、练习:完成以下任务

        1、新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin:尝试root切换至此用户,查看其命令提示符

        2、新建GID为5000的组wohaoshuai,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名

        3、新建用户fedora,其家目录为/users/fedora,密码同用户名;

        4、新建用户www,其家目录为/users/www,删除www用户,但保留其家目录

        5、修改用户gentoo和fedora新增附加组wohaoshuai

        6、复制目录/var/log至/tmp目录,修改/tmp/log及其内部的所有文件的属组为wohaoshuai,并让属组对目录本身拥有写权限

      4、install命令:复制文件并且给定属性,install - copy files and set attributes

        a、单源复制

          install [OPTION]... [-T] SOURCE DEST

        b、多源复制
          install [OPTION]... SOURCE... DIRECTORY
          install [OPTION]... -t DIRECTORY SOURCE...
        c、创建目录

          install [OPTION]... -d DIRECTORY...

        d、常用选项

          -m,--mode=MODE:设定目标文件权限,默认为755;

    [root@localhost ~]# ll /etc/inittab 
    -rw-r--r--. 1 root root 511 Apr 11  2018 /etc/inittab
    [root@localhost ~]# install /etc/inittab /root/
    [root@localhost ~]# ll /root/inittab 
    -rwxr-xr-x 1 root root 511 Dec 21 17:54 /root/inittab
    [root@localhost ~]# install -m 640 /etc/inittab /root/
    [root@localhost ~]# ll /root/inittab 
    -rw-r----- 1 root root 511 Dec 21 17:59 /root/inittab

          -o,--owner=OWNER:设定目标文件属主

          -g,--group=GROUP:设定目标文件属组

    [root@localhost ~]# install -o archlinux -g mygrp -m 640 /etc/inittab /tmp/
    [root@localhost ~]# ll /tmp/inittab 
    -rw-r----- 1 archlinux mygrp 511 Dec 21 18:01 /tmp/inittab

          -d,创建目录

    [root@localhost ~]# install -d hello
    [root@localhost ~]# ls -ld hello/
    drwxr-xr-x 2 root root 6 Dec 21 18:02 hello/

      5、mktemp命令:创建临时文件create a temporary file or directory

        a、常用命令

    [root@localhost ~]# mktemp /tmp/mytmp.XXXX
    /tmp/mytmp.bK3U
    [root@localhost ~]# mktemp /tmp/mytmp.XXXXX
    /tmp/mytmp.XkTnt
    [root@localhost ~]# mktemp /tmp/mytmp.XXXXXX
    /tmp/mytmp.HwcIYX

        b、常用选项

          -d:创建临时目录

        c、注意:mktemp会将创建的临时文件名直接返回,因此可以直接通过命令引用保存起来

      6、作业:用户及权限管理

        

          

  • 相关阅读:
    Ant的实现原理
    单例模式
    Ant常用代码段
    [转]大象吃香蕉问题
    i++和++i探秘
    带滚动条的table
    公钥系统/数字签名/数字证书工作原理入门 [转]
    动态创建WPF 控件,并绑定指定Style
    C#如何使用帮助及如何关联到F1键
    Umbraco安装记录
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/12072348.html
Copyright © 2011-2022 走看看