文件类型

与windows不同,linux中不同类型文件颜色不尽相同,可以通过文件名颜色或者文件属性来查看文件类型RHEL6基础之十四RHEL文件、目录属性管理_第1张图片

使用file命令查看文件类型

[root@justin file]# ls
check_traffic_v1.2.2.zip  Common_file  Directory  ifcfg-eth0
[root@justin file]# file Directory/
Directory/: directory
[root@justin file]#



权限、归属

在Linux系统中,系统中的每一个文件或目录都赋予了两种属性:访问权限和文件所有者,简称为“权限”和“归属”,Linux系统根据文件或目录的归属、访问权限来对用户访问数据的过程进行控制。

RHEL6基础之十四RHEL文件、目录属性管理_第2张图片

root用户是系统的超级用户,拥有完全的管理权限,因此文件、目录的权限限制对root用户将不起作用。

[root@justin file]# ls -l /etc/shadow
----------. 1 root root 1080 10月 11 10:04 /etc/shadow
[root@justin file]# su - justin
[justin@justin ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够
[justin@justin ~]$ su - root
密码:
[root@justin ~]# tail -1  /etc/shadow
study::15988:0:99999:7:::
[root@justin ~]#

/etc/shadow文件第一部分权限位显示任何用户均无权限,实际上root用户还是能够进行正常的读写操作,而普通用户是无法进行任何操作的

RHEL6基础之十四RHEL文件、目录属性管理_第3张图片


文件、目录的权限和归属

linux文件、目录权限分为属主、属组和其他用户三种权限,每种权限由三部分组成即读、写、执行权限,三种权限关系为属主权限>=属组权限>=其他用户权限。

[root@justin ~]# ll !$
ll /home/test
-r--rw-r-x. 1 justin study 0 10月 11 15:08 /home/test
[root@justin ~]#

justin对/home/test有读权限,也可以修改文件,此时需要强制执行才可

RHEL6基础之十四RHEL文件、目录属性管理_第4张图片

文件、目录默认权限

文件的默认是没有可执行权限,权限为644;由于x权限是控制切换目录的权限,默认目录拥有读取执行权限,权限为755

[root@justin default]# touch file
[root@justin default]# mkdir dir
[root@justin default]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 10月 11 15:21 dir
-rw-r--r--. 1 root root    0 10月 11 15:21 file
[root@justin default]#


权限设置

chmod

RHEL6基础之十四RHEL文件、目录属性管理_第5张图片

[root@justin default]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 10月 11 15:21 dir
-rw-r--r--. 1 root root    0 10月 11 15:21 file
[root@justin default]# chmod ug=rwx,o=r dir file
[root@justin default]# ll
总用量 4
drwxrwxr--. 2 root root 4096 10月 11 15:21 dir
-rwxrwxr--. 1 root root    0 10月 11 15:21 file
[root@justin default]# chmod 665 dir file
[root@justin default]# ll
总用量 4
drw-rw-r-x. 2 root root 4096 10月 11 15:21 dir
-rw-rw-r-x. 1 root root    0 10月 11 15:21 file
[root@justin default]# chmod a+r,u+w,u+x,g+x dir file
[root@justin default]# ll
总用量 4
drwxrwxr-x. 2 root root 4096 10月 11 15:21 dir
-rwxrwxr-x. 1 root root    0 10月 11 15:21 file
[root@justin default]#



归属设置

RHEL6基础之十四RHEL文件、目录属性管理_第6张图片

[root@justin ~]# touch file1
[root@justin ~]# ll file1
-rw-r--r--. 1 root root 0 10月 14 16:56 file1
[root@justin ~]# chown justin file1
[root@justin ~]# ll file1
-rw-r--r--. 1 justin root 0 10月 14 16:56 file1
[root@justin ~]# chown :justin file1
[root@justin ~]# ll file1
-rw-r--r--. 1 justin justin 0 10月 14 16:56 file1
[root@justin ~]# chown root:root file1
[root@justin ~]# ll file1
-rw-r--r--. 1 root root 0 10月 14 16:56 file1
[root@justin ~]#

Linux的chattr与lsattr命令

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr 用于设置文件文件系统属性(attribute),使用权限超级用户。

chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录 

-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。


-:在原有参数设定基础上,移除参数。

+:在原有参数设定基础上,追加参数。

= :更新为指定参数设定。


A:Atime,告诉系统不要修改对这个文件的最后访问时间。

S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

a:Append Only,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全。

i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。


a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

lsattr 显示文件属性。 

lsattr [-adlRvV][文件或目录...] 

-a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。 

-d  显示,目录名称,而非其内容。 

-R  递归处理,将指定目录下的所有文件及子目录一并处理。

[root@Zabbix_server html]# lsattr /etc/resolv.conf 
-------------e- /etc/resolv.conf
[root@Zabbix_server html]# echo "nameserver 8.8.8.8" >> /etc/resolv.conf 
[root@Zabbix_server html]# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
nameserver 192.168.100.189
nameserver 202.96.209.5
nameserver 202.96.209.133
nameserver 210.22.70.3
nameserver 8.8.8.8
[root@Zabbix_server html]# chattr +i /etc/resolv.conf 
[root@Zabbix_server html]# lsattr /etc/resolv.conf 
----i--------e- /etc/resolv.conf
[root@Zabbix_server html]# echo "nameserver 8.8.4.4" >> /etc/resolv.conf 
-bash: /etc/resolv.conf: Permission denied
[root@Zabbix_server html]#

查看文件的完整时间信息

–full-time 参数

[root@localhost ~]# ls -la
total 252
dr-xr-x---. 26 root root  4096 Jun  7 10:19 .
dr-xr-xr-x. 26 root root  4096 Jun  5 09:09 ..
drwxr-xr-x.  2 root root  4096 Nov  8  2016 .abrt
-rw-------.  1 root root  1406 Nov  8  2016 anaconda-ks.cfg
-rw-------.  1 root root  6799 Jun  7 09:53 .bash_history
-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile
[root@localhost ~]# ls -al --full-time
total 252
dr-xr-x---. 26 root root  4096 2017-06-07 10:19:42.444750423 +0800 .
dr-xr-xr-x. 26 root root  4096 2017-06-05 09:09:17.498922912 +0800 ..
drwxr-xr-x.  2 root root  4096 2016-11-08 12:31:18.899998347 +0800 .abrt
-rw-------.  1 root root  1406 2016-11-08 10:39:27.6249×××3 +0800 anaconda-ks.cfg
-rw-------.  1 root root  6799 2017-06-07 09:53:03.000752018 +0800 .bash_history
-rw-r--r--.  1 root root    18 2009-05-20 18:45:02.000000000 +0800 .bash_logout
[root@localhost ~]# ls -a --full-time
total 252
dr-xr-x---. 26 root root  4096 2017-06-07 10:19:42.444750423 +0800 .
dr-xr-xr-x. 26 root root  4096 2017-06-05 09:09:17.498922912 +0800 ..
drwxr-xr-x.  2 root root  4096 2016-11-08 12:31:18.899998347 +0800 .abrt
-rw-------.  1 root root  1406 2016-11-08 10:39:27.6249×××3 +0800 anaconda-ks.cfg
-rw-------.  1 root root  6799 2017-06-07 09:53:03.000752018 +0800 .bash_history
-rw-r--r--.  1 root root    18 2009-05-20 18:45:02.000000000 +0800 .bash_logout
-rw-r--r--.  1 root root   176 2009-05-20 18:45:02.000000000 +0800 .bash_profile
-rw-r--r--.  1 root root   176 2004-09-23 11:59:52.000000000 +0800 .bashrc
[root@localhost ~]#

stat 命令

[root@localhost ~]# stat sftp.txt 
  File: `sftp.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 405383      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-22 10:52:38.037278802 +0800
Modify: 2017-05-22 10:51:51.285279799 +0800
Change: 2017-05-22 10:51:51.285279799 +0800
[root@localhost ~]#

access:访问时间(accesstime):读取一次文件的内容,该时间便会更新。比如对这个文件使用less命令或者more命令。(ls、stat这样的命令不会修改文件访问时间)

            使用more\less\cat命令后文件的访问时间分别变化为最后一次访问的时间,而文件的修改时间和改变时间并没有发生变化。

          对文件使用ls\stat命令列出文件属性\显示文件状态后文件的访问时间并没有发生变化,这是因为这些过程并没有读取文件内容本身


modify:修改时间(modifytime):对文件内容修改一次便会更新该时间,通过ls –l列出的时间便是这个时间。要想看到文件访问时间可使用ls –ul命令。例如使用vim等工具更改了文件内容并保存后,文件修改时间发生变化。但值得注意的是文件的访问时间和改变时间也发生了变化。这是问什么呢?这是因为我们通过vim打开文件实际上也是访问了文件因此文件访问时间会更新,而当添加了内容并保存后文件的大小、块数、时间数据等状态也发生了变化,因此其状态改变时间也被更新。也就是说修改文件内容往往也会更新文件的状态改变时间和访问时间,但不是绝对的。通过vim打开文件,不进行任何编辑再保存文件,查看得知文件的访问时间发生了变化而修改时间和状态改变时间并没有被更新。通过vim编辑文件实际上是先访问了文件的说法。另外也说明只要其内容没有发生变化,那么文件的修改时间也保持不变。


change: 改变时间(changetime):更改文件的属性便会更新该时间,比如使用chmod命令更改文件属性,或者执行其他命令时隐式的附带更改了文件的属性若文件大小等。执行完chmod命令后查看文件状态发现状态变化时间被更新。访问时间和修改时间保持不变,因为这一过程并没有读取文件内容也没改变文件内容,通过重定向命令来改变文件内容会更新文件的修改时间和状态改变时间。因为这一过程修改了文件内容,改变了文件大小、修改时间等状态,而没有读取文件的内容。


批量修改文件名

rename stringx stringy files

[root@localhost rename]# find . -iname "*.dbf"|awk -F'/' '{print $2}'
REPO20180314.DBF
BCASHF20180314.DBF
BESTIMATE20180314.DBF
BHDQUOTE20180314.DBF
BMIRATE20180314.DBF
BOND_CGCHG20180314.DBF
BONDDT20180314.DBF
BOND_IRCHG_ALL20180314.DBF
BYIELDCURVE20180314.DBF
CFPROFILE20180314.DBF
FXRXX20180314.DBF
GIBORATE20180314.DBF
INTERESTRATE20180314.DBF
NAV20180314.DBF
NAV_CUR20180314.DBF
OEBOND_IRCHG20180314.DBF
OFPROFILE20180314.DBF
RATEOFFEX20180314.DBF
[root@localhost rename]# find . -iname "*.dbf"|awk -F'/' '{print $2}'|xargs rename 20180314 20170314
[root@localhost rename]# ls
BCASHF20170314.DBF     BMIRATE20170314.DBF     BOND_IRCHG_ALL20170314.DBF  FXRXX20170314.DBF         NAV20170314.DBF           OFPROFILE20170314.DBF
BESTIMATE20170314.DBF  BOND_CGCHG20170314.DBF  BYIELDCURVE20170314.DBF     GIBORATE20170314.DBF      NAV_CUR20170314.DBF       RATEOFFEX20170314.DBF
BHDQUOTE20170314.DBF   BONDDT20170314.DBF      CFPROFILE20170314.DBF       INTERESTRATE20170314.DBF  OEBOND_IRCHG20170314.DBF  REPO20170314.DBF
[root@localhost rename]#

更改linux的root密码 报:passwd: Authentication token manipulation error

[root@Zabbix_server var]# passwd root
Changing password for user root.
New password: 
BAD PASSWORD: it is based on a dictionary word
Retype new password: 
passwd: Authentication token manipulation error
[root@Zabbix_server var]# lsattr /etc/passwd /etc/shadow
----i--------e- /etc/passwd
----i--------e- /etc/shadow
[root@Zabbix_server var]# chattr -i /etc/passwd /etc/shadow
[root@Zabbix_server var]# lsattr /etc/passwd /etc/shadow
-------------e- /etc/passwd
-------------e- /etc/shadow
[root@Zabbix_server var]# passwd root
Changing password for user root.
New password: 
BAD PASSWORD: it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@Zabbix_server var]#