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、作业:用户及权限管理

    

 

 

 

 

 

 

 

 

      

posted @ 2019-12-20 11:51  Presley  阅读(398)  评论(0编辑  收藏  举报