[2] Centos 7.3 文件、目录管理

来源:互联网 发布:安宫教务网络管理系统 编辑:程序博客网 时间:2024/06/05 09:58

[2] Centos 7.3 文件、目录管理

2.1 系统目录结构

  1. tree 树形列出目录结构

yum install -y tree

  1. 选择列出目录最大深度为2

tree -L 2

  1. 存放用户命令目录

/bin、/sbin、/usr/bin、/usr/sbin

  1. 详细目录介绍
/sbin       一般存放Root用户命令/bin        存放普通用户命令/boot       系统启动相关文件/dev        linux系统相关设备文件,光盘、鼠标、键盘等/etc        系统配置文件,网卡配置文件、ssh配置文件、selinux配置文件/home       用户家目录/lib、lib64 存放库文件,查看命令依赖的库:ldd /bin/ls/media      媒介目录,插入U盘自动挂载至该目录/mnt        临时挂载目录,可将光驱、新增设备挂载在该目录/opt        主要存放可选程序,安装在/opt目录下的程序,所有的数据、库文件都会保存在该目录下/proc       系统启动进程,每个进程对应PID/run        进程产生的临时文件,关机重启后会消失/srv        存放服务产生的相关文件/sys        系统内核相关文件/tmp        临时目录,权限很大/usr        存放用户文件,比如/usr/bin、/usr/sbin。/usr/local编译安装的软件默认安装在此目录/var        /var/log存放日志、/var/run某些进程PID所在目录

2.2 ls 命令

-i      查看inode号,inode包含时间、大小、文件存放区块位置等等属性-l      文件详细信息-h      选择合适的文件大小单位-a      显示所有文件,包含隐藏文件或者目录-d      显示当前文件夹,而并非文件夹下面的文件-t      按照时间顺序排序
ll = ls -l./      表示当前目录../     表示当前目录上一级目录

2.3 文件类型

==d==rwxr-xr-x 2 root root 6 5月 30 21:27 123

-       表示普通文件、二进制文件d       表示目录c       表示字符串设备l       表示软链接文件b       表示块设备,光盘、磁盘s       套接字文件,进程之间通信使用,如musql.sock

2.4 alias命令

  1. 查看命令别名

which ls or alias ls
2. 设置别名

alias gbj = ls -lha /root

  1. 取消别名

ualias gbj

2.5 相对路径和绝对路径

  • 绝对路径:从/目录开始的文件,无论在哪个目录都可以使用绝对路劲访问
  • 相对路径:相对绝对路径来说,从当前目录开始
  • 查看当前目录路径:pwd

2.6 cd命令

cd -            返回上次所在目录cd ~            进入当前用户根目录cd ..           进入上级目录

2.7 创建和删除目录

  1. mkdir 创建目录
date                        显示时间mkdir /root/test            创建/root/test目录mkdir -p /root/test/1/2/3   级联创建目录mkdir -v                    可视化创建
  1. rmdir 只能删除非空目录
  2. rm 删除文件或者非空目录
-f              force强制删除文件,无须提示-r              删除目录-v              可视化删除

2.8 环境变量 PATH

  1. 查看命令别名和命令绝对路径

which
2. 全局更改PATH值,每次终端自动添加自定义变量

修改/etc/profile,添加 PTAH=$PATH:/目录

2.9 cp 命令

cp 源文件/目录 目的文件/目录

cp -r          用于拷贝目录如果目标目录存在,则将源文件/目录放到目标目录中如果目标文件不存在,则将源文件/目录改名后放置指定路径中

2.10 mv 命令

mv 源文件/目录 目标文件/目录

目标文件为目录,并且目标目录不存在,则将源目录重命名目标文件为目录,并且目标目录存在,则将源目录移动目标目录中目标文件不是目录,且不存在,则重命名源文件

2.11 文档查看命令

cat、tac、more、less、head、tail

cat -A              查看文档中所有字符cat -n              显示文档行号wc -l               查看行数tac                 倒序查看文档内容more                部分查看文档,空格键往下翻屏,ctrl+f网上翻页,ctrl+b往下翻页less                部分查看文档,按空格键往下翻屏,ctrl+f往上翻页,ctrl+b往下翻页,shift+G定位行末、shift+g定位行首,/从当前页面从前往后搜索,?从当前页面从后往前搜索,n/N搜索内容后往前往后定位,支持方向键head                查看文件开头10-n:指定数字tail                查看文件尾部10行。-n:指定数字;-f:动态显示文档,一般用于动态查看某个文件。

