文件和目录权限chmod
1、文件或目录的权限
文件属性共11位,有的没有最后一位的点 . 共10位;
从左往右数:
第1位:描述文件类型;
第2-10位:表示权限,每3位一组;
第11位:表示是否使用了selinux,或者是否设置了acl。
1.1、第1位:描述文件类型;
d表示目录
-表示文档(包括文本文件、二进制文件等)
c表示字符串设备(如鼠标、键盘、tty等)
b表示块设备(如光驱、磁盘等 )
s表示socket文件(用于通信的文件)
l表示软连接文件
1.2、第11位:表示是否使用了selinux,或者是否设置了acl。
使用了selinux,最后一位就是点 . ;
如果设置了acl,最后一位就是 + ;
如果都没有,就是空缺的,文件属性就只有10位了;
1.3、第2-10位:表示权限,每3位一组;
r:可读,数值等于4(二进制0100);
w:可写,数值等于2(二进制0010);
x:可执行,数值等于1(0001);
-:非,放在r位置表示不可读,放在w位置表示不可写,放在x位置表示不可执行,数值等于0(0000);
如果一个文件的属性是 -rwxr-xr--.,用数字表示就是754,rwx=4+2+1,r-x=4+0+1,r--=4+0+0,表示文件的所有者(user)有rwx权限,
所属组(group)有r-x权限,
其他用户组(others)有r--权限;
命令chmod改变文件权限
1、直接改变文件权限
chmod(change mode),用来改变文件或目录的权限,在没有加-R选项的时候,改变的仅仅是目录本身不会改变目录下文件的权限;
#chmod [-R] xyz 文件名
-R是选项,表示连级更改,比如如果改的是文件夹的属性就连同文件夹下的文件属性一并更改;
xyz,表示数字,777,644等等;
文件名,可以是文件也可以是文件夹;
chmod除了用数字改变权限外,还有另外一种方式,分别写出user,group,others的权限,如
#chmod u=rwx, g=rx, o=wx 文件名
-不能写,比如不可以写成g=r-x;
2、增加或删除权限
chmod a+x 文件名,给文件的user,group,others全部加上x权限(也可以加其他w,r 权限),当然也可以a-x全去掉。
chmod可以只针对user,grop,others增减某权限;
例如:#chmod u-x 1.txt 删除user用户1.txt的x权限。
更改所有者chown和所属组chgrp
#cat /etc/passwd命令在末尾看到还有一个colin用户。
通过#chown colin 1.txt可以把所有者改为colin;
chown不但可以改文件的所有者, 也可以改文件的所属组;
chown AA : BB 1.txt 一次性把1.txt的所有者和所属组;
chown AA 1.txt 只跟一个字符串,默认只改所有者;
chown : BB 1.txt 只跟一个冒号加字符串,只改所属组;
chown -R AA : BB /tmp/a/ 把a/目录和所有子目录和文件的所有者和所属组都更改了;
命令umask
1、什么是umask
当我们登录系统之后创建一个文件总是有一个默认权限的,这个权限是怎么来的呢?这就是umask干的事情。
umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。也可以直接用命令#umask 数字 修改。
1、umask计算
系统默认root用户的umask的值是0022;
普通用户的umask的值是0002;
目录默认都有x权限,这样才能打开,这样权限就是777(rwxrwxrwx);
文件默认没有x权限,不能执行,这样就是666(rw-rw-rw-);
umask值是0022的时候:
创建目录权限就是777-022=(rwxrwxrwx) - (----w--w-)=rwxr-xr-x=755;
创建文件权限就是666-022=(rw-rw-rw-)-(----w--w-)=rw-r--r--=644;
计算的时候一定按照(rw-rw-rw-)-(----w--w-)这种方式计算,以umask的值是0033为例:
如果只计算数字,创建文件就是666-033=633。
实际应该是,创建文件666-033=(rw-rw-rw-)-(----wx-wx)=rw-r--r--=644,这里 - 不论减去r、w还是x,任然是 - ;
2、umask查询
#umask查询umask的值;
3、umask数值更改
#umask 数值 改变umask的值;
计算的时候一定按照(rw-rw-rw-)-(----w--w-)这种方式计算,以umask的值是0033为例:
如果只计算数字,创建文件就是666-033=633。
实际应该是,创建文件666-033=(rw-rw-rw-)-(----wx-wx)=rw-r--r--=644
隐藏权限lsattr/chattr
1、lsattr查看附加权限
用来读取文件或者目录的特殊附加权限,用ls不能查看到附加权限;
lsattr [-aR] 文件名或目录
-a:类似于-a选项,显示目录下所有的文件,包括隐藏文件;
-R:相关联的子目录的数据一同列举出来;
-d:和ls命令一样,用于查看目录本身;
2、chattr修改附加权限
chattr [+-=] [Asaci] [文件或目录名]
用于改变文件在Linux系统中的附加权限。
+:增加;
-:去除;
=:设定为;
i:增加后,使文件不能被删除、重命名、设定连接、写入、新增数据,可以复制,可以做软连接;
a:增加后,文件只能被追加不能被删除,只有root用户能设定该属性;
A:增加该属性后,文件或目录的atime不可被修改;
2.1、i权限
i附加权限,使文件不能被删除、重命名、设定连接、写入、新增数据,可以复制,可以做软连接;
cp的时候不会复制i权限;
即使vi打开编辑后也无法保存;
touch更新时间也不行;
当一个目录被赋予i附加权限后,和文件一样,本身和内部文件都不能被删除,不能在目录中添加文件,但是如果目录中的文件没有i附加属性,可以修改这个文件里面的内容,但不能删除或改名字等;
2.2、a权限
a附加权限增加后,文件只能被追加不能被删除,可以touch更新时间,只有root用户能设定该属性;
当一个目录被赋予了a附加权限后,可以在目录里添加创建文件,可以修改文件内容,但是不能删除文件,即便是刚刚被添加进来的文件也不能被删除;