Linux命令对于文件夹的删除与获取权限

最近在研究虚拟机上一些特性,比如对文件夹的修改。最早是用了re文件管理器或者es文件浏览器来进行一些基本的操作,满足一些需求。到后来发现对一些文件我们是没有权限去改动。也就是说系统对它有了限制,我们无法获取我们的命令,得到想要的结果。后来没办法,还是只能通过Linux命令来解决,也就是以代码的形式对文件进行修改。当然,首先你的手机要有root。

接下来我们来看,对文件的一些读写操作权限:

Linux的操作系统下,每个文件都是按读、写、运行设定权限的。

例如”rw-r–r–“:rw是说用户apple有读、写权限,没有运行权限,接着r–表示用户组users只有读权限,最后r–指其他人others只有读权限,没有写跟运行权限。

读写运行三项权限可以用数字表示,就是r=4,w=2,x=1.所以,上面的例子“rw-r–r–”用数字表示就是644。

反过来说777就是rwxrwxrwx,意思是该登录用户、他所在的组和其他人都有最高权限。

指令名称 : chmod

  使用权限 : 所有使用者
  使用方式 : chmod [-cfvR] [–help] [–version] mode file…
  说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

  参数格式 :

  mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中

  u : 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  + :  表示增加权限、- 表示取消权限、= 表示唯一设定权限。
   r : 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 -c : 若该档案权限确实已经更改,才显示其更改动作
  -f : 若该档案权限无法被更改也不要显示错误讯息
  -v : 显示权限变更的详细资料
  -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
  –help : 显示辅助说明

  –version : 显示版本

  范例 :将档案 file1.txt 设为所有人皆可读取 :
  chmod ugo+r file1.txt

  将档案 file1.txt 设为所有人皆可读取 :
  chmod a+r file1.txt

  将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
  chmod ug+w,o-w file1.txt file2.txt

  将 ex1.py 设定为只有该档案拥有者可以执行 :
  chmod u+x ex1.py

  将目前目录下的所有档案与子目录皆设为任何人可读取 :
  chmod -R a+r *

  此外chmod也可以用数字来表示权限如 chmod 777 file

  语法为:chmod abc file

  其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

  r=4,w=2,x=1

  若要rwx属性则4+2+1=7;
  若要rw-属性则4+2=6;
  若要r-x属性则4+1=7。

  范例:
  chmod a=rwx file 和chmod 777 file效果相同

  chmod ug=rwx,o=x file和chmod 771 file效果相同

  若用chmod 4755 filename可使此程式具有root的权限。

例子:

DataOutputStream cfgDataOutputStream;

public void getCFGfile() throws InterruptedException {
    try {
        cfgDataOutputStream = new DataOutputStream(Runtime.getRuntime().exec("su").getOutputStream());
      
        cfgDataOutputStream.writeBytes("chmod 777 " + "/systemInfo.cfg \n");
        cfgDataOutputStream.writeBytes("exit\n");
        cfgDataOutputStream.flush();
        Thread.sleep(3000L);
        return;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (cfgDataOutputStream != null) {
            try {
                cfgDataOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

接下来就是删除文件夹:

linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。

直接rm就可以了,不过要加两个参数-rf

即:rm -rf   目录名字

-r 就是向下递归,不管有多少级目录,一并删除

-f 就是直接强行删除,不作任何提示的意思

1.删除文件使用实例:

rm -f /home/wwwroot/sinozzz456/index.html

将会强制删除/home/wwwroot/sinozzz456/index.html这个文件

2.清空文件夹实例:

rm -rf /home/wwwroot/sinozzz456/abc/*

将会强制删除/home/wwwroot/sinozzz456/abc目录下所有文件、文件夹,保留/home/wwwroot/sinozzz456/abc目录

3.删除文件夹实例:

rm -r /home/wwwroot/sinozzz456

将会强制删除/home/wwwroot/sinozzz456目录以及其下所有文件、文件夹

需要提醒的是:使用这个rm -r 的时候一定要格外小心,linux没有回收站的

当然,rm还有更多的其他参数和用法,man rm就可以查看了

如果是在/home/wwwroot/目录下进行操作,则可以省去每个命令的/home/wwwroot/部分


    原文作者:Xiehaiping_
    原文地址: https://blog.csdn.net/Xiehaiping_/article/details/51891004
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