zoukankan      html  css  js  c++  java
  • Linux权限详解

    一、Linux权限详解

    如何知道你有什么权限

    我能干什么?这是我最关心的问题!

    切换到普通用户

    [root@luffy-01 ~]# su - pizza
    [pizza@luffy-01 ~]$ ls /root
    ls: cannot open directory /root: Permission denied
    [pizza@luffy-01 ~]$ rm -f /etc/passwd
    rm: cannot remove `/etc/passwd': Permission denied  无权限,无法操作

    1、看看你是谁

    whoami

    [pizza@luffy-01 ~]$ whoami
    pizza

    2、你与至个文件有什么关系

    是 主人,家人,还是陌生人

    先查看文件

    [pizza@luffy-01 ~]$ ls -l  /oldboy/alex.txt
    -rw-r--r--. 2 root root 19 Jan 15 11:33 /oldboy/alex.txt

    id  查看身份======>groups,查看是不是和文件的主人是一家子

    [pizza@luffy-01 ~]$ id
    uid=500(pizza) gid=500(pizza) groups=500(pizza)

    [pizza@luffy-01 ~]$ id root
    uid=0(root) gid=0(root) groups=0(root)

    结果:文件属于root家族,pizza是这个文件的陌生人,pizza的权限是9位权限的最后3位r--

    权限的计算

    r======4
    w      2
    x      1
    -      0
    
    -rw-------
     420000000
     6  0  0
    
    -rw-r--r--
     420400400
     6  4  4
    
    drwxr-xr-x
     421401401
     7  5  5

    修改权限

    chmod ===change mode
    
      1]使用数字的方法修改权限
      chmod 755 oldboy.txt
    
      2]使用字符
    主人  家人    陌生人
    user  group   other
    u     g       o
    
    [root@oldboyedu01-nb oldboy]# ls -l oldboy.txt
    -rw-r--r--. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chmod u+x oldboy.txt  添加执行权限
    [root@oldboyedu01-nb oldboy]# ls -l oldboy.txt
    -rwxr--r--. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chmod u-x oldboy.txt   去除x权限
    [root@oldboyedu01-nb oldboy]# ls -l oldboy.txt
    -rw-r--r--. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chmod u=x oldboy.txt   先清空,再添加
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    ---xr--r--. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chmod u=rwx oldboy.txt
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    -rwxr--r--. 2 root root 252 Oct 18 09:10 oldboy.txt
     3]给文件添加上执行权限
    chmod +x oldboy.txt === chmod ugo+x oldboy.txt  === chmod a+x oldboy.txt
    
     4]修改文件的所有者和所属用户组
    chown  change owner
    
    [root@oldboyedu01-nb oldboy]# ls -l oldboy.txt
    -rwxr-xr-x. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chown oldboy.oldboy oldboy.txt
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    -rwxr-xr-x. 2 oldboy oldboy 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]#
    [root@oldboyedu01-nb oldboy]#
    [root@oldboyedu01-nb oldboy]#
    [root@oldboyedu01-nb oldboy]# chown root oldboy.txt
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    -rwxr-xr-x. 2 root oldboy 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]#
    [root@oldboyedu01-nb oldboy]# chown root.root oldboy.txt
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    -rwxr-xr-x. 2 root root 252 Oct 18 09:10 oldboy.txt
    [root@oldboyedu01-nb oldboy]# chown oldboy.oldboy oldboy.txt
    [root@oldboyedu01-nb oldboy]# ll oldboy.txt
    -rwxr-xr-x. 2 oldboy oldboy 252 Oct 18 09:10 oldboy.txt

    对于文件来说,rwx权限的含义

    准备环境

    mkdir -p /oldboy
    echo -e 'hostname
    pwd' >/oldboy/alex.sh
    chown oldboy.oldboy /oldboy/alex.sh
    ll /oldboy/alex.sh
    root用户
    oldboy用户

    前提:对于普通非root用户

    root用户下面修改 r权限

    [root@luffy-01 ~]# chown oldboy.oldboy /oldboy/alex.sh
    [root@luffy-01 ~]# ll /oldboy/alex.sh
    -rw-r--r-- 1 oldboy oldboy 13 Jan 15 23:23 /oldboy/alex.sh
    [root@luffy-01 ~]# chmod u=r /oldboy/alex.sh
    [root@luffy-01 ~]# ll /oldboy/alex.sh
    -r--r--r-- 1 oldboy oldboy 13 Jan 15 23:23 /oldboy/alex.sh

    oldboy用户下验证

    [oldboy@luffy-01 ~]$ ll /oldboy/alex.sh
    -r--r--r-- 1 oldboy oldboy 13 Jan 15 23:23 /oldboy/alex.sh  # 可读
    [oldboy@luffy-01 ~]$ cat /oldboy/alex.sh
    hostname
    pwd [oldboy@luffy
    -01 ~]$ echo 'ls -ld /root' >>/oldboy/alex.sh #没有写入权限 -bash: /oldboy/alex.sh: Permission denied [oldboy@luffy-01 ~]$ /oldboy/alex.sh # 没有执行权限 -bash: /oldboy/alex.sh: Permission denied

    root下面修改 w

    chown: invalid user: `u=w'
    [root@luffy-01 ~]# chmod u=w /oldboy/alex.sh

    oldboy用户下面验证

    [oldboy@luffy-01 ~]$ ll /oldboy/alex.sh
    --w-r--r-- 1 oldboy oldboy 13 Jan 15 23:23 /oldboy/alex.sh
    [oldboy@luffy-01 ~]$ cat /oldboy/alex.sh
    cat: /oldboy/alex.sh: Permission denied
    [oldboy@luffy-01 ~]$ echo 'ls -ld /root' >>/oldboy/alex.sh
    [oldboy@luffy-01 ~]$ /oldboy/alex.sh
    -bash: /oldboy/alex.sh: Permission denied
    [oldboy@luffy-01 ~]$ cat /oldboy/alex.sh
    cat: /oldboy/alex.sh: Permission denied

    写进去了,却不能查看,那就是然并卵了

    用VIM进去,什么也看不了,写入后,提示只读权限,

    退出后vim后,在root用户下查看,显示的是已经被修改的内容。

    所以,只有w权限是没什么用的

    小结:

    1.r读取文件内容
    2.w修改文件的内容,但是需要r的配合
      没有r配合强制修改退出,会清空文件的内容

    root下面修改 x

    [root@luffy-01 ~]# ll /oldboy/alex.sh
    ---xr--r-- 1 oldboy oldboy 26 Jan 15 23:44 /oldboy/alex.sh

    更改为x权限会变成绿色

    oldboy用户下面验证

    [oldboy@luffy-01 ~]$ ll /oldboy/alex.sh
    ---xr--r-- 1 oldboy oldboy 26 Jan 15 23:44 /oldboy/alex.sh
    [oldboy@luffy-01 ~]$ echo 'w' >> /oldboy/alex.sh
    -bash: /oldboy/alex.sh: Permission denied
    [oldboy@luffy-01 ~]$ /oldboy/alex.sh
    bash: /oldboy/alex.sh: Permission denied

    运行不了

    加上r权限

    [oldboy@luffy-01 ~]$ ll /oldboy/alex.sh
    -r-xr--r-- 1 oldboy oldboy 26 Jan 15 23:44 /oldboy/alex.sh
    [oldboy@luffy-01 ~]$ /oldboy/alex.sh
    luffy-01
    /home/oldboy
    dr-xr-x---. 2 root root 4096 Jan 15 15:00 /root
    可以运行了

    小结:

    对于文件来说rwx小结:
         1.r读取文件内容
         2.w修改文件的内容,但是需要r的配合
           没有r配合强制修改退出,会清空文件的内容
         3.x权限执行,需要r权限的配合

    目录权限详解

      r 查看目录里面的内容,    ls
      w 可以在目录里面创建      删除 重命名文件
      x 可以进入(cd)到这个目录

    创建环境

    mkdir -p /oldboy/alexdir
    chown oldboy.oldboy /oldboy/alexdir
    touch    /oldboy/alexdir/luffy{01..5}.txt

    root下修改目录权限r

    [root@luffy-01 oldboy]# ll -d alexdir/    加-d是为了把目录当做文件对待,否则就是查看目录里面的内容了
    drwxr-xr-x 2 oldboy oldboy 4096 Jan 16 00:03 alexdir/
    [root@luffy-01 oldboy]# chmod u=r alexdir/
    [root@luffy-01 oldboy]# ll -d alexdir/
    dr--r-xr-x 2 oldboy oldboy 4096 Jan 16 00:03 alexdir/

    oldboy下验证

    [oldboy@luffy-01 oldboy]$ ls -ld alexdir/
    dr--r-xr-x 2 oldboy oldboy 4096 Jan 16 00:03 alexdir/
    [oldboy@luffy-01 oldboy]$ ls -l alexdir/
    ls: cannot access alexdir/luffy01.txt: Permission denied
    ls: cannot access alexdir/luffy05.txt: Permission denied
    ls: cannot access alexdir/luffy04.txt: Permission denied
    ls: cannot access alexdir/luffy02.txt: Permission denied
    ls: cannot access alexdir/luffy03.txt: Permission denied
    total 0
    -????????? ? ? ? ?            ? luffy01.txt
    -????????? ? ? ? ?            ? luffy02.txt
    -????????? ? ? ? ?            ? luffy03.txt
    -????????? ? ? ? ?            ? luffy04.txt
    -????????? ? ? ? ?            ? luffy05.txt
    [oldboy@luffy-01 oldboy]$ ls alexdir/
    ls: cannot access alexdir/luffy01.txt: Permission denied
    ls: cannot access alexdir/luffy05.txt: Permission denied
    ls: cannot access alexdir/luffy04.txt: Permission denied
    ls: cannot access alexdir/luffy02.txt: Permission denied
    ls: cannot access alexdir/luffy03.txt: Permission denied
    luffy01.txt  luffy02.txt  luffy03.txt  luffy04.txt  luffy05.txt

    无法看到文件的详细信息

    root下加入x权限

    [oldboy@luffy-01 oldboy]$ ls alexdir/
    luffy01.txt  luffy02.txt  luffy03.txt  luffy04.txt  luffy05.txt
    [oldboy@luffy-01 oldboy]$ ls -l alexdir/
    total 0
    -rw-r--r-- 1 root root 0 Jan 16 00:03 luffy01.txt
    -rw-r--r-- 1 root root 0 Jan 16 00:03 luffy02.txt
    -rw-r--r-- 1 root root 0 Jan 16 00:03 luffy03.txt
    -rw-r--r-- 1 root root 0 Jan 16 00:03 luffy04.txt
    -rw-r--r-- 1 root root 0 Jan 16 00:03 luffy05.txt

    可以查看了

    小结:

    1.对于目录来说 r表示 查看目录里面内容的权限,ls  需要x配合
    2.没有x权限,那么显示的时候文件的属性无法显示

    root下修改目录的w

    [root@luffy-01 oldboy]# chmod u=w alexdir/
    [root@luffy-01 oldboy]# ls -ld alexdir/
    d-w-r-xr-x 2 oldboy oldboy 4096 Jan 16 00:03 alexdir/

    oldboy下验证

    [oldboy@luffy-01 oldboy]$ ll alexdir/
    ls: cannot open directory alexdir/: Permission denied
    [oldboy@luffy-01 oldboy]$ touch alexdir/txt.txt
    touch: cannot touch `alexdir/txt.txt': Permission denied
    [oldboy@luffy-01 oldboy]$ rm alexdir/luffy01.txt
    rm: cannot remove `alexdir/luffy01.txt': Permission denied

    各种操作都不行

    添加x权限

    [oldboy@luffy-01 oldboy]$ ll alexdir/
    ls: cannot open directory alexdir/: Permission denied
    [oldboy@luffy-01 oldboy]$ ll alexdir/ -d
    d-wxr-xr-x 2 oldboy oldboy 4096 Jan 16 00:03 alexdir/
    [oldboy@luffy-01 oldboy]$ touch alexdir/txt.txt

    可以添加和删除了,但是无法查看目录

    小结;

    1.w表示 可以在目录中创建 删除文件 重命名文件权限
    2.只有w无法删除 创建文件,w需要x配合

    root下修改x

    [root@luffy-01 oldboy]# chmod u=x alexdir/
    [root@luffy-01 oldboy]# ls -ld alexdir/
    d--xr-xr-x 2 oldboy oldboy 4096 Jan 16 00:22 alexdir/

    oldboy下面验证

    [oldboy@luffy-01 oldboy]$ cd alexdir/
    [oldboy@luffy-01 alexdir]$ ll
    ls: cannot open directory .: Permission denied

    总结:

               文件                    目录
       r    读取文件的内容           查看目录的内容(需要x权限)
       w    修改文件的内容(需要r)    在目录下面创建 删除文件(需要x权限)
       x    执行文件(需要r)          进入到目录的权限(cd)

    !!!!!!删除一个文件,要看你对这个文件所在的目录是否有wx权限。

    网站整体权限规划

    Linux 系统默认权限(默认的,比较安全的)

    对于文件来说

    所有者、家庭、隔壁老王======>rw- r- - r--  644

    对于目录来说

    所有者、家庭、隔壁老王======>rwx r-x r-x  755

    文件或者目录的所有者

    root root

    网站比较安全的权限

    blog.oldboy.com

    网站程序放在/app/blog目录下面

    #0.网站需要被运行起来,通过一个傀儡用户运行起来的www
    
    
    #1.blog目录下面
     file 644 
    dir 755
    root root
    #2.blog目录下面 /app/blog/ndd.jpg /app/blog/snow.jpg /app/blog/budongde.avi /app/blog/上传/lwang.jpg /app/blog/上传/lzhang.avi blog/上传
    file644 dir755
    www www

    小结:

     1.网站是通过傀儡用户运行的www
     2.网站用户上传目录,file 644 dir 755 www www      ##注意
     3.除了上传目录之外 file 644 dir 755 root root

    Linux控制系统默认权限的命令umask

    [root@luffy-01 oldboy]# umask
    0022
    
    [oldboy@luffy-01 alexdir]$ umask
    0002

    文件的最大的权限 666
    目录的最大的权限 777

    那么,0022 和666/777有什么关系呢?

    ####umask 022
    
    #umask
    ##根据umask计算文件的默认权限
    ##666
    #-022    减去022
    #=644
    
    ##根据umask计算目录的默认权限
    ##777
    #-022   
    #=755
    
    
    ####umask 032
    
    ##根据umask计算文件的默认权限
    ##666
    #-032
    #=634
    #+010   遇到奇数 +1
     =644
    
    
    
    ##根据umask计算目录的默认权限
    ##777
    #-032
    #=745
    
    
    
    [root@online01 oldboy]# touch file032
    [root@online01 oldboy]# mkdir dir032
    [root@online01 oldboy]# ls -ld *032
    drwxr--r-x. 2 root root 4096 Nov  8 05:22 dir032
    -rw-r--r--. 1 root root    0 Nov  8 05:22 file032
    
    
    根据umask计算出系统默认的权限规则
    1.对于目录 777直接减去umask
    2.对于文件 666减去umask的值,如果umask某一位上面是奇数,减完umask之后奇数位需要+1

    umask的修改

    [oldboy@luffy-01 alexdir]$ umask 032
    [oldboy@luffy-01 alexdir]$ umask
    0032

    文件系统的属性

    [oldboy@luffy-01 alexdir]$ lsattr txt.txt 
    -------------e- txt.txt
    查看系统属性,或者叫做隐藏的属性
    共有9个,常用的有两个a和i

    文件系统属性中的a和i

    [root@online01 ~]# #a=====append 只能追加
    [root@online01 ~]# #i=====immutable 无敌的 不可修改的
    [root@online01 ~]# lsattr oldboy.txt
    -------------e- oldboy.txt
    [root@online01 ~]# chattr +a oldboy.txt
    chattr授予文件或者目录隐藏的权限
    +a 或者 -a
    [root@online01 ~]# lsattr oldboy.txt -----a-------e- oldboy.txt [root@online01 ~]# cat oldboy.txt hello.txt [root@online01 ~]# echo hello >>oldboy.txt [root@online01 ~]# echo hello >>oldboy.txt [root@online01 ~]# cat oldboy.txt hello.txt hello hello [root@online01 ~]# echo hello >oldboy.txt -bash: oldboy.txt: Operation not permitted [root@online01 ~]# rm -f oldboy.txt rm: cannot remove `oldboy.txt': Operation not permitted [root@online01 ~]# mv oldboy.txt /tmp/ mv: cannot move `oldboy.txt' to `/tmp/oldboy.txt': Operation not permitted [root@online01 ~]# echo hello >>oldboy.txt -bash: oldboy.txt: Permission denied [root@online01 ~]# echo hello >oldboy.txt -bash: oldboy.txt: Permission denied [root@online01 ~]# rm -f oldboy.txt rm: cannot remove `oldboy.txt': Operation not permitted [root@online01 ~]# mv oldboy.txt /tmp/ mv: cannot move `oldboy.txt' to `/tmp/oldboy.txt': Operation not permitted

    Linux特殊权限

    suid setuid ------password命令

    S s -rws r-x r-x

    作用:运行某一个命令的时候相当于这个命令的所有者(root)

    设置方法:chmod u+s /bin/rm 或者 chmod 4755 /bin/rm

    危险:所有用户运行命令的时候都相当于是root

    例子:passwd命令

    看一下设置s属性后的文件权限信息

    [root@luffy-01 oldboy]# chmod u+s /bin/cat
    [root@luffy-01 oldboy]# ll /bin/cat
    -rwsr-xr-x. 1 root root 48568 Mar 23  2017 /bin/cat
    [root@luffy-01 oldboy]# stat /bin/cat
      File: `/bin/cat'
      Size: 48568         Blocks: 96         IO Block: 4096   regular file
    Device: 803h/2051d    Inode: 13599       Links: 1
    Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-01-15 08:42:00.072999999 +0800
    Modify: 2017-03-23 02:52:45.000000000 +0800
    Change: 2019-01-16 01:31:49.911687040 +0800

    权限变成了4 755

    sticky粘滞位---1777 /tmp目录

    特点:

    1、任何用户都可以在这个目录里面创建文件(原来的权限是777)

    2、每个人只能管理自己的文件,其他人处理不了

    [root@luffy-01 oldboy]# stat /tmp/
      File: `/tmp/'
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: 803h/2051d    Inode: 12          Links: 3
    Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-01-15 17:29:10.881710386 +0800
    Modify: 2019-01-15 15:28:55.581985449 +0800
    Change: 2019-01-15 15:28:55.581985449 +0800

    sgid locate

    运行这个命令的时候,相当于这个命令的家人

    总结

    1、Linux权限体系
        1.rwx是啥
        2.rwx对应的数字 及计算方法 rwxr-xr-x
        3.chmod 命令的使用
         4.对于文件来说r w x 是什么含义 *****
        5.对于目录来说r w x 是什么含义 *****
        6.网站权限-通过控制权限让网站安全
        7.linux系统默认权限控制命令umask
        8.文件系统属性(文件属性)

    前面的知识总结
    1、正则总结
    2、特殊符合总结 无分类系列 $ ! | # 引号系列 $() `` '' "" 重定向系列 > >> 2> 2>> < << 位置系列 ~ . .. 判断系列 && || 3.第三关练习题-取出ip地址 权限 4.使用三剑客进行过滤grep sed awk 如何使用三剑客命令过滤出文件中以oldboy开头的行(文件名是oldboy.txt,至少3种方法) 5.修改时间 linux快捷键 vi/vim快捷键 6.文件还有目录权限 rwx含义 7.网站权限-通过控制权限让网站安全 8.linux系统默认权限控制命令umask 9.文件系统属性(文件属性) 10.linux无法上网 11.无法远程连接服务器 进阶知识: 安装和使用lrzsz htop
  • 相关阅读:
    vue-cli中安装方法
    css初始化
    VUE基本指令(v-model,v-html,v-text,v-bind,v-if,v-show,v-for,v-on:click,组件,过滤器)
    在浏览器上安装 Vue Devtools工具
    vue前端框架面试问题汇总
    git修改用户名、邮箱
    js对字符串的一些操作方法
    11款JavaScript颜色拾取插件推荐
    vue-devtools的安装与使用
    JS里的居民们4-数组((堆)队列
  • 原文地址:https://www.cnblogs.com/bubu99/p/11673631.html
Copyright © 2011-2022 走看看