2017-04-09 10:32:25 u013652101 阅读数 3258

第一次用Unix服务器,跑实验出错,想要删除目录下所有文件。在网上查了一下,发现各路大神说法各异。下面是本人亲测有效的方法。

假设a目录下有b、c、d三个文件,现在要删除该目录下的所有文件。

整个删除过程只需要两步:
首先,进入a目录;
然后,输入下述命令即可

rm -rf *
2012-03-16 19:12:40 sheqiguo 阅读数 1076
 

Unix操作系统基础:Unix文件系统之文件权限

1. 应用背景

    由于Unix系统是一个多用户系统,通常有多个用户同时在系统上工作。这些用户都可以遵循路径名到达不同的目录并读取或执行属于他人的文件。

  为了用户能够保护自己的文件,以免被他人读取、修改或删除,用户可以使用AIX提供的命令来读取文件权限的相应位,以控制谁能使用你的文件,保证文件的安全性。

2. 文件权限

1) 文件权限的种类:

        对任何类型的Unix文件,可以设置三种权限

       Ø 读(r)权限:可读取文件的内容

      Ø 写(w)权限:可修改文件的内容

     Ø 执行(x)权限:

                    对普通文件,文件内容可被装入内存直接运行或逐条解释执行。

                    对目录文件,可在分析路径名的过程中检索该目录。

2) 文件保护权限:

                      rwx             rwx             rwx    

                  用户           用户组          其他用户

 普通文件:

r(read):   能够看文件的内容

w(write):  能够改变或删除文件的内容

x(execute):能够将文件作为命令执行(需要同时具备r

目录文件:

r (read):   能够查看目录中有哪些文件

w(write):  能够在目录中创建或删除文件

x(execute): 能够进入到目录当中,对于目录,当想要访问目录中的任何一个文件

           或者子目录时,x权限都是必须的。这意味着,对于你正在访问的文

           件,本级目录及本级目录的所有父目录都必须有x权限。

                   对于目录,如果想使用w权限起作用,则它必须同时具备x权限。

3) 文件权限的检测

    使用ls -l命令检测文件类型:

    

    第一个字符:表示文件类型,上图d代表是一个目录。如果是-,代表是一个文件。

    第24位 :表示文件所有者(属主)权限,此文件属主具有读写执行权限。

    第57位: 表示属主所在组用户权限,此属主所在组具有读和执行权限。

    第810位:表示其他用户对此文件的操作权限,其他用户为读和执行权限。

    代表相关权限的字符的位置是固定的。

    指定位置有相关字符,代表有相关权限,如果是-(减),则表示没有相关权限。

4) 修改文件权限

        常用 chmod 命令来修改文件(包括普通、目录和设备)的访问权限,命令格式为:

        #chmod  pattern filename ...

        其中,filename为要修改权限的文件名,可以有多个文件名,pattern为将改变成的

        权限,可用两种形式表示:字母形式和数字形式。

        字母形式(符号模式)

        字母形式由用户类别(ugo)、如何改变(+-)和权限(rx)三部分组成。

        如:

            chmod  u+x   file1

            chmod  o-w   ile2  file3

            chmod  go+r  file4

        说明:

              u表示属主,g表示属主组,o表示其他用户

              tsticky): 使文件正文保留在内存,不被交换到外存。

              ssdtuid): 使文件的调用者具有文件属主(或用户组)的权限。

5) 数值形式

        把九个字母形成的权限划分为三组(属主用户、同组用户和其他用户),每组三位

       (读、写、执行),在每一位上有对应的权限则为1,没有对应权限则为0,由此把

        九位权限变成三位八进制数。如:

权限

对应二进制

八进制

rwx  rw-   rw-

111 110 110

766

 rw-  r--    r-- 

110 100 100

644

 rwx  r-x   r-x

111 101 101

755

 r--   ---   ---

100 000 000

400

 r-x   r--   --- 

101 100 000

540

 rwx  rwx  rwx

111 111 111

777

 r--   r--   ---

100 100 000

440

        只要把相应的权限位的数字相加,就可以得到八进制的权限表示。

        使用八进制模式设置文件的权限时,你不用考虑文件已有的权限,只须直接指定你

        将要为各类用户设置的权限就可以。

6) 缺省的文件权限

Ø 新创建的文件缺省权限为:644

Ø 新创建的目录缺省权限为:755

Ø 缺省的权限可以通过修改系统变量 umask 的值。

新建文件或目录的 umask 通常为022,缺省值022是在文件/etc/security/user

中设置的,可以更改所有的用户 umask 值,也可以更改特定用户的umask值。

Ø 对新建的文件,系统不会赋予他执行权限。所以,新建权限的最大值为666

