文档属性)

我们都知道,在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,我们可以大概了解"!$"的作用。==================================================================================