2.12 chmod 文档或目录权限

chmod == change mode

root@centos7-1 ~]# ls -l总用量 28-rw-r--r--  1 root root 13244 5月  30 23:05 1drwxr-xr-x  2 root root     6 5月  30 21:27 123
  • 权限位
rw-r--r-- == 属主 属组 其他r = 可读w = 可写x = 可执行
  • 数字权限位表示
r = 4w = 2x = 1

rw-r–r– == 644

  • chmod 权限更改
    Each MODE is of the form ‘[ugoa]*(-+=)+|[-+=][0-7]+’.
更改文件1权限为rwx------            chmod 700 1更改文件1权限为rwx------            chmod u=rwx,g=,o= 1更改文件1权限为rwxrwxrwx            chmod a=rwx 1去除文件1可执行权限                 chmod a-x 1chmod -R                            级联更改目录及目录下所有子目录和文件所有文件权限
  • 特殊点
[root@centos7-1 ~]# ls -l /tmp/总用量 12drwx - - - - - -**.** 2 root root    6 5月  29 17:27 akonadi-root.f3NFIq-rw-r- -r- -**.** 1 root root 1018 5月  29 17:23 anaconda.log**.**         表示该文件受制于selinux,关闭后重启设备,不再生成该类型文件   

2.13 chown 更改属主和属组

chown == change owner

  • 查看系统用户
cat /etc/passwd
  • 更改文件1 属主为gbj
[root@centos7-1 ~]# chown gbj 1
  • 更改文件属组为gbjgp
    chgrp == change group
[root@centos7-1 ~]# chgrp gbjgp 1[root@centos7-1 ~]# chown :gbjgp 1
  • 更改文件1属主为gbj,属组为gbjgp
[root@centos7-1 ~]# chown gbj:gbjgp 1
  • chown -R
    级联更改目录及目录下所有子目录和文件所有文件gbj属主、root属组
chown -R gbj:root 123/

2.14 umask值

登录系统之后创建一个文件总是有一个默认权限的。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile

  • 默认权限值\
    系统默认root用户umask值为022,最前面0表示set Uid、set Gid、粘着位(sticky)、有效的设定值只有后三位数。
    在 bash中,虽然可带入四位数字,但第一个数字,必须为 0。
[root@Temence ~]# umask 0022
默认创建文件权限 644 ,文件完全权限为666 默认创建目录权限 755 ,目录权限权限为777
  • umask值定义文件/etc/profile
 # By default, we want umask to get set. This sets it for login shell # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid fileif [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then    umask 002else    umask 022fifor i in /etc/profile.d/*.sh ; do    if [ -r "$i" ]; then        if [ "${-#*i}" != "$-" ]; then            . "$i"        else            . "$i" >/dev/null        fi    fidone
  • 更改umask值
    • 更改定义文件 /etc/profile
    • umask 003
      umask值定义的文件默认权限不能单纯的认为是完全权限减去umask值,需要逐位相减。比如:

      666-003 =
      (rw-rw-rw-)-(-------wx) =
      rw-rw-r-- =
      664

2.15 隐藏权限lsattr、chattr

+ :在原有参数设定基础上,追加参数。- :在原有参数设定基础上,移除参数。= :更新为指定参数设定。A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。S:硬盘I/O同步选项,功能类似sync。a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。d:即no dump,设定文件不能成为dump程序的备份目标。i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件系统的安全设置有很大帮助。j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。s:保密性地删除文件或目录,即硬盘空间被全部收回。u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
  • 设置1.txt i 权限
    i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件系统的安全设置有很大帮助。
[root@centos7-1 ~]# ll 1.txt -rw-r--r-- 1 root root 0 67 22:58 1.txt[root@centos7-1 ~]# chattr +i 1.txt [root@centos7-1 ~]# ll 1.txt -rw-r--r-- 1 root root 0 67 22:58 1.txt[root@centos7-1 ~]# cat 1.txt [root@centos7-1 ~]# lsattr 1.txt ----i----------- 1.txt[root@centos7-1 ~]# touch 1.txttouch: 无法创建"1.txt": 权限不够
  • 设置1.txt a 权限
    a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
[root@centos7-1 ~]# lsattr 1.txt---------------- 1.txt[root@centos7-1 ~]# chattr +a 1.txt [root@centos7-1 ~]# lsattr 1.txt -----a---------- 1.txt[root@centos7-1 ~]# rm -f 1.txt rm: 无法删除"1.txt": 不允许的操作[root@centos7-1 ~]# echo 'test' >> 1.txt [root@centos7-1 ~]# cat 1.txt test
设置a权限后,可以追加、可以更改时间信息、不能更改文件内容、不能重命名、不能删除
  • lsattr 查看隐藏权限
    lsattr 文件/目录,查看目录本身需要使用-d参数。
