现在的位置: 首页 > 操作系统 > 正文

Linux文件权限与目录管理

2014年11月22日 操作系统 ⁄ 共 3519字 暂无评论 ⁄ 阅读 896 次
文章目录

在ls –al命令列出的档案详情中,一行从前到后字段的含义分别为:权限、连结数、拥有者、群组、档案容量、修改日期、档案名。

权限详解

在权限中,如drwxrwxrwx,第1个字符是档案类型,然后3个是拥有者权限,然后3个是群组权限,最后3个是其他人权限。

第1个字符,为d则表示是目录,为-则表示为文件,为l则表示为连结档(link file,快捷方式),为b则表示为装置文件里面的可供储存的接口设备(可随机存取装置),为c则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来3个一组的权限,如rwx,其中,[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[-]。当权限为r--时,表示只能读到(看到)这一文件,但并不具有x执行权限,也就不能打开目录或文件。

权限更改

  • chgrp(change group):改变档案所属群组,语法:chgrp [-R] grp_name dir/file_name。其中,-R表示递归(recursive)修改,限目录下所有目录、文件群组都更改。
  • chown(change owner):改变档案拥有者,甚至可以连同群组一起修改,语法:chown [-R] own_name[:grp_name] dir/file_name。其中,群组前“:”也可用“.”,不过通常用“:”,因为“.”可能造成系统误判。更改群组也可使用该命令,只需要把前面的own省略即可。
  • chmod:改变档案权限,在更改权限时也可以使用数字,其对应关系为r:4、w:2、x:1。如777(4+2+1=7)权限就是rwxrwxrwx,740就是rwxr-----,其他人权限为0即文件对其他人不可见。语法:chmod xxx dir/file_name,其中xxx表示数字权限。若要同时更改own、group和other权限,则可分别指定身份。身份u为own权限、g为group权限、o为other权限、a为所有人权限,如:chmod u=rwx,g=rx,o=rx filename,或者chmod u=rwx,go=rx filename。这语句中“=”代表将指定身份设定为特定权限,我们也可以替换为“+”或“-”,代表给特定身份增加或去除特定权限。如,chmod a+x filename,表示给所有人增加可执行权限。

群组、拥有者更改多用于cp文件以后,因为cp会复制执行者的属性与权限,当档案要提供给他人使用时,就需要更改了。

目录路径相关符号

  • .:代表此层目录;
  • ..:代表上层目录;
  • -:代表前一个工作目录;
  • ~:代表当前用户的家目录;

目录操作常用指令

【cd】(change directory):变换目录,常见用法如下:

  • cd ~user,到user用户的家目录;
  • cd ~,回到当前用户的家目录;
  • cd,也是回到当前用户的家目录;
  • cd ..,回到上层目录;
  • cd -,回到刚才的目录;
  • cd /dir1/dir2/dir3,到指定的绝对路径;
  • cd ../dir1,到当前路径上层目录下的dir1目录;

【pwd】(print working directory):显示当前目录;

【mkdir】(make directory):创建新目录,语法:mkdir [-mp] dir_name,-p在建立多层目录时使用,-m指定目录权限,若不指定则使用umask权限,如755,查看umask权限使用指令:umask –S。umask权限可以自己设定,后面跟3位数字,如002则表示拿掉other的2权限,即写权限。

【rmdir】删除一个空目录,若目录下有内容则无法删除,语法:rmdir [-p] dir_name,-p在删除多层空目录时使用;

【$PATH】指令执行文件路径变量。

为什么我可以在任何地方执行/bin/ls这个指令呢?为什么我在任何目录下输入ls就一定可以显示出一些信息而不会说找不到该/bin/ls指令呢?这是因为环境变量PATH的帮助所致!如,当我们在执行一个指令ls的时候,系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行!

【ls】列出当前目录下档案,常用选项:

  • -a,列出全部档案,连同隐藏档(开头为.的档案);
  • -A,列出全部档案,但不包含.与..这两个目录;
  • -d,仅列出目录本身,而不是列出目录内的档案数据;
  • -f,直接列出结果,不排序(默认排序);
  • -h,档案容量以人易读方式列出(如GB、KB);
  • -i,列出inode号码;
  • -l,列出详细信息,包含总容量、属性、权限等;
  • -n,列出UID和GID而非拥有者和群组名;
  • -R,连同子目录内容一起列出;
  • -r,反向排序;
  • -t,以时间排序(默认以档案名);
  • -S,以档案容量大小排序;
  • --color=[never|always|auto],分别为依据档案特色不着色、着色和系统自己判断;

cp】(copy),复制文件或目录,语句:cp [选项] source destination,常用选项:

  • -a,相当于-pdr,完全按来源文件,包括其属性及子目录文件等一并复制;
  • -d,若来源文件为链接文件的属性,则复制链接文件属性而非档案本身;
  • -i,若目录文件已存在,覆盖时会先询问;
  • -l,进行硬式连结的连结档建立,而非复制档案本身;
  • -p,连同档案的属性一起复制过去,而非使用默认属性;
  • -r,递归复制,目录下所有内容复制;
  • -s,复制成为快捷方式档案;
  • -u,虽目标文件存在,若来源文件比目录文件新则覆盖更新;

使用时,有时目录是一个“.”则表示将来源文件复制到当前目录。

rm】删除文件或目录,语法:rm [选项] dir/file_name,常用选项:

  • -f,就是force的意思,忽略不存在的档案,不会出现警告信息;
  • -i,互动模式,在删除前会询问使用者是否执行;
  • -r,递归删除,将目录下所有内容删除;

mv】移动文件或目录,或重命名,语法:mv [选项] source destination,常用选项:

  • -f:force强制的意思,如果目标档案已经存在,不会询问而直接覆盖;
  • -i:若目标档案(destination)已经存在时,就会询问是否覆盖!
  • -u:若目标档案已经存在,且source比较新,才会更新(update)

bashname|dirname】获取路径的文件名或目录部分;

touch】新建文件,文件umask默认权限为644(文件没有1权限),目录umask默认权限为755;

查找】通常先使用whereis或locate,若未找到再使用find。因为前两者利用数据库来搜索数据速度较快并不搜索硬盘,较省时间和资源;而find则速度慢,且搜索硬盘。

磁盘管理

Linux系统的档案有权限(rwx)和文件属性(拥有者、群组、时间参数等),这些数据放置在inode中,而实际数据则放在data block中。每个inode和block都有编号,其具体含义如下:

  • superblock:记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。
  • inode:记录记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的block号码。
  • block:实际记录档案的内容,若档案太大时,会占用多个block。

挂载点一定是目录,该目录为进入该文件系统的入口。因此并不是你有任何文件系统都能使用,必项要挂载到目录树的某个目录后,才能够使用该文件系统的。

df】列出文件系统的整体磁盘使用量,语法:df [选项] file/dir_name,常用选项:

  • -k,以KB的容量显示文件系统;
  • -m,以MB的容量显示文件系统;
  • -h,以人易识别的容易显示文件系统,如GB、MB、KB;
  • -H,以M=1000K取代M=1024K的进位读方式;
  • -T,连同该partition的filesystem名称也列出;
  • -i,不用硬盘容量,而以inode的数据来显示;

如:df –h /etc,这样就可以知道etc目录已用容量和可用容量等。

du】评估文件系统的磁盘使用量(帯用在推估目录所占容量),语法:du [选项] file/dir_name,常用选项:

  • -h,以人易识别的GB、MB格式显示;
  • -s,列出总量而不列个别目录容量;
  • -k和-m,以KB和MB显示;

与df不一样的是,du这个指令其实会直接到文件系统内去搜寻所有的档案数据。

声明:该笔记转载自《鸟哥的Linux私房菜》,仅用于个人学习,若侵犯到您的版权敬请告知!

linux

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?