linux_basics
linux的基本原则
- 由目的单一的小程序组成,组合小程序完成复杂任务
- 一切皆文件
- 尽量避免捕获用户接口
- 配置文件保存为纯文本格式
文件系统
- /boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
- /dev: 设备文件
设备文件:- 块设备:随机访问,数据块
- 字符设备: 线性访问,按字符为单位
- 设备号: 主设备号(major)和次设备号(minor)
- /etc: 配置文件
- /home: 用户的家目录, 每一个用户的家目录通常默认为/home/$USERNAME
- /root: 管理员的家目录
- /lib: 库文件
- 静态库, .a结尾
- 动态库, .dll、.so
- /lib/modules: 内核模块文件
- /media: 挂载点目录,移动设备
- /mnt: 挂载点目录,额外的临时文件系统
- /opt: 可选目录,第三方程序的安装目录
- /proc: 伪文件系统,内核映射文件
- /sys: 伪文件系统,跟硬件设备相关的属性映射文件
- /tmp: 临时文件, /var/tmp
- /var: 可变化的文件
- /bin: 可执行的文件
- /sbin: 管理命令
目录管理
- ls
- cd
- pwd
- mkdir
- rmdir
- tree
文件管理
- touch
- stat
- file
- rm
- cp
- mv
- nano
日期时间
- date
- clock
- hwclock
- cal
查看文本
- cat
- tac
- more
- less
- head
- tail
- wc
文本处理
- cut
- join
- sed
- awk
- tr
- sort
bash支持的引号
- ``: 命令替换
- "": 弱引用,可以实现变量替换
- '': 强引用, 不完全变量替换
文件通配符
- *: 任意长度的任意字符串
- ?: 任意单个字符
- []: 匹配制定范围内的任意单个字符
- [:space:]: 空白字符
- [:punct:]: 标点字符
- [:lower:]: 小写字母
- [:upper:]: 大写字母
- [:alpha:]: 大小写字母
- [:digit:]: 数字
- [:alnum:]: 数字和大小写字母
- [^]: 匹配指定范围外的任意单个字符
文件权限
- r: 可读,可以使用类似cat等命令查看文件内容
- w: 可写, 可以编辑或删除文件
- x: 可执行, 在命令提示符下,当做命令提交给内核运行
目录权限
- r: 可以对此目录执行ls以列出内部的文件
- w: 可以在此目录创建文件
- x: 可以使用cd切换进此目录, 也可以使用
ls -l
查看内部文件的详情信息
用户类别
- 管理员: 0
- 普通用户: 1-65535
- 系统用户: 1-499
- 一般用户: 500-65535
用户组类别
- 管理员组
- 普通组
- 系统组
- 一般组
- 私有组: 创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户同名的组
- 基本组: 用户的默认组
- 附加组: 默认组以外的其他组
/etc/passwd文件内容解析
用户名:密码:UID:GID:注释:家目录:默认shell
/etc/group文件内容解析
组名:密码:GID:以此组为其附加组的用户列表
/etc/shadow文件内容解析
用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间
用户管理
- useradd
- userdel
- usermod
- passwd: 密码管理
- chsh: 修改用户默认的shell
- chfn: 修改注释信息
- finger: 查看用户账号信息
- id: 查看用户的账号属性信息
- change
- pwck: 检查用户账号完整性
组管理
- groupadd
- groupdel
- groupmod
- gpasswd: 为组设定密码
权限管理
- chown: 改变文件属主
- chgrp: 改变文件属组
- chmod: 修改文件权限
- umask: 遮罩码
bash的配置文件
- 全局配置
- /etc/profile
- /etc/profile.d/*.sh
- /etc/bashrc
- 个人配置
- ~/.bash_profile
- ~/.bashrc
- profile类的文件
- 设定环境变量
- 运行命令或脚本
- bashrc类的文件
- 设定本地变量
- 定义命令别名
- 登录式shell如何读取配置文件?
- /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
- 非登录式shell如何读取配置文件?
- ~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
系统设定
- 默认输出设备: 标准输出, STDOUT, 1
- 默认输入设备: 标准输入, STDINT, 0
- 标准错误输出: STDERR, 2
查看当前shell中的环境变量
- printenv
- env
- export
特殊权限
- SUID: 运行某程序时,相应进程的属主是程序文件自身的属性,而不是启动者
- chmod u+s file
- chmod u-s file
- SGID: 运行某程序时,相应进程的属组时程序文件自身属性,而不是启动者所属的基本组
- chmod g+s file
- chmod g-s file
- sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件
- chmod o+t dir
- chmod o-t dir
文件系统访问列表
FACL: filesystem access control list 利用文件扩展保存额外的访问控制权限
- setfacl
- m: 设定
- u:uid:perm
- g:gid:perm
- x: 取消
- u:uid
- g:gid
- m: 设定
- getfacl