[root@centos7-1 ~]# ls1    1.t    anaconda-ks.cfg       passwd  模板  图片  下载  桌面123  1.txt  initial-setup-ks.cfg  公共    视频  文档  音乐[root@centos7-1 ~]# lsattr -d 123---------------- 123
  • chattr 设置隐藏权限

    chattr -R files
    -R 级联修改目录及目录下面的文件隐藏权限
    更改目录权限时,如果不使用-R参数,目录下的文件或者目录不会拥有隐藏权限,文件依旧可以追加更改,但不能删除


目录添加a权限,使用和不使用-R参数区别:
[root@centos7-1 ~]# lsattr -d test/---------------- test/[root@centos7-1 ~]# lsattr  test/1---------------- test/1[root@centos7-1 ~]# chattr +a test/[root@centos7-1 ~]# lsattr test/---------------- test/1[root@centos7-1 ~]# lsattr -d test/-----a---------- test/[root@centos7-1 ~]# echo 'qwer' > test/1 [root@centos7-1 ~]# rm test/1rm:是否删除普通文件 "test/1"?yrm: 无法删除"test/1": 权限不够[root@centos7-1 ~]# chattr +a -R test/[root@centos7-1 ~]# lsattr test/-----a---------- test/1[root@centos7-1 ~]# lsattr -d test/-----a---------- test/[root@centos7-1 ~]# echo 'wer' > test/1 -bash: test/1: 不允许的操作
  • 目录添加==i==权限,使用和不使用-R参数区别:
[root@centos7-1 ~]# lsattr -d test/---------------- test/[root@centos7-1 ~]# lsattr  test/2---------------- test/2[root@centos7-1 ~]# chattr +i test/[root@centos7-1 ~]# lsattr test/---------------- test/1---------------- test/2[root@centos7-1 ~]# lsattr -d test/----i----------- test/[root@centos7-1 ~]# echo 'qwer' > test/2[root@centos7-1 ~]# cat test/2qwer[root@centos7-1 ~]# rm test/2rm:是否删除普通文件 "test/2"?yrm: 无法删除"test/2": 权限不够[root@centos7-1 ~]# chattr -R +i test/[root@centos7-1 ~]# lsattr -R test/----i----------- test/1----i----------- test/2[root@centos7-1 ~]# lsattr -d test----i----------- test[root@centos7-1 ~]# echo 'asdf' > test/2-bash: test/2: 权限不够[root@centos7-1 ~]# cat test/2qwer

2.15 特殊权限set_uid

让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令

  • 查看set_uid
    保证普通用户临时拥有该命令所有者的身份

    [root@Temence ~]# ll /usr/bin/passwd
    -rw s r-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd

  • 设置set_uid

[root@centos7-1 ~]# cp /bin/ls .[root@centos7-1 ~]# ls1    1.t    anaconda-ks.cfg       ls      test  模板  图片  下载  桌面123  1.txt  initial-setup-ks.cfg  passwd  公共  视频  文档  音乐[root@centos7-1 ~]# chmod u+s ls[root@centos7-1 ~]# ll ls-rwsr-xr-x 1 root root 117656 68 07:29 ls
  • 取消set_uid
[root@centos7-1 ~]# chmod u-s ls[root@centos7-1 ~]# ll ls-rwxr-xr-x 1 root root 117656 68 07:29 ls
  • 使用chmod u=rws设置set_uid
[root@centos7-1 ~]# chmod u=rws ls[root@centos7-1 ~]# ll ls-rwSr-xr-x 1 root root 117656 68 07:29 ls

此时ls属主权限位变成S,而不是s。是因为没有可执行的权限,但是此时仍然ls命令,有两个原因:
1.root拥有s权限,s有一层可执行含义。
2.普通用户其他权限位有可执行权限

bash
[root@centos7-1 ~]# chmod u+x ls
[root@centos7-1 ~]# ll ls
-rwsr-xr-x 1 root root 117656 6月 8 07:29 ls

2.16 特殊权限set_gid

让普通用户组可以以root用户组的角色运行只有root帐号才能运行的程序或命令

  • 设置set_gid
    Set_gid权限如果给文件设置,是让运行此文件的其它用户具有这个文件的属组特性;==给目录设置Set_gid权限,任何用户在该目录下创建的文件,则该文件属组都和目录的属组一致。==