Ø 对新建的目录,系统会赋予他执行的权限,即最大权限为777

Ø 一般情况下,应该使用chmod命令对新创建的文件或目录进行权限管理。

7) 目录的写权限

        如果你没有文件的写权限,那么你不能更改该文件的内容。然而,如果你拥有这个

        文件所在的目录的写权限,那么你就可以超越文件的权限限制。

        给其他用户授予目录的写权限是非常危险的。所以,在设置权限时要小心。对于已

        经创建的目录,可使用 chmod 命令来修正已有的权限设置。

2013-11-30 20:47:29 u012972188 阅读数 1890

本文来自http://blog.csdn.net/u012972188 ,引用必须注明出处!

unix 删除文件夹以及该目录下面的所有文件

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客

rm -r directory


2004-09-06 08:37:00 zcatlinux 阅读数 1007
作者: 李贵林 陈朝晖

与DOS/Windows不同,UNIX文件被删除后很难恢复,这是由UNIX独特的文件系统结构决定的。UNIX文件目录不像DOS/Windows那样,文件即使被删除之后仍保存有完整的文件名、文件长度、始簇号(即文件占有的第一个磁盘块号)等重要信息;相反,它的文件信息全部依靠一种被称为i节点的数据结构来描述,而i节点在相应文件被删除之后即被清空,因此,要想直接恢复被删除的文件内容几乎是不可能的,必须另辟蹊径。本文结合实际,讨论几种文件恢复策略及其关键步骤的具体实现。

  一、UNIX文件系统结构

  我们知道,UNIX是以文件卷作为其文件系统存储格式的,而不同的UNIX系统,文件卷格式是有差异的,甚至即使是同一UNIX操作系统的不同版本,其文件系统未必完全相同,例如:SCO UNIX 4.1版与5.0版文件系统结构就有明显差异,但只要是UNIX系统,其文件卷的基本结构是一致的。分析如下:

  不管是什么UNIX系统,不管什么版本,其文件卷至少包括引导块、超级块、i节点表、数据区等几个部分。除此之外,不同UNIX版本可能还有不同的差异。例如:SCO UNIX系统的位图索引块和位图块AIX的逻辑卷表等。这些系统的特殊性不影响下文的恢复策略,故这里不作讨论,仅介绍标准UNIX文件卷结构。

  1. 引导块

  位于文件卷最开始的第一扇区,这512字节是文件系统的引导代码,为根文件系统所特有,其他文件系统这512字节为空。

  2. 超级块

  位于文件系统第二扇区,紧跟引导块之后,用于描述本文件系统的结构。如i节点长度、文件系统大小等,其结构存放于/usr/include/sys/filsys.h中,其结构如下:

  struct filsys

  {

  ushort s_isize; /*磁盘索引节点区所占用的数据块数*/

  daddr_t s_fsize; /*整个文件系统的数据块数*/

  short s_nfree; /*在空闲块登录表中当前登记的空闲块数目*/

  daddr_t s_free[NICFREE]; /*空闲块登记表*/

  short s_ninode; /*空闲索引节点数*/

  ino_t s_inode[NICINOD]; /*空闲节点登记表*/

  char s_flock; /*加锁标志位*/

  char s_ilock; /*节点加锁标志位*/

  char s_fmod; /*超级块修改标志*/

  char s_ronly; /*文件系统只读标志*/

  time_t s_time; /*超级块上次修改的时间*/

  short s_dinfo[4]; /*设备信息*/

  daddr_t s_tfree; /*空闲块总数*/

  ino_t s_tinode; /*空闲节点总数*/

  char s_fname[6]; /*文件系统名称*/

  char s_fpack[6];

  long s_fill[13]; /*填空位*/

  long s_magic; /*指示文件系统的幻数*/

  long s_type; /*新文件系统类型*/

  };

  3. i节点表

  i节点表存放在超级块之后,其长度是由超级块中的s_isize字段决定的,其作用是用来描述文件的属性、长度、属主、属组、数据块表等,其数据结构在/usr/include/sys/ino.h中,如下:

  struct dinode

  {

  ushort di_mode;

  short di_nlink;

  ushort di_uid;

  ushort di_gid;

  off_t di_size;

  char di_addr[40];

  time_t di_atime;

  time_t di_mtime;

  time_t di_ctime;

  };

  4. 目录结构

  UNIX所有文件均存放于目录中,目录本身也是一个文件。目录存放文件的机制如下:首先,目录文件本身也象普通文件一样,占用一个索引节点,其次,由这个索引节点得到目录内容的存放位置,再次,从其内容中取出一个个的文件名和它对应的节点号,从而访问一个文件。目录结构如下:

  索引节点号(2字节) .(本目录)(14字节)

  索引节点号(2字节) ..(父目录)(14字节)

  索引节点号(2字节) 文件名(14字节)

  索引节点号(2字节) 文件名(14字节)

  索引节点号(2字节) 文件名(14字节)

  由上可知文件名是依靠目录来描述的,文件的内容和其他信息则由索引节点来描述。

  二、文件的删除过程

  UNIX下删除一个文件的过程很简单,那就是释放索引节点表和文件占用的数据块,清空文件占用的索引节点,但不清除文件内容。但删除文件与删除目录的处理不尽相同,不同命令删除文件的过程也不相同。

  1. 删除一个文件

  UNIX 删除一个文件的具体步骤是:根据文件i节点的地址表逐一释放文件占用的磁盘数据块,然后清空相应的节点,最后释放i节点。

  2. 删除一个目录

  删除一个目录的过程:首先逐一删除目录里的所有文件,然后删除目录。目录本身也是一个文件,故删除方法与删除文件一致。

  3. 几种不同的删除命令

  .rm 命令

  一般删除命令,删除过程上述已说明。

  .mv命令

  格式:mv 文件1 文件2

  处理过程是将文件2的数据块释放,然后将文件1的名称改为文件2,再释放文件2所占的i节点。

  . > 命令

  格式:>文件名

  若产生一个新文件,>命令仅仅申请一个i节点,而不写入任何文件内容;若清空一个已经存在的文件,则释放文件所占的数据块,并将文件长度清零。

  三、被删文件的恢复策略

  要恢复被删除的文件,只能根据删除后留下的东西去做文章。文件被删除后留下了什么呢?由上述分析可知:其一、留下了文件的内容;其二、留下了“现场”。文件的恢复策略只能从这两个方面来分析。以下谈几种恢复策略。

  1.根据磁盘现场进行恢复

  如果文件被删除,现场未被破坏(即文件被删除后硬盘未发生过写操作),而且假定只删除了一个文件,那么可根据系统的分配算法进行恢复。因为系统建立一个文件时,必定根据某一特定的分配算法决定文件占用的数据块位置。而当该文件被删除后,它所占用的数据块被释放,又回到系统的分配表中,这时如果重新建立一个文件,系统根据原来的分配算法分配出的数据块必定跟该文件原来占用的数据块一致,而且我们知道,UNIX文件最后一数据块尾部多出的字节是全部置0的,据此只要调用系统的数据分配算法,在系统中一块块的申请数据块,因为UNIX文件最后一个数据块尾部多出的字节全部为0,所以,只要发现一个分配出的数据块中尾部全为0,即可认为文件结束,由此可确定文件长度和内容,进而实现恢复。方法如下:

  ⑴申请一个索引节点,即向系统申请创建一个新文件名而不写入任何内容。如:#>/tmp/xx

  ⑵调用系统分配数据块算法getnextfreeblock()得到一个数据块号,记入某一地址表变量中。

  ⑶读出这个数据块,判断其尾部是否全部连续为0,若不是,则回到(2),若是,则进行(4)。

  ⑷首先用系统函数fstat得到/tmp/xx的i节点号,然后将(2)步所得的地址表写入索引节点的地址表中(注意间址问题),并根据数据块个数和最后一块中有效数据长度计算出文件大小,写入i节点的di_size字段。

  ⑸回写系统的索引节点表即可。

  需要说明的是,第一,系统分配数据块的算法因不同的UNIX版本而不同;第二,有的UNIX如SCO UNIX 5.0版,其空闲数据块的分配和回收是使用一种动态链表的数据结构来实现的,它们的文件恢复更加容易,只要在空闲链表中的表尾去寻找即可,笔者另行描述。

  2. 根据内容恢复。

  若现场已被破坏,即硬盘发生过写操作,那么只好根据内容来恢复。而且,由于UNIX是一个多进程、多用户系统,它每一次开关机或硬件、通讯故障等都会记录系统日志、.sh_history等,硬盘现场被破坏可能性极大。因此讨论按内容恢复的方法具有更大的实用价值。笔者经过实际探索得出下列四种恢复策略供参考。

  ⑴关键字搜索法

  如果知道被删除的文件内容中若干字节的内容,而且该文件长度又不超过一个磁盘块,那么可以在整个文件系统中搜索这一字节串,得出一个文件所在的数据块,将它们的块号填入一个i节点,即可恢复一个文件,搜索文件系统的算法很简单,说明如下:

  a. #df -k 确定文件系统的设备文件名(如/dev/root)

  b.用下述函数搜索,若成功,返回数据块号,反之返回-1。其中fsname是文件系统的设备名,如/dev/root,comp()参数是实现搜索条件的函数。

  long searchfs(char *fsname , int comp())

  {

  FILE *fp;

  char buf[1024];

  long i=0;

  fp=fopen(fsname,"r");

  while (!feof(fp))

  {

  fread(buf,1024,1,fp);

  if (comp()) /* 检查是否符合搜索条件 */

  return i; /* 若成功返回块号 */

  i++;

  }

  fclose(fp);

  return -1; /* 未找到符合条件的块,返回-1*/

  }

  ⑵精确长度搜索法

  如果知道被删除文件的精确长度(字节数),那么可根据一个数据块的大小,计算出文件的最后一个数据块中数据的精确长度,该数据块中其他字节必然是全0。根据这一条件,通过搜索整个文件系统,找出其中符合条件的数据块,若出现多个块符合要求,则还需要根据其他条件区分。但不管怎样,根据精确长度分析也是恢复数据的一个策略。

  ⑶内容关联法

  如果知道文件内容中存在某种可实现的关联,例如文件的校验和,或者文件内容的某种上下文关系,那么也可通过搜索整个文件系统,通过反复尝试寻找符合关联条件的磁盘数据块,进而恢复一个文件。

  ⑷环境比较法

  如果知道删除文件所在的文件系统的安装过程,那么,另行找一台完全相的机器,按原来完全相同的步骤安装相同版本的UNIX和相应的其他软件,可以想象,新的机器环境会与原来的环境基本相同,比较两个机器上相同文件系统的内容,可以推断出被删除文件的大致位置,至少可以大大减少查找的范围,一旦查找的范围足够小时,可以用逐个观察和尝试的方法结合其他条件恢复数据,降低恢复的难度,增加恢复的可靠性。

  UNIX系统下文件系统恢复的具体实现依赖于不同操作系统和不同版本的具体文件系统结构和磁盘块分配算法。本文试图总结出一种一般性的思路和策略,限于篇幅,不能详细讨论它们的具体实现过程。

