zoukankan      html  css  js  c++  java
  • linux chmod and chown

    使用方式 : chmod [-cfvR] [--help] [--version] mode file...

    1. mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],
    2. -c,--changes 只输出被改变文件的信息
    3. -f,--silent,--quiet 当chmod不能改变文件模式时,不通知文件的用户
    4. -v,--verbose 无论修改是否成功,输出每个文件的信息
    5. --help 输出帮助信息
    6. --version 输出版本信息

     

    u:拥有文件的用户(所有者); g:所有者所在的组群; o:其他人(不是所有者或所有者的组群); a:每个人或全部(u、g、和o)。

    r:读取权;    w:写入权;    x:执行权   r=4,w=2,x=1

    +:添加权限;  -:删除权限;   =:使它成为惟一权限

    列举一些android 目录权限:

    drwxr-xr-x root     root              1970-01-01 00:00 acct

    -rwxr-x--- root     root       239920 1970-01-01 00:00 charger

    lrwxrwxrwx root     root              1970-01-01 00:00 d -> /sys/kernel/debug

    第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道, s是套接字,c是字符设备文件,b是块设备文件
    第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行,-是无权限
    第5-7位表示和这个文件属主所在同一个组的用户所具有的权限。
    第8-10位表示其他用户所具有的权限。
    ---对应英文全称----
    d = directory  - = regular file  l = symbolic link  s = Unix domain socket  p = named pipe  
    c = character device file  b = block device file
    r = read permission = 4  w = write permission = 2  x = execute permission = 1  - = no permission = 0
    u = user/owner  g = group  o = other  a = all
    + add this permission  - remove this permission  = set exactly this permission


    一些范例:
    将档案 file1.txt 设为所有人皆可读取 :chmod ugo+r file1.txt or chmod a+r file1.txt or chmod 444 file1.txt
    将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
      chmod ug+w,o-w file1.txt file2.txt
    将目前目录下的所有档案与子目录皆设为任何人可读取 :  chmod -R a+r *

    ========以下还有三种情况,比较少见============
    SUID:只对二进制程序支持,只要拥有该程序的所有者拥有SUID的权限,那么其它用户或者同组用户拥有该程序的x权限,就可以在程序执行过程中拥有所有者的权限支持。
    SGID:此权限与SUID有类似的地方,但是SUID是得到所有者的支持,而SGID是得到同组用户的支持。
    SBIT 全称Sticky Bit.但是它只对目录有效,对文件却是无效的,它的作用就是防止别人删除对方的资料..

    如:
     -rwsr-xr-x 1 root root 19876 Jul 17  2006 /usr/bin/passwd
    drwxr-srwx 2 root root  4096 Feb  6 21:09  a
    SUID
    为4
    SGID为2 SBIT为1
    例:
            假如我们有个文件叫file.有一个目录叫test..file它的权限是644..test的权限是755
            1..如果我们想把file加上suid权限的话执行此命令
            #chmod  4755  file
            2..如果我们想把test目录加上sgid的话执行此命令
            #chmod  2755   test/
            3.如果我们想把test目录加上sbit权限的话执行此命令
            #chmod  1755   test/
            4..大家可以看得出来s与t都是取代x权限的...
            5..如果不想让test具备SUID和SGID权限执行此命令
            #chmod   7666  file
            #ls  -l
             -rwSrwSrwT 1 root root     0 Feb  6 21:49 file
            这里的S和T就代表空..不具备其他人执行的权限...7666也就是说用户,组,以及其他的人都不具备x的权限,除了root.任何人修改不了此文件...
            这儿我用数字代替给文件加一些 权限....我们也可以用别的方法.比方说..我们给file文件加上suid权限
            #chmod  u=rwxs,o=rx   file
            给test目录加上SGID权限和other可读取写入执行权限
            #chmod  g+s,o=wrx    test/
            给test目录加上SBIT权限和other可读取写入执行权限
            #chmod   o=rwxt   test/ 
    以下摘自深入理解linux 内核:
    suid
    进程执行一个文件时通常保持进程拥有者的UID,然而,如果设置了可执行文件suid的标志位,进程就获得了该文件的拥有者的UID.
    sgid
    进程执行一个文件时保持进程组的用户组ID.然而,如果设置了可执行文件sgid的标志位,进程就获得了该文件的用户组ID.
    sticky
    设置了sticky标志位的可执行文件相当于向内核发出一个请求,当程序执行结束以后,依然将它保留在内存(这个标志已经过时,现在使用基于代码页共享的其他方法)

    当文件由一个进程创建时,文件拥有者的ID就是该进程的UID。而其用户组ID可以是进程创建者的ID,也可以是父目录的ID,这取决于父目录sgid标志位的值。


    指令名称 : chown  使用权限 : root 
    使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file...

    以Android phone system/bin下的文件为例:

    -rwxr-xr-x root shell 380075 2013-05-07 12:02 btld

    第一列为ugo的权限, 第二列 btld 所属用户, 第三列为 btld 所属用户组.

    1.修改所属用户由"root" 变为 "shell"   -- chown shell btld (之前要运行adb root , adb remount)

       -rwxr-xr-x shell shell 380075 2013-05-07 12:02 btld  --修改后

    2.修改所属用户组由"shell" 变为 "root" -- chown  shell.root btld

      -rwxr-xr-x shell root 380075 2013-05-07 12:02 btld --修改后

    注: 如果要在linux 修改所属用户组应该用chgrp   --chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]

        -- chown  有时间再整理 --

    Refs:
    http://linux.chinaunix.net/techdoc/system/2007/12/11/974135.shtml
    http://blog.csdn.net/hsuxu/article/details/7193923
  • 相关阅读:
    Javascript函数节流 (转)
    XMLHttpRequest get post
    ast基础学习
    python xpath xml namespaces|How does XPath deal with XML namespaces?
    aiohttp
    asyncio异步
    sql server 查看版本
    毕设设计进度03
    bzoj 2453: 维护队列
    bzoj 3262: 陌上花开
  • 原文地址:https://www.cnblogs.com/shed/p/3023679.html
Copyright © 2011-2022 走看看