[root@centos7-1 ~]# ll ls-rwxr-xr-x 1 root root 117656 68 07:29 ls[root@centos7-1 ~]# chmod g+s ls[root@centos7-1 ~]# ll ls-rwxr-sr-x 1 root root 117656 68 07:29 ls
[root@centos7-1 ~]# ll -d 123drwxr-xr-x 2 root root 6 530 21:27 123[root@centos7-1 ~]# chown :gbj 123/[root@centos7-1 ~]# ll -d 123drwxr-xr-x 2 root gbj 6 530 21:27 123[root@centos7-1 ~]# touch 123/1[root@centos7-1 ~]# ll 123/1 -rw-r--r-- 1 root root 0 68 07:56 123/1[root@centos7-1 ~]# chmod g+s 123/[root@centos7-1 ~]# ll -d 123drwxr-sr-x 2 root gbj 15 68 07:56 123[root@centos7-1 ~]# touch 123/2[root@centos7-1 ~]# ll 123总用量 0-rw-r--r-- 1 root root 0 68 07:56 1-rw-r--r-- 1 root gbj  0 68 07:59 2
**设置目录set_gid之后,在目录下创建子文件和子目录,创建的子文件和子目录属主会和父目录属主保持一致**

2.17 特殊权限stick_bit

  • /tmp 目录权限
    任何一个用户都可在/tmp目录下写文件,其他用户可读,但是无法编辑、删除。针对目录来说的,如果该目录设置了stick_bit,则该目录下的文件除了该文件的创建者和root用户可以删除和修改,其他用户均无法编辑删除。
[root@Temence ~]# ll -d /tmpdrwxrwxrwt 7 root root 4096 Jun  2 10:50 /tmp
  1. 一个文件或者是否可写可删除,不在于自己本身权限,而是在于其父目录是否具有可写权限
  2. 特殊权限使用数字表示:
    set_uid=4
    set_gid=2
    stick_bit=1
    例如:4755权限表示,属主有特殊s权限(set_uid),属主可读可写可执行、属组可读可执行不可写、其他用户可读可执行不可写。当拥有可执行权时,此时s为小写,如果没有可执行全,此时S为大写。

2.18 软链接文件

符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接==不同文件系统==的文件
- 软链接文件 usr/bin

[root@centos7-1 ~]# ls -l /binlrwxrwxrwx. 1 root root 7 529 16:44 /bin -> usr/bin
  • 创建软链接
ln -s 源文件 软链接文件

创建软链接文件时,如果源文件和软链接文件在同一目录,可以使用相对路径。

用例:

系统/data目录磁盘不够,但是www服务需要一直使用/data目录中数据,此时可以将/data/www/目录mv至空间大的目录中,然后将mv的/www目录软链接至/data中。

2.19 硬链接文件

硬链接==只能在同一文件系统==中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在

  • 创建硬链接
ln 源文件 硬链接文件

2.20 快捷键使用

ctrl + a            快速将光标移至行首ctrl + e            快速将光标移至行尾ctrl + l            清除当前屏幕内容ctrl + c            取消当前输入crtl + u            删除当前光标前面内容ctrl + k            删除当前贯标后面内容ctrl + d            当前命令行有内容,就会从光标往后一格一格删除,如果没有内容就会退出当前终端。

2.21 find 命令

关于搜索文件命令还有:which、whereis、locate(yum安装 mlocate,更新库updatedb)

语法:find [搜索路径] [搜索条件],支持通配符搜索

  • 常用搜索条件
-atime +n/-n        访问或执行时间大于/小于 n 天的文件-ctime +n/-n        写入、更改 inode 属性(例如更改所有者、权限或者链接)时间大于/小于 n 天的文件-mtime +n/-n        写入时间大于/小于 n 天的文件-name filename      直接查找该文件名的文件,这个选项使用很多-type filetype      通过文件类型查找。文件类型在前面部分已经简单介绍过,相信你已经大体上了解了。filetype包含了f、 b,、 c、 d、 l、 s 等-size               搜索文件大小-inum               搜索指定inode号-exec               一般查找出来内容需要进一步的操作,参数后面跟的是command命令,{}代表前面find查找出来的结果。exec以;为结束标志的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠转义。
  • -name 搜索条件
搜索passwd文件所在路径:[root@Temence ~]# find / -name passwd/etc/pam.d/passwd/etc/passwd/usr/bin/passwd[root@Temence ~]# find / -name passw?/etc/pam.d/passwd/etc/passwd/usr/bin/passwd[root@Temence ~]# 
  • -type 搜索条件
