linux_basics

linux的基本原则

  1. 由目的单一的小程序组成,组合小程序完成复杂任务
  2. 一切皆文件
  3. 尽量避免捕获用户接口
  4. 配置文件保存为纯文本格式

文件系统

  • /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
  • getfacl
posted @ 2017-05-04 16:34  zane_zong  阅读(135)  评论(0编辑  收藏  举报