文档属性)
我们都知道,在windows下如果我们要查看文件或目录文件的属性的话,我们可以采用在目标文件上右键然后选择属性的方式来查看。同样在linux下文件也是有着自己的属性的,接下来是我个人在此问题上的总结,将会用最简洁的方式表达出来。
文档属性查看命令:ls -l
============================================================================ [root@san01 ~]# ls -l total 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.sh drwxr-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 -lh total 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.sh drwxr-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 ~]# umask 0022 #第一个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 newdir drwxr-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 newfile hi #原内容 [root@san01 ~]# chattr +a newfile [root@san01 ~]# echo > newfile -bash: newfile: Operation not permitted #单纯的修改内容被拒绝了 [root@san01 ~]# echo good >>newfile [root@san01 ~]# cat newfile hi #成功追加了新内容 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 newfile newfile [root@san01 ~]# echo $? 0 #echo $?的结果不为0,代表上一条命令执行失败 [root@san01 ~]# ls good ls: cannot access good: No such file or directory [root@san01 ~]# echo $? 2 ==================================================================================
!$
作用:上一条命令的最后一个参数,以tab或空格来作为参数的间隔。
================================================================================== #情形1 [root@san01 ~]# ls -l /etc -d drwxr-xr-x. 59 root root 4096 Mar 10 00:04 /etc [root@san01 ~]# ls !$ ls -d . #情形2 [root@san01 ~]# ls -ld /etc drwxr-xr-x. 59 root root 4096 Mar 10 00:04 /etc [root@san01 ~]# ls !$ ls /etc ...内容省略... #对比情形1和情形2,我们可以大概了解"!$"的作用。 ==================================================================================