摘自:ccpi.gov.cn
2012-08-24 10:17:21 dwinter1001 阅读数 835

文件的存取权限 UNIX文件的存取有三种权限:

权限

普通文件的存取权限

目录的存取权限

r

具有读取文件的权利

能读取文件名称

w

具有写入文件的权利

能建立和删除文件,可以改变文件名

x

具有执行文件的权利

能使用该目录下的文件(如cd命令)搜索文件等

能够存取文件的用户类型 有三种类型的用户可以存取文件:

用户类型

说明

owner

文件的拥有者

group

文件的拥有者所在的用户组

other

其他用户(非owner和非group)

每种类型的用户都有三种文件存取权限:r、w、x。

文件存取权限的显示 可以通过"ls -l"命令显示,如:

$ ls -l file1

显示如下:

-rwxr-xr--2 wjm newservice 321 Oct 17 09:33 file1

上行第2-4字符"rwx"表示此文件属主wjm对此文件的权利为"可读、可写、可执行", 上行第5-7字符"r-x"表示此工作组newservice内的用户对此文件的权利为"可读、不可写、可执行",上行第8-10字符"r--"表示其他用户对此文件的权利为"可读、不可写、不可执行"

文件存取权限的修改 用chmod命令修改文件的存取权限,chmod命令的格式如下:

