改变所有者: chown

chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

实例

  1. chown -R user /usr/temp # 递归处理 temp 下的所有文件,将其所有权赋予 user
  2. chown -R user:market /usr/temp # 把文件(夹) temp 所有权设置给 uesr,添加到 market 组

改变目录权限: chmod

chmod 命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

权限范围的表示法如下:

  • u User,即文件或目录的拥有者;
  • g Group,即文件或目录的所属群组;
  • o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
  • a All,即全部的用户,包含拥有者,所属群组以及其他用户;

权限设置的表示法如下:

  • r 读取权限,数字代号为“4”;
  • w 写入权限,数字代号为“2”;
  • x 执行或切换权限,数字代号为“1”;

  • - 不具任何权限,数字代号为“0”;
  • s 特殊功能说明:变更文件或目录的权限。

权限设置:

  • <权限范围>+<权限设置> 开启权限范围的文件或目录的该选项权限设置;
  • <权限范围>-<权限设置> 关闭权限范围的文件或目录的该选项权限设置;
  • <权限范围>=<权限设置> 指定权限范围的文件或目录的该选项权限设置;

实例

  1. chmod 777 temp # 改变 temp 权限为 777
  2. chmod u+w temp # 对u属用户增加写权限
  3. chmod u-x temp # 对u属用户删除执行权限
  4. chmod u+x,g+w temp  # 为文件 temp 设置自己可以执行,组员可以写入的权限
  5. chmod u=rwx,g=rw,o=r temp # 对不同的属设置不同的权限
  6. chmod a+x temp  # 对文件 temp 的u,g,o都设置可执行属性

改变文件属性: chattr

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护 /、/dev、/tmp、/var 目录。lsattr命令是显示chattr命令设置的文件属性。这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr 命令用来改变文件的隐藏权限。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下几种模式:

格式:

  1. chattr [ -RVf ] [ -v version ] [ mode ] files

属性共有以下几种模式:

  • a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
  • A 不再修改这个文件或目录的最后访问时间(atime)
  • b 不再更新文件或目录的最后存取时间;
  • c 将文件或目录压缩后存放
  • d 使用dump命令备份时忽略本文件/目录
  • D 检查压缩文件中的错误
  • i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
  • s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
  • S 文件内容在变更后立即同步到硬盘(sync)
  • u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
  • t 让文件系统支持尾部合并(tail-merging)
  • x 可以直接访问压缩文件中的内容

选项

  • -R 递归处理,将指令目录下的所有文件及子目录一并处理;
  • -v<版本编号> 设置文件或目录版本;
  • -V 显示指令执行过程;

  • +<属性> 开启文件或目录的该项属性;
  • -<属性> 关闭文件或目录的该项属性;
  • =<属性> 指定文件或目录的该项属性。

文件防篡改

用 chattr 命令防止系统中某个关键文件被修改:

  1. chattr +i /etc/fstab

然后试一下 rm、mv、rename 等命令操作于该文件,都是得到 Operation not permitted 的结果。

让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:

  1. chattr +a /data1/user_act.log

查看文件的隐藏权限

lsattr 命令用于显示文件的隐藏权限,格式为 lsattr [参数] 文件。在Linux系统中,文件的隐藏权限必须使用 lsattr 命令来查看,平时使用的ls之类的命令则看不出端倪:

  1. $ ls -al linuxprobe
  2. -rw-r--r--. 1 root root 9 Feb 12 11:42 linuxprobe

一旦使用lsattr命令后,文件上被赋予的隐藏权限马上就会原形毕露。此时可以按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉:

  1. $ lsattr linuxprobe
  2. -----a---------- linuxprobe
  3. chattr -a linuxprobe
  4. $ lsattr linuxprobe
  5. ---------------- linuxprobe
  6. $ rm linuxprobe
  7. rm: remove regular file 'linuxprobe'? y