zoukankan      html  css  js  c++  java
  • Linux权限管理

    基本知识

    普通权限: r(read)    w(write)    x(execute)

    用户类别: u(user)    g(group)   o(other)

    对于每种用户都有一个指定的权限,分别用rwx这三个位表示,当用户没有该权限时就用 - 表示。

    1 [root@compute ~]# ll /home/
    2 总用量 496
    3 drwx------.  2 root    root     16384 5月  26 14:12 lost+found
    4 drwx------.  3    1010 user1     4096 7月  28 00:08 user1
    5 drwx------.  3 user3   root      4096 7月  28 06:31 user3
    6 drwx------.  3 user4   user4     4096 7月  28 00:29 user4

    以上面的user1为例,d表示该文件为目录文件,d后面的rwx表示u(user)对其具有读写执行权限,之后的 - - - 表示g(group)里面的用对其没有任何权限,最后的 - - - 同理表示o(other)对其没有任何权限。

    由于rwx这三个位只有两种状态——有这种权限或者没有这种权限——因此可以用0和1来对其进行编号

    0 → 000 —— ---

    1 → 001 —— --x

    2 → 010 —— -w-

    3 → 011 —— -wx

    4 → 100 —— r--

    5 → 101 —— r-x

    6 → 110 —— rw-

    7 → 111 —— rwx

    因此以后可以直接用数字代表权限,比如 755 表示 rwxr-xr-x

    改变文件的属主

    # chown(change owner) 用法:chown  USERNAME  file1,file2...

    1 [root@compute demo]# touch a
    2 [root@compute demo]# ll
    3 总用量 0
    4 -rw-r--r--. 1 root root 0 7月  28 22:20 a
    5 [root@compute demo]# chown user3 a
    6 [root@compute demo]# ll
    7 总用量 0
    8 -rw-r--r--. 1 user3 root 0 7月  28 22:20 a

     -R :递归修改子目录和文件,默认情况下不会修目录里面的问价的信息。

    --reference=path/to/file 将file1,file2...的属主设置成和path/to/file文件一样。

     1 [root@compute demo]# touch b
     2 [root@compute demo]# ll
     3 总用量 0
     4 -rw-r--r--. 1 user3 root 0 7月  28 22:20 a
     5 -rw-r--r--. 1 root  root 0 7月  28 22:32 b
     6 [root@compute demo]# chown --reference=a b
     7 [root@compute demo]# ll
     8 总用量 0
     9 -rw-r--r--. 1 user3 root 0 7月  28 22:20 a
    10 -rw-r--r--. 1 user3 root 0 7月  28 22:32 b

    chown不仅可以修改属主,还可以修改属组,用法: chown  USERNAME:GROUP  file1,file2...(如果只写 :GROUP 可以只修改属组,其中:可用 . 号代替)

    改变文件的属组

    # chgrp  用法:chgrp  GROUP  file1,file2... 

    -R和--reference的用法和chown用法相同。

    修改文件的权限

    #chmod

    1、修改三类用户的权限:chmod  MODE  file1,file2...  其中MODE是三位8进制数,比如 644 表示修改文件的权限为 rw-r--r--。注意如果位数不足,比如输入的MODE为32,默认解析为032,而不是320。

    该命令同上面的chown命令一样支持 -R 和 --reference。

     2、修改某类用户的权限:用法:chmod  用户类别=权限  file1,file2... 。这里的用户类别为u(user), g(group), o(other), a(all)中的一个。权限为rwx的组合,如:chmod  g=rx hello.c 。更详细的用法参考下面的例子。

    3、修改某类用户的某位权限:把用法2中的 = 号变成 -/+ 即可。如:给hello文件的user位加上执行权限 chmod  u+x  hello 。

     1 [root@compute demo]# ll
     2 总用量 0
     3 -rw-r--r--. 1 user3 root 0 7月  28 22:20 a
     4 -rw-r--r--. 1 user3 root 0 7月  28 22:32 b
     5 [root@compute demo]# chmod 777 a
     6 [root@compute demo]# ll
     7 总用量 0
     8 -rwxrwxrwx. 1 user3 root 0 7月  28 22:20 a
     9 -rw-r--r--. 1 user3 root 0 7月  28 22:32 b
    10 [root@compute demo]# chmod go-x a
    11 [root@compute demo]# ll
    12 总用量 0
    13 -rwxrw-rw-. 1 user3 root 0 7月  28 22:20 a
    14 -rw-r--r--. 1 user3 root 0 7月  28 22:32 b
    15 [root@compute demo]# chmod u=rwx,go=rw b
    16 [root@compute demo]# ll
    17 总用量 0
    18 -rwxrw-rw-. 1 user3 root 0 7月  28 22:20 a
    19 -rwxrw-rw-. 1 user3 root 0 7月  28 22:32 b

    新文件的默认权限——umask

    系统中有一个umask变量,它记录了一个三位8进制数,当创建目录时,新目录的默认权限就是777-umask,创建文件时,新文件的权限默认是666-umask。

    注意这里的 “-” 不是算术中的减,是拿掉的意思,比如当umask为003时,其对应为--- --- -wx,这时创建文件的默认权限是在 666(rw- rw- rw-) 中拿掉 003(--- --- -wx) 得到 664(rw- rw- r--)。而不是用666-003得到663(rw- rw- -wx),这样会造成 x 权限无中生有。

    对于管理员来说,umask默认为022,对于普通用户来说umask的默认值为002。

    直接使用umask可以查看当前用户的umask值。使用 umask  OCT 可以改变umask的值(OCT为三位8进制数)

    以是否登入为区分可将shell分为登入式shell和非登入式shell

    登入式shell:

      正常通过终端登入的shell

      su - USERNAME

      su -l USERNAME

    非登入式shell:

      su USERNAME

      图形界面下打开的虚拟终端

      自动执行的shell脚本

    bash的配置文件

    全局配置文件:/etc/profile, /etc/profile.d/*.sh, /etc/bashrc

    个人配置文件:~/.bash_profile, ~/.bashrc

    profile类的文件:设置环境变量,运行命令或脚本

    bashrc类的文件:设置本地变量,定义命令别名

    登入式shell读取配置文件的顺序:

    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

    非登入式shell读取配置文件的顺序:

    ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

    在/etc/profile文件中有这样一段语句:

    1 # By default, we want umask to get set. This sets it for login shell
    2 # Current threshold for system reserved uid/gids is 200
    3 # You could check uidgid reservation validity in
    4 # /usr/share/doc/setup-*/uidgid file
    5 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    6     umask 002 
    7 else
    8     umask 022 
    9 fi

    这段语句设置了不同用户在每次重新登入后的默认umask不同。

  • 相关阅读:
    IPFS搭建&集群
    request.getInputStream() 流只能读取一次问题
    八、网页版消息推送SDK-WebSockets
    Spring boot 打包瘦身方法
    七、Mosquito 集群搭建
    org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8' not supported
    RocketMQ Java 客户端实现
    RocketMQ 单机安装
    Vue.js面试题整理(转载)
    computed和watch的使用场景
  • 原文地址:https://www.cnblogs.com/flyor/p/7252902.html
Copyright © 2011-2022 走看看