zoukankan      html  css  js  c++  java
  • 管道与权限

    前天看了管道符
       管道符:cmd1   输出
               cmd2   输入
              cmd1  |   cmd2
            如果想将错误信息传给cmd2
              cmd1  |&  cmd2    或     cmd1   2>&1|  cmd2
       加上 >
            2>
            <
            &>
            就是重定向
            << key
          与用户名和组相关的
        /etc/passwd
        /etc/shadow  放用户口令的
        /etc/group
        /etc/gshadow
       以上可以用cat查看也可以用
      getent passwd|shadow|group|gshadow
       前提是必须是root尤其是  shadow   ,gshadow
        上一节课讲到用户账号和组账号可以同名
       也就是 UID=GID ,一般用户创建账号时是默认创建一个和他同名的组作为主组,即uid和主组相同
       在Linux中默认一个uid=0的号即root ,并且gid=0的也叫root的组
       如果把liang号 UID设为0 就可以获得和root一样的权限
      准确的说ID为0的就是管理员
       我们把用户加到组里面就会继承组的权限
        工作中 一般先建一个账号
       useradd -s /sbin/nologin -r -d /data/mysql -m  -u1234  mysql
     -s  shell类型  nologin给某个服务用的,一般都是系统账号   -d指定家目录,后面跟指定目录。 -r 一旦加上就不会建家目录,邮箱也不会生成,如果想建家目录加上-m  后面跟指定用户名 -u指定UID如果在多台服务器上建账号不指定UID 系统会随机分配,管理麻烦
       usermem
     
      
       userdel  带-r选项会把邮箱一起删除
       
       今天 
        文件的权限
        read    r  读
        write   w  写
        excute  x  执行
      读文件  要确保文件可读才行  如果是二进制文件读取后会把系统弄乱码 ,
         解决办法exit  logout   或CTRL+D   或敲命令reset(重置字符)
      读写文件一般针对文本说的
      执行列外  执行:当程序运行
     
        改所有者   chown  w f1   更改f1的所有者为w
          查组的列表    getent group
        改所有组   chgrp rpc  f1     更改f1的所有组为rpc
        
        建两个组  #groupadd  g1
                 #groupadd  g2
       把w用户加到g1组里   有三种方法
             #groupmems  -a  w  -g  g1
             #usermod   -aG  g2   w      给wang建一个叫g2的附加组   如果没有a 将会把上一个附加组g1覆盖抹去
    列如
    [root@liang data 21:00:42]#id wang
    uid=502(w) gid=504(wang) groups=504(wang)
    [root@liang data 21:08:11]#groupmems -a wang -g  g1
    [root@liang data 21:16:11]#id  wang
    uid=502(w) gid=504(wang) groups=504(wang),501(g1)
    [root@liang data 21:16:18]#usermod  -aG g2 wang
    [root@liang data 21:16:50]#id wang
    uid=502(w) gid=504(w) groups=504(w),501(g1),502(g2)
        普通账号无法改变UID
    列如
    [root@liang data 21:19:10]#su wang
    [wang@liang data 21:19:25]$ll
    total 16
    -rw-r--r--. 1 w root     0 Apr  4 20:53 f1
    drwx------. 2 root root 16384 Apr  2 19:54 lost+found
    [w@liang data 21:19:30]$chown mage f1
    chown: changing ownership of `f1': Operation not permitted
         可以改变GID 前提是文件是所有者的,并且必须要在这个组里
     例如
    [w@liang data 21:20:08]$chgrp g1 f1
    [w@liang data 21:24:17]$ll f1
    -rw-r--r--. 1 wang g1 0 Apr  4 20:53 f1
         继承的组权限是一样的
          相对于普通用户  。
         通过这 我们把将要访问f1文件的  人 分成 三类人
        第一类   文件的所有者           权限最大
        第二类   所加入的 所属于的组     权限相对小
        第三类   other                   权限最严
        
          如何对三类人  授权   
        1  chmod    change  mode
         方法  :mode 法
          chmod   who  opt per  file         chmod跟上对谁操作who  做什么操作opt  针对他授予什么权限per  跟上文件file

             who :u  g   o   a(all)
             opt : +  -  =
             per :r  w  x   X       X特殊权限
        chmod u+x,file
        chmod u+x,g-w,o= file
    例如
    [w@liang data 21:54:06]$ll f1
    -rw-r-----. 1 wang g1 0 Apr  4 20:53 f1
    [w@liang data 21:54:35]$chmod u= f1
    [w@liang data 21:54:44]$ll f1
    ----r-----. 1 w g1 0 Apr  4 20:53 f1
          普通用户读写执行 有限制
         删除文件不是对文件的权限 而是对目录的
      

    方法2: 数字法
       u     g      o  
      rwx   rw-    r--
      111   110    100
      421   42     4
      
       7    6      4
     
       chmod 421 f1
                                    
       chmod   -R  422  dir1   更改dir1下的所有文件的权限为422
         
            umask 取消对应的权限      mask 掩码
         设为多少
         新建的文件的权限就是666-umask值剩下的数,但是  如果是奇数+1 偶数不变
         新建的文件夹的权限是777-umask值剩下的数。
      
    例如
    [root@liang data ]#umask 251
    [root@liang data ]#mkdir dir2
    [root@liang data ]#ll
    total 0
    drwxrwxrwx. 2 liang liang 27 Apr  5 16:29 dir1
    dr-x-w-rw-. 2 root  root   6 Apr  5 17:05 dir2
    [root@liang data ]#touch f1
    [root@liang data ]#ll
    total 0
    drwxrwxrwx. 2 liang liang 27 Apr  5 16:29 dir1
    dr-x-w-rw-. 2 root  root   6 Apr  5 17:05 dir2
    -r---w-rw-. 1 root  root   0 Apr  5 17:05 f1
      
       在Linux中要想存的住就要放在文件里
     所以umask值可以存在 .bashrc 中
           -p
    #umask -p >>.bashrc
        
           -s
    #umask  -s
    u=rwx g=rw o=r
    可以直接看到设置的 不用算  我们也可以这样
    #umsak  u=rwx g=r o=rw    这样设置也可以

  • 相关阅读:
    Golang项目之函数版学生管理系统
    Golang项目之结构体版学生管理系统
    Golang基础之结构体
    前端开发必备组件库【基于原生js、兼容主流浏览器、B/S必备】
    兼容主流浏览器的js原生函数封装
    基于原生js的返回顶部组件,兼容主流浏览器
    javascript数组详解(js数组深度解析)【forEach(),every(),map(),filter(),reduce()】
    javascript中的字符串编码、字符串方法详解
    面试题中常见的类型转换陷阱
    node.js报错throw err; // Rethrow non-MySQL errors e:serverTest ode_modulesmysqllibprotocolParser.js:79 解决方法
  • 原文地址:https://www.cnblogs.com/liang-1/p/8723495.html
Copyright © 2011-2022 走看看