第七单元 文件查找与文件特殊权限

7.1 指令与文件的搜寻

7.1.1 指令文件名的搜索

which 命令用来展示shell命令的完整路径,它接收一个或多个参数,执行时所有的参数会展示在shell提示并根据传入的参数将可执行命令的完整路径输出到 stdout 中。

 # which [-a] command
 选项或参数:
 -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
 
 示例:查找cd的完整命令路径
 # which cd

7.1.2 文件的搜寻

whereis命令用于查找文件,该指令会在特定目录中查找符合条件的文件,该指令只能用于查找二进制文件、源代码文件和man手册页。

 # whereis [-bmsu] 文件或目录名
 选项与参数:
 -l   :可以列出 whereis 会去查询的几个主要目录而已
 -b   :只找 binary 格式的文件
 -m   :只找在说明文档 manual 路径下的文件
 -s   :只找 source 来源文件
 -u   :搜寻不在上述三个项目当中的其他特殊文件
 
 示例:查找cd命令的完整文件路径
 # whereis cd
 cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz

7.1.3 文件查找

find是实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找,其查找速度比较慢,但为精确查找。

 语法:find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
 选项:
    查找起始路径:指定具体搜索目标起始路径,默认为当前目录;
    查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准进行,默认为找出指定路径下的所有文件;
    处理动作:对符合条件的文件做出操作,如删除,重命名等

查找分类:

按照文件名进行查找

 -name pattern
 -iname pattern:同-name,但是不区分大小写;

示例:

 查找/etc目录下名称为rpc的文件
 # find /etc -name rpc

按照文件属性进程查找

 -user uname:查找属主为指定用户的文件;
 -group gname:查找属组为指定组的文件;
 -uid n:查找属主为指定UID的文件;
 -gid n:查找属组为指定GID的文件;
 -nouser:查找没有属主的文件;
 -nogroup:查找没有属组的文件;

示例:

 查找文件属主为test的文件
 # find ./* -user test
 查找文件属组为test的文件
 # find ./* -group test

根据文件类型查找

  -type TYPE:
    f:普通文件;
    d:目录文件;
    l:符号链接文件;
    b:块设备文件;
    c:字符设备文件;
    p:管道文件;
    s:套接字文件

示例:

 查找文件属主是test并且文件类型是file的 
 # find ./* -user test -type f

根据文件大小查找

   -size [+|-]#UNIT; 其中#表示数字,UNIT为单位
                    常用的单位为:k,M,G
                    范围举例:
                        3M:(2,3]
                      -3M:[0,2]
                      +3M:(3,oo) ;oo表示无穷大

示例:

 查找etc目录下文件大小大于1M的文件
 # find /etc -size +1M

根据时间戳查找

 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
    -mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
    -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
    -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
   
 备注:
  mtime:修改(modify) -l
  ctime: 改变(change) -lc
  atime: 访问(access) -lu

image-20220908144247920

  • +4代表大于等于5天前的文件名:ex> find /var -mtime +4

  • -4代表小于等于4天内的文件文件名:ex> find /var -mtime -4

  • 4则是代表4-5那一天的文件文件名:ex> find /var -mtime 4

示例;

 # find ./* -mtime +3

-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。

 # find ./* -mtime +2 -exec ls -l {} \;

7.2 文件特殊权限-SUID&SGID

7.2.1 SUID

SUID:作用于二进制可执行程序上,当执行这个程序时会临时切换身份为文件所有者身份,比较典型的就是用户修改密码。

 # chmod u+s FILE
 # chmod u-s FILE

如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;

 

7.2.2 SGID

SGID:作用在二进制可执行程序上,继承此程序的所有组权限;

 # chmod g+s FILE
 # chmod g-s FILE

7.2.3 sticky

粘带位:作用在目录,该目录下的文件只能被其所有者和root删除,比较有代表性的是/tmp目录。

7.3 文件访问控制列表-setfacl命令

 
 开启用户test访问控制
 # setfacl -m u:test:rw- test1.txt
 取消用户test访问控制
 # setfacl -x u:test:rw- test1.txt
 练习:
 新建一个用户组nginx,属于root附加组,对/opt/test/目录下文件都有操作权限

7.4 常用小命令

7.4.1 w命令

Linux w命令用于显示目前登入系统的用户信息。

7.4.2 who命令

who命令是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。

7.4.3 whoami命令

Linux whoami命令用于显示自身用户名称。

7.4.4 last命令

Linux last 命令用于显示用户最近登录信息,显示/var/log/wtmp文件,显示用户登录历史及系统重启历史。

7.4.5 lastb命令

/var/log/wtmp文件,显示用户错误的登录尝试

7.4.6 lastlog命令

lastlog命令用于显示系统中所有用户最近一次登录信息

posted @ 2022-09-17 08:22  摩天居士-谢烟客  阅读(38)  评论(0编辑  收藏  举报