chmod命令(change mode)
使用 ls -l 可以看到文件或目录的权限。权限一共有9位,分为3段,分别代表拥有者权限、拥有组权限和其他人权限。每一段都有3位,分别是 r(读)、w(写)和 x(执行)。若没有相应的权限,则使用 - 代替。
每种权限的意义:
r:对于目录来说,允许列出目录的内容。(ls)
对于文件来说,允许查看文件内容。(cat、more、less、head、tail、tac)
w:对于目录来说,允许在其下创建删除文件。(mkdir、touch、rm、cp、mv)
对于文件来说,允许编辑其内容。(vi、vim)
x:对于目录来说,允许进入目录或以长格式显示目录。(cd、ls -l)
对于文件来说,允许执行。(脚本需要x权限)
权限的数字表示法:r=4,w=2,x=1。
chmod xyz 文件或目录名:更改文件的权限。(xyz表示数字,x代表拥有者权限,y代表拥有组权限,z代表其他人权限)
权限的字符表示法:u(拥有者权限)、g(拥有组权限)、o(其他人权限)、a(全部,相当于ugo)。
chmod u=?,g=?,o=? 文件或目录名:更改文件权限。(?代表相应权限,若什么权限都没有,则使用- 代替。若拥有者和拥有组权限一样,则可以直接合并写成ug=?。若u、g、o都一样,则可以直接写成a=?)
此外,我们还可以针对u、g、o和a,增加或减少它们的某个权限。
chmod u+?,g-?,o+? 文件或目录名
ls -l 看到的第一列的最后面一位的 . 代表受selinux制约,如果关闭selinux则没有这个 . 。
永久关闭selinux需要进入配置文件 /etc/selinux/config。
chmod只对当前目录或文件生效,不会对子目录或文件产生影响。
chmod -R :递归更改权限。(更改当前目录以及所有子目录或子文件的权限)
chown命令(change owner)
chown 拥有者 目录或文件:更改目录或文件的拥有者。
chgrp 拥有组 目录或文件:更改目录或文件的拥有组。
chown 拥有者:拥有组 文件或目录:更改文件或目录的拥有者和拥有组。(同时修改)
chown :拥有组 文件或目录:更改文件或目录的拥有组。(相当于chgrp命令)
chown -R:递归更改目录及子目录的拥有者(组)。
只有root用户可以更改文件的拥有者和拥有组。
umask值
umask值用于设置用户在创建文件或目录时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。
umask :查看当前用户的umask值。一共有四位,第1位用于定义特殊权限,我们一般不予考虑。与一般权限有关的是后3位数字,所以一般使用后三位。
umask 数字:设置umask值。(临时生效,若想永久有效,则需要修改/etc/bashrc)
目录的预设权限是777,文件的预设权限是666(文件一般没有x权限)。
root用户的默认umask值是022,所以root用户新建目录或者文件的默认权限为:
目录:rwxrwxrwx(777) - ----w--w-(022) = rwxr-xr-x(755)
文件:rw-rw-rw-(666) - ----w--w-(022) = rw-r--r--(644)
普通用户的默认umask值为002,所以普通用户新建目录或者文件的默认权限为:
目录:rwxrwxrwx(777) - -------w-(002) = rwxrwxr-x(775)
文件:rw-rw-rw-(666) - -------w-(002) = rw-rw-r--(664)
计算默认权限不能直接使用数字做减法,有时候可能会出错。比如说umask值为003,如果直接做减法,那么文件的默认权限为666-003=663。而通过真实计算得到:rw-rw-rw-(666) - -------wx(003) = rw-rw-r--(664),所以最好还是转化为权限位来计算默认权限而不是直接用数字做减法。
隐藏权限
chattr :设置文件或目录的隐藏属性。
lsattr :查看文件或目录的隐藏属性。
对于文件来说:
i权限:不能被修改、删除、移动(改名)、更改时间戳、更改普通权限,可以查看、复制。
chattr +i 文件名:给文件设置i权限。
chattr -i 文件名:去掉文件的i权限。
若一个文件被设置了i权限,则使用vi修改它之后无法保存退出,只能q!退出。但是当前目录下会自动生成一个同名的文件(后缀多了一个~),这是缓存文件,如果正常编辑之后wq保存退出,那么这个缓存文件就会覆盖原文件,这里无法正常保存退出,所以这个缓存文件就不会覆盖原文件。
a权限:只能追加文件内容,不能修改、删除、移动(改名)、更改普通权限,可以复制、查看、更改时间戳。
对于目录来说:
lsattr 目录名:查看当前目录底下所有子目录或子文件的隐藏权限。
lsattr -d 目录名:查看目录本身的隐藏权限。
i权限:不能删除(自己和子目录)、移动(改名)(自己和子目录)、在里面创建文件或目录、更改普通权限(自己)、更改时间戳(自己)。可以在子目录中创建文件或者编辑子文件的内容、更改子目录或文件的权限以及时间戳。
a权限:不能删除(自己和子目录)、移动(改名)(自己和子目录)、更改普通权限(自己)。可以在里面创建文件或目录、在子目录中创建文件或者编辑子文件的内容、更改子目录或文件的权限以及时间戳、更改自己的时间戳。
原文地址:http://blog.51cto.com/12272471/2092232