改变所有者: chown
chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
只有文件主和超级用户才可以便用该命令。
实例
chown -R user /usr/temp # 递归处理 temp 下的所有文件,将其所有权赋予 user
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
特殊功能说明:变更文件或目录的权限。
权限设置:
<权限范围>+<权限设置>
开启权限范围的文件或目录的该选项权限设置;<权限范围>-<权限设置>
关闭权限范围的文件或目录的该选项权限设置;<权限范围>=<权限设置>
指定权限范围的文件或目录的该选项权限设置;
实例
chmod 777 temp # 改变 temp 权限为 777
chmod u+w temp # 对u属用户增加写权限
chmod u-x temp # 对u属用户删除执行权限
chmod u+x,g+w temp # 为文件 temp 设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r temp # 对不同的属设置不同的权限
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文件系统上的文件或目录属性,这些属性共有以下几种模式:
格式:
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 命令防止系统中某个关键文件被修改:
chattr +i /etc/fstab
然后试一下 rm、mv、rename 等命令操作于该文件,都是得到 Operation not permitted 的结果。
让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:
chattr +a /data1/user_act.log
查看文件的隐藏权限
lsattr
命令用于显示文件的隐藏权限,格式为 lsattr [参数] 文件
。在Linux系统中,文件的隐藏权限必须使用 lsattr
命令来查看,平时使用的ls之类的命令则看不出端倪:
$ ls -al linuxprobe
-rw-r--r--. 1 root root 9 Feb 12 11:42 linuxprobe
一旦使用lsattr命令后,文件上被赋予的隐藏权限马上就会原形毕露。此时可以按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉:
$ lsattr linuxprobe
-----a---------- linuxprobe
chattr -a linuxprobe
$ lsattr linuxprobe
---------------- linuxprobe
$ rm linuxprobe
rm: remove regular file 'linuxprobe'? y