格式1: chmod symbolic_mode file...

格式2: chmod absolute_mode file...

这里只介绍符号模式(symbolic_mode), 符号模式的命令格式如下:

chmod [who] op permision file...

who项表示用户类型,它的内容为以下一项或多项:

u 拥有者(user--- owner)

g 与拥有者同一组的用户(group)

o 其他人(other)

a 所有人(all)

op项表示动作:

+ 表示要加上permission指定的权利

- 表示要取消permission指定的权利

permission项为存取权限,它的内容为以下一项或多项:

r 表示可读

w 表示可写

x 表示可执行

举例:

chmod u+w test report 拥有者对test和report文件“可写”

chmod u-x abC c 拥有者对abC c文件不可执行

chmod u+rwxmyfile1 拥有者对myfile“可读、可写、可执行”

chmod ugo+rwxmyfile2 任何人都对myfile“可读、可写、可执行”

改变文件属主及文件所在组 改变文件属主的格式如下:

chown 属主名 文件名

必须对文件具有write权利才可改变文件的拥有者。

改变文件所在组的格式如下:

chgrp 组名 文件名

必须是文件的拥有者或supervisor才能改变文件组别的归属。

举例:

chown wjm test1

chgrp newservice test1

UNIX之临时文件

阅读数 574

没有更多推荐了,返回首页