搜索123名称的目录:[root@Temence ~]# find / -type d -name 123/data/123
  • -atime、ctime、mtime搜索条件
Access time也就是atime              是在读取文件或者执行文件时更改的。Modified time也就是mtime            是在写入文件时随文件内容的更改而更改的。Create time也就是ctime              是在写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改的。
  • stat命令可用来列出文件的atime、ctime和mtime。
  • atime不一定在访问文件之后被修改,因为:
    这三个time属性值都放在了inode中。若mtime、atime修改inode就一定会改,既然inode改了,那ctime也就跟着要改了。
更改时间在一天以内后缀为.conf的所有文件:[root@Temence ~]# find / -type f -ctime -1 -name "*.conf"/run/systemd/system/session-296801.scope.d/50-SendSIGHUP.conf/run/systemd/system/session-296801.scope.d/50-After-systemd-user-sessions\x2eservice.conf/run/systemd/system/session-296801.scope.d/50-After-systemd-logind\x2eservice.conf/run/systemd/system/session-296801.scope.d/50-Description.conf/run/systemd/system/session-296801.scope.d/50-Slice.conf/run/systemd/system/session-296542.scope.d/50-SendSIGHUP.conf/run/systemd/system/session-296542.scope.d/50-After-systemd-user-sessions\x2eservice.conf/run/systemd/system/session-296542.scope.d/50-After-systemd-logind\x2eservice.conf/run/systemd/system/session-296542.scope.d/50-Description.conf/run/systemd/system/session-296542.scope.d/50-Slice.conf更改时间在一天以内或者文件后缀为.txt的文件:[root@Temence ~]# find / -ctime -1 -o -name "*.txt"
  • 使用find命令查找硬链接文件
1. 创建新的硬链接文件:[root@Temence ~]# ln 1.txt /tmp/1.txt.bak2. 查看此时源文件inode值:[root@Temence ~]# ll 1.txt -rw-r--r-- 2 root root 0 Jun  7 10:55 1.txt[root@Temence ~]# ls -i 1.txt 23502493 1.txt3. 使用-inum查找两个硬链接文件:[root@Temence ~]# find / -inum 23502493/root/1.txt/tmp/1.txt.bak
  • -mmin搜索条件
1. 查找root目录200分钟以内修改过的文件:[root@Temence ~]# find /root/ -type f -mmin -200/root/1.txt/root/.viminfo
  • -exec 参数
1. 查找root目录200分钟以内修改过的文件,并且将文件详细属性列出:[root@Temence ~]# find /root/ -type f -mmin -200 -exec ls -l {} \;-rw-r--r-- 2 root root 48 Jun  9 22:40 /root/1.txt-rw------- 1 root root 3853 Jun  9 22:40 /root/.viminfo2.查root目录找200分钟以内修改过的文件,并且将文件重命名{}.bak:[root@Temence ~]# find /root/ -type f -mmin -200 -exec mv {} {}.bak \;[root@Temence ~]# lltotal 4-rw-r--r-- 2 root root 48 Jun  9 22:40 1.txt.bak-rw-r--r-- 1 root root  0 Jun  1 20:10 test
  • size 搜索条件
查找/目录下大于10M的文件:[root@Temence ~]# find / -size +10M -type ffind: '/proc/2273/task/2273/fdinfo/6': No such file or directoryfind: '/proc/2273/fdinfo/6': No such file or directory/usr/lib/locale/locale-archive/var/cache/yum/x86_64/7/base/gen/primary_db.sqlite/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite/var/lib/rpm/Packages

2.21 文件命后缀

  1. linux区分大小写
  2. linux文件有后缀名,但是区别于windows后缀,类似于文件标记。文件名后缀可自定义。
  3. date查看日期
  4. LANG语言:echo $LANG

2.22 Linux和Windows 互传文件

方法有很多,比如ftp、samba服务器,这里使用的是lrzsz工具,无法在putty下使用。

[root@Temence ~]# yum install -y lrzsz
  • 从linux下载文件至windows
[root@centos7-1 ~]# sz 1.txt
  • 从windows上传文件至linux
[root@centos7-1 ~]# rz -be 1.txt

-b 以二进制方式,默认为文本方式。
-e 对所有控制字符转义。
如果要保证上传的文件内容在服务器端保存之后与原始文件一致,最好同时设置这两个参数

原创粉丝点击