文档属性)
我们都知道,在windows下如果我们要查看文件或目录文件的属性的话,我们可以采用在目标文件上右键然后选择属性的方式来查看。同样在linux下文件也是有着自己的属性的,接下来是我个人在此问题上的总结,将会用最简洁的方式表达出来。
文档属性查看命令:ls -l
============================================================================[root@san01 ~]# ls -ltotal 40-rw-------. 1 root root 967 Feb 13 05:17 anaconda-ks.cfg-rw-r--r--. 1 root root 72 Mar 9 21:42 crontab.shdrwxr-xr-x. 4 root root 4096 Mar 5 05:00 dir4-rw-r--r--. 1 root root 8749 Feb 13 05:17 install.log-rw-r--r--. 1 root root 3161 Feb 13 05:15 install.log.syslog-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin-rw-r--r--. 1 root root 183 Mar 5 05:30 test11-rw-r--r--. 1 root root 14 Mar 5 05:33 test22-rw-r--r--. 1 root root 0 Mar 5 05:28 test33[权限位] [inode连接数] [属主] [属组] [大小] [mtime] [文件名称]============================================================================
让我们以"-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin"为例
权限位
- rw- r-- r--. 1 root root 512 Feb 18 19:34 mbr.bin
[1][234][567][890]
第1位代表文件类型:
- 普通文件
d 目录文件
l 链接文件
b 块设备文件(储存设备)
s socket文件(用于通信)
p pipe文件
...
第2-4位代表属主的权限
r-read;w-write;x-execute分别对应着"读、写、执行"三个权限,属主如果不具有此权限则显示为"-"
第5-7位代表属组的权限
r-read;w-write;x-execute分别对应着"读、写、执行"三个权限,属主如果不具有此权限则显示为"-"
第8-0位代表其他人的权限
r-read;w-write;x-execute分别对应着"读、写、执行"三个权限,属主如果不具有此权限则显示为"-"
PS:至于权限位最后的那个点,那是selinux的存在导致的,如果文件拥有selinux上下文环境则显示"."
PS:执行权限对于目录文件来说,代表着是否可以进入此目录的含义。
inode连接数
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
代表与此文件inode号相同的文件数量(至于inode详细情形,我们以后在探讨)
属主
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
代表了此文件归属于哪个用户
属组
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
代表了此文件归属于哪个用户组
文件大小
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
默认大小的单位是字节,我们可以用ls -lh命令来让它显示单位
==================================================================================[root@san01 ~]# ls -lhtotal 40K-rw-------. 1 root root 967 Feb 13 05:17 anaconda-ks.cfg-rw-r--r--. 1 root root 72 Mar 9 21:42 crontab.shdrwxr-xr-x. 4 root root 4.0K Mar 5 05:00 dir4-rw-r--r--. 1 root root 8.6K Feb 13 05:17 install.log #不是以字节为单位的会显示单位-rw-r--r--. 1 root root 3.1K Feb 13 05:15 install.log.syslog-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin #以字节为单位的依旧不会显示-rw-r--r--. 1 root root 183 Mar 5 05:30 test11-rw-r--r--. 1 root root 14 Mar 5 05:33 test22-rw-r--r--. 1 root root 0 Mar 5 05:28 test33==================================================================================
mtime
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
文件的修改(modify)时间
文件名称
-rw-r--r--. 1 root root 512 Feb 18 19:34 mbr.bin
与文件属性相关的命令)
chmod
作用:修改文件权限
语法
chmod [选项] [u=rwx,][g=rwx,][o=rwx] filename
chmod 744 filename #r=4,w=2,x=1
chmod u+x filename
选项:
-R 递归改变子目录及子目录下所有文件。
==================================================================================#chmod [选项] [u=rwx,][g=rwx,][o=rwx] filename[root@san01 ~]# chmod u=rwx,g=rwx,o=rwx mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrwxrwx. 1 root root 512 Feb 18 19:34 mbr.bin#可以单独改某个角色的权限[root@san01 ~]# chmod o= mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrwx---. 1 root root 512 Feb 18 19:34 mbr.bin#chmod 744 filename 个人觉得最常用[root@san01 ~]# chmod 700 mbr.bin[root@san01 ~]# ls -l mbr.bin-rwx------. 1 root root 512 Feb 18 19:34 mbr.bin#chmod u+x filename 特殊情况下很方便[root@san01 ~]# chmod g+rw mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrw----. 1 root root 512 Feb 18 19:34 mbr.bin==================================================================================
chown
作用:修改文件属主、属组
语法:chown [选项] user:group filename
选项:
-R 递归改变子目录及子目录下所有文件。
==================================================================================[root@san01 ~]# ls -l mbr.bin-rwxrwx---. 1 root root 512 Feb 18 19:34 mbr.bin[root@san01 ~]# chown nagios:nagios mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrwx---. 1 nagios nagios 512 Feb 18 19:34 mbr.bin#还可以单独改变属主或属组[root@san01 ~]# chown root mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrwx---. 1 root nagios 512 Feb 18 19:34 mbr.bin#单独修改属组[root@san01 ~]# chown :root mbr.bin[root@san01 ~]# ls -l mbr.bin-rwxrwx---. 1 root root 512 Feb 18 19:34 mbr.bin==================================================================================
umask
作用:通过设置umask值,来控制新建目录文件及普通文件的初始权限
配置文件(初始化):
全局 /etc/profile
个人 ~/.bashrc #"~"是家目录的意思
语法:
查看 umask
修改 umask=022
原理:
目录文件的默认完整权限是777(rwxrwxrwx)
减掉umask的022(----w--w-),所以新建目录文件权限为(rwxr-xr-x)755;
普通文件的默认完整权限是666(rw-rw-rw-)
减掉umask的022(----w--w-),所以新建目录文件权限为(rw-r--r--)644。
==================================================================================[root@san01 ~]# umask0022#第一个0我们会在之后介绍到,它代表的是特殊权限位的umask#创建普通文件[root@san01 ~]# touch newfile;ls -l newfile-rw-r--r--. 1 root root 0 Mar 10 00:10 newfile#022+644=666#创建目录文件[root@san01 ~]# mkdir newdir;ls -ld newdirdrwxr-xr-x. 2 root root 4096 Mar 10 00:13 newdir#022+755=777==================================================================================
PS:普通文件的默认完整权限之所以是666,是因为普通文件默认不需要执行权限。
chattr
作用:设置文件的隐藏权限
语法:chattr +隐藏权限 filename
隐藏权限:
a 這個档案将只能增加资料,而不能刪除也不能修改资料,只有root才能设定这个属性
i 这个档案将不能做内容、名称、权限、设定连接文件等等任何的修改
==================================================================================#隐藏权限a[root@san01 ~]# cat newfilehi #原内容[root@san01 ~]# chattr +a newfile[root@san01 ~]# echo > newfile-bash: newfile: Operation not permitted #单纯的修改内容被拒绝了[root@san01 ~]# echo good >>newfile[root@san01 ~]# cat newfilehi #成功追加了新内容good#i隐藏权限i[root@san01 ~]# chattr +i test11[root@san01 ~]# echo good > test11 #修改内容被拒绝-bash: test11: Permission denied[root@san01 ~]# echo good >> test11 #追加内容被拒绝-bash: test11: Permission denied[root@san01 ~]# rm -rf test11 #删除文件被拒绝rm: cannot remove `test11': Operation not permitted[root@san01 ~]# mv test11 testaa #修改文件名称被拒绝mv: cannot move `test11' to `testaa': Operation not permitted==================================================================================
lsattr
作用:查看文件的隐藏属性
语法:lsattr filename
选项:
-R 连同子目录的资料也一同显示出来
-d 如果接的是目录,列出目录本身的属性,而非目录内的文件属性
==================================================================================#查看文件特殊权限[root@san01 ~]# lsattr test11 newfile----i--------e- test11-----a-------e- newfile#删除文件特殊权限[root@san01 ~]# chattr -i test11[root@san01 ~]# chattr -a newfile[root@san01 ~]# lsattr test11 newfile-------------e- test11-------------e- newfile==================================================================================
扩展命令)
history / !
作用:查看和调用历史命令
配置文件(初始化history记录的个数):
全局 /etc/profile
个人 ~/.bashrc
语法:
history
!! 执行上一条命令
!n 执行~/.bash_history里的第n条命令
!-n 执行~/.bash_history里的倒数第n条命令
!关键字 执行关键字匹配的倒数第一条命令,例如!cp就是执行最后一次执行cp的那条命令
==================================================================================#查看命令history[root@san01 ~]# history|tail 784 ls -l /etc -d 785 ls -d 786 ls -ld /etc 787 ls /etc 788 ls good 789 echo $? 790 ls newfile 791 echo $? 792 history|grep 793 history|tail #!!代表着执行上一条命令 #[root@san01 ~]# !!history|tail #这里显示了真正执行的命令 784 ls -l /etc -d 785 ls -d 786 ls -ld /etc 787 ls /etc 788 ls good 789 echo $? 790 ls newfile 791 echo $? 792 history|grep 793 history|tail==================================================================================
echo $?
作用:查看上一条命令是否成功,0成功,非0失败
==================================================================================#echo $?的结果为0,代表上一条命令执行成功[root@san01 ~]# ls newfilenewfile[root@san01 ~]# echo $?0#echo $?的结果不为0,代表上一条命令执行失败[root@san01 ~]# ls goodls: cannot access good: No such file or directory[root@san01 ~]# echo $?2==================================================================================
!$
作用:上一条命令的最后一个参数,以tab或空格来作为参数的间隔。
==================================================================================#情形1[root@san01 ~]# ls -l /etc -ddrwxr-xr-x. 59 root root 4096 Mar 10 00:04 /etc[root@san01 ~]# ls !$ls -d.#情形2[root@san01 ~]# ls -ld /etcdrwxr-xr-x. 59 root root 4096 Mar 10 00:04 /etc[root@san01 ~]# ls !$ls /etc...内容省略...#对比情形1和情形2,我们可以大概了解"!$"的作用。==================================================================================