1. 概览:linux 下一切皆文件:
文件目录:linux 中文件树只有一个(对应到windows中相当于只有一个盘符);文件&文件夹创建查看等操作,参考命令篇
2.特殊路径:
根目录: / 小家目录:~ 上层目录:.. 当前目录/相对路径的起始点: . 上次工作目录: -
3. 七种基本文件类型:
- : regular file 普通文件; 其中有数据文件,以特殊编码方式保存,需要特定程序读取,例如 /var/log/wtmp 需要last 命令读取; d: directory 目录 l : link 链接 b : block 块设备,存储数据以供系统存取的接口设备,也就是硬盘 c : character 字符设备,串口设备, 键盘, 鼠标等 s : socket 套接字 p : pipe 管道
4. 用户目录: /home/username
/etc: 配置文件夹 /etc/hosts : 远程主机快捷名 /etc/shells : 所有shell /etc/hostname :主机名 /etc/os-release : OS release 信息 /etc/sudoers : 可以直接用visudo 打开, 存放sudo 权限用户相关信息 /etc/passwd : 用户信息 /etc/logind.defs : 新建用户规则文件
/etc/shadow : 密码信息
/etc/group : 组信息
/etc/gshadow : 组密码
5. 软件安装位置
/usr/bin :存放程序的可执行文件 /usr/lib :库文件集中存放,方便共享 /usr/share :存放程序需要的其他资源 /etc :全局配置文件存放路径,例如有/etc/vim, /etc/zsh ~/.xx :当前用户下配置文件在家目录下隐藏文件(夹); 例如 ~/.ssh, ~/.zshr
6.
/dev : 设备文件, 这个文件夹下将各类设备转换成文件形式; /dev/pts : 各个终端号存放的文件,可以将字符 重定向到某个终端口("hello" > 4),实现类似write 功能。
7. 动态文件夹:
/var/log/wtmp : 成功登陆用户相关信息 /var/log/btmp :失败登陆用户相关信息; btmp1: 前一个月失败登陆用户信息 /var/log/lastlog: 每个帐号最后登陆时间信息;
8. 进程文件:
/proc/ :各类暂时文件,以及各种进程文
9 库函数文件:
/lib/
文件属性 与 特殊权限
linux 有两类用户,分别是root 和普通用户
root: 超级管理员,拥有完全控制权,要慎重使用root 用户;
普通用户: 可操作大部分命令
具备sudo 权限的普通用户: 可以临时以root 权限操作
atime : access time 内容被取用时,更新这个读取时间 ctime : status/change time, 权限, 属性,所有者改动时,更新这个时间 mtime : modify time 内容数据改动时,更新时间 stat 可以显示文件状态,包含上面的ACM 时间; touch 命令可以更新上面的时间;
Linux文件还包含着隐藏属性: lsattr: 展示这些隐藏属性; chattr: 更新隐藏属性 chmod : 更改文件模式 chgrp : 更改用户组 chown : 更改用户 文件的特殊权限:这些都是针对非sudo 权限的用户,sudo 用户组权限也很大;
具体更改这些权限操作,参开命令篇; SUID: set_uid SGID: set_gid SBIT: sticky bit
EXAM: 如果为 s 表示有原来有执行权限,S 原来是没有执行权限; 下面分别是SUID 和 SGID 情形,当执行对应的二进制文件时候,会拥有对应的用户/组的权限; 执行 write, 拥有当前组tty 权限 ==> 对应的/dev/pts 下面文件0,组用户有w 权限,可以写入信息;也就是write 命令实现的过程;
stick bit 示例,虽然其他组中拥有rwt 权限,但是并不能删除文件,只有创建者有权限删除;sudo 用户组可以突破这个权限;
文件描述符:
0. stdio 1. stdout 2. stderror 三个宏定义, 定义 open, read, write 函数的头文件中 0: STDIN_FINENO 1: STDOUT_FILENO 2: STDERR_FILENO
搭配上文件描述符,实现只保留成功信息; find / -perm -o=rwt 2>/dev/null 1>11.txt //其中 /dev/null 是文件回收站 2>/dev/null 其中必须没有空格 通过将错误的信息2放入回收站,有用信息放入文件,减少大量无用信息刷屏;
查找某个文件夹下特定后缀文件, 并统计行数, 字数 find /home/guigym/personal/ -name "*.c" -o -name "*.cpp" -exec cat {} \; #打印出找到的文件内容,其中-o 是逻辑or 意思(-a 是逻辑 and); cat `find /home/guigym/personal/ -name "*.c" -o -name "*.cpp"` | wc -w(-l, -m) // 统计找到文件中字数/行数;
.ssh/id_rsa.pub :各类公钥文