管道与权限

前天看了管道符
   管道符: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    这样设置也可以

原文地址:https://www.cnblogs.com/liang-1/p/8723495.html