Linux学习笔记

简介: Linux学习笔记


前言

早年看视频整理的一些笔记,虽然比较基础但是基本包含了Linux所需的所有指令

linux 简介

Unix发展史

Linux发展历史

Linux主要发行版本

  • RedHat
  • Detian

开源软件的简介

Linux运用领域

linux分区

磁盘分区

  1. 主分区只能有4个
  2. 扩展分区:
  1. 最多只能有1个
  2. 主分区加扩展分区不能超过四个
  3. 不能写入数据,只能作为逻辑分区
  1. 逻辑分区

格式化

又称逻辑格式化

为了写入文件系统

FAT16、FAT32、NTFS、EXT2、EXT3、EXT4

硬件设备文件名

  • /dev/hda1 (IDE硬盘接口)
  • /dev/sda1 (SCSI硬盘接口、SATA硬盘接口)

挂载

给每个分区分配挂载点

  • 必须分区
  • / (根分区)
  • swap分区 (交换分区,内存的两倍,不超过2G)
  • 推荐分区
  • /boot (启动分区 200MB)

linux 目录

  • /bin/
  • /sbin/
  • /usr/bin/
  • 单用户之下不能运行
  • /usr/sbin/
  • /boot/
  • /dev/
  • /etc/

linux 常用命令

目录操作命令

硬链接拷贝特征

  1. 拷贝 cp -p + 同步更新
    例如: echo "www.xxxx.net" >> /etc/issues
  2. 不能通过 i 节点识别
  3. 不能跨分区
  4. 不能针对目录使用

chmod 权限管理命令

umask -S 检查出来的权限默认不可执行

Linux touch 的文件默认是没有可执行权限的

搜索命令

find /etc/ -name init

find / size +204800

find /home -user shenchao

数据换算

100MB = 102400KB = 204800K

1K = 0.5KB

对于搜索结果执行操作

find /etc -name inittab -exec ls -l {} \;

系统的运行级别

  • 0: 关机
  • 1:单用户
  • 2:不完全多用户,不包含NSF服务
  • 3: 完全多用户
  • 4:未分配
  • 5: 图形界面
  • 6: 重启

linux 用户管理

/etc/passwd

  • 第一字段:用户名
  • 第二字段:密码标志
  • 第三字段:UID (用户ID)
  • 0 超级用户
  • 1-499 系统用户(伪用户)
  • 500-65535 普通用户
  • 第四字段:GID(用户初始组ID)
  • 初始组附加组
  • 第五字段:用户说明
  • 第六字段:家目录
  • 普通用户:/home/用户名
  • 超级用户:/root
  • 第七字段:登陆之后的shell
  • 命令解析器
  • /bin/bash 或者 /sbin/nologin (一般不改)

shadow 文件 (影子文件)

  • 用户名
  • 密码
  • 升级为使用SHA512 散列加密算法
  • 如果密码为 "!!" 或者 '*' 代表没有密码目录
  • 密码最后一次修改日期
  • 使用标准时间戳类型
  • 两次修改密码的间隔
  • 密码有效期
  • 密码修改到期前的警告
  • 到期过后的宽限天数
  • 0:密码过期之后立即失效
  • -1:密码永远不会失效
  • 账号失效时间
  • 保留

时间戳换算

  • 时间换算为日期
  • date -d "1970-01-01 160066 days"
  • 日期换算为时间戳
  • echo (((date -- date="2014/01/06" +%s)/86400+1)

组信息文件 /etc/ group

  • 组名
  • 组密码标志
  • GID
  • 组中附加用户

用户相关文件

用户家目录

普通用户:/home/用户名,所有者和所属组都是此用户,权限默认是700

超级用户:/root/,所有者和所属组都是root,权限为550

用户邮箱

/var/spool/mail/用户名

用户模板目录

/etc/skel

用户管理

useradd [用户名]

+ -u UID : 指定用户 Uid
+ -d 家目录 
+ -c 用户说明
+ -g 组名:用户组名
+ -G 组名: 附加组
+ -s shell: 手工指定

用户默认值文件

/etc/default/useradd

+ group=100 //用户默认组
+ home = /home //用户家木库
+ inactive = -1 //密码过期宽限时间
+ expire = //密码失效时间
+ shell=/bin/bash //默认shell
+ skel = /etc/skel  //模板目录
+ create_mail_spool = yes //是否建立邮箱

/etc/login.defs

+ PASS_MAX_DAYS 99999 #密码有效期
+ PASS_MIN_DAYS 0 #密码修改间隔
+ PASS_MIN_LEN 5 #密码最小5位
+ PASS_WARN_AGE 7 #密码到期警告
+ UID_MIN 500 #
+ GID_MAX 60000 
+ encrept_method sha512

用户密码

查看密码状态

passwd -S lamp

lamp PS 2013-01-06 0 9999 7 -1

使用字符串作为用户的密码

echo "123" | passwd --stdub lamp

修改用户信息

usermod

选项:

-c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

修改用户状态

chage

选项:

-d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                        显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                        显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

chage -d 0 lamp 使用较多

其实就是吧修改日期归0

用户一登录就要修改密码

删除用户

userdel 用户名

一般写法 userdel -r 用户名

切换用户

一定要加 - 连带环境一起切换

用户权限

  • ACL权限
  • 文件特殊权限
  • 文件系统属性chattr权限

acl权限

解决身份不足的问题

查看分区ACL 权限是否开启

dumpe2fs -h /dev/sda3

查询指定分区详细文件系统信息的命令

选项:

-h 仅显示超级块的信息

df -b 查看分区情况

临时开启分区ACL 权限

mount -o remount.acl

重新挂载根分区,加入acl权限

永久开启分区acl 权限

  1. vi /etc/fstab
  2. UUID=XXXX / ext4 defaults,(逗号)acl 1 1 #加入acl
  3. mount - o remount 生效

查看和设置acl权限

getfacle 选项 文件名 查看权限

setfacle 选项 文件名字 设置acl权限

选项

  • -m 设定acl权限
  • -x 删除指定acl权限
  • -b 删除所有acl权限
  • -d 设定默认acl权限
  • -k 删除默认acl权限
  • -R 递归设定acl权限

实例: setfacl -m u:st:rx 文件路径

最大有效权限和删除acl权限

mask :指定最大有效权限的

如果给用户acl 权限,

需要与mask权限 “相与” 才能得到真正的权限

修改最大有效权限: setfacl -m m : rx 文件名

设定mask 权限 为 r-x ,使用 “m:权限”格式

删除acl权限

setfasl -b 文件名

setfacl -h 指定

默认acl 权限和递归acl权限

setfacl -m u:用户名:权限 -R 文件名

默认分配acl权限

setfacl -m d:u:用户名:权限 用户名

特殊权限

SetUID

  • 可以执行二进制程序才能设定
  • 命令执行者要拥有X(执行)权限
  • 命令执行者在执行该程序时获得该程序文件属主的身份
  • SetUID 只能在该程序执行过程中有效

举例:所有用户都可以执行passwd命令

设置方法

  • chmod 4755 文件名
  • chmod u+s 文件名

4代表SUID

危险的SetUID

  • 关键目录严格控制写权限 "/", "/usr"等
  • 用户密码严格遵守规范
  • 对系统默认的都应该具有SetUID 权限的文件作为统一列表,并且定时检查

SetGID

针对目录的作用

  • 普通用户必须对此目录拥有r 和 x 权限,才能进入此目录
  • 普通用户在此目录的有效组会变成此目录的所属组
  • 普通用户对此目录有w权限,新建文件的默认属组都是这个目录的属组

条件:

  1. /usr/bin/locate 是可执行二进制程序,可以赋予SGID
  2. 执行用户lamp 对 /usr/bin/locate 命令有执行权限
  3. 执行/usr/bin/locate 命令时,组身份会升级为slocate,
  4. 命令结束,lamp身份返回lamp组

SetBID (Stickt Bit)

作用

  • 只对目录有效
  • 普通用户对该目录只有w和x 权限,普通用户可以写入权限
  • 如果没有黏着位,用户可以删除此目录所有的文件,包括其他用户建立的文件
  • 一旦赋予黏着位,除了root可以删除所有文件外,其他用户即使有w权限,也不能删除其他用户建立的文件,只能删自己的

文件系统属性 chattr 权限

选项:

  • i:
  • 如果文件设置i属性,那么不允许对于文件进行删除,改名,也不能添加和修改数据,
  • 如果对于目录设置i,只能修改目录下文件的数据,不能建立和删除文件
  • a:
  • 文件:只能在文件中添加数据,不能修改
  • 目录:只允许建立和修改,不能删除

查看文件系统属性

lsattr 选项 文件名

-a : 全部文件和目录

-d:如果是目录,则列出目录本身属性,而不是子文件

命令格式

....

sudo权限

操作对象是系统命令

使用

visudo :实际上是修改 /etc/sudoers

文件系统管理

df 命令

df -h 常用

du 命令

du -sh 文件路径

df 和 du 命令区别

  1. df 命令从文件系统考虑,不仅仅考虑文件占用空间,还要考虑被命令或者程序占用的空间(最常见为删除了索引的文件,但是内部并没有被删除)
  2. du 命令是面向文件的,只会计算文件或者目录占用空间

文件系统修复命令

fsck 选项 分区设备文件名

选项:

-a 不显示用户提示,自动修复

-y 自动修复

dump2fs 查看磁盘状态

挂载命令

查询与自动挂载

  • mount [-l]
  • mount -a
  • 根据配置文件 /etc/fstab 的内容, 自动挂载

卸载

umount 设备名或者挂载点

挂载U盘

fdisk -l

查看U盘设备

mount -t vfat /dev/sdb1 /mnt/usb

linux 默认不支持 NTFS文件系统

如何支持

  • 内核编译
  • 下载 Ntfs - 3G插件

fdisk 分区

查看新硬盘: fdisk - l

重新读取分区信息: partprobe

分区自动挂载与fstab文件修复

依赖 /etc/fstab

  • 分区设备文件名或者UUID
  • 挂载点
  • 文件系统名称
  • 挂载参数
  • 指定分区是否被dump备份,0不备份,1每天备份,2不定期备份
  • 分区是否被fsck 检测, 0不检测,其他数字代表检测的优先级高,1的优先级当然比2高

检测自动挂载报错:

mount -a 查看有无报错

/etc/fstab 文件修复

mount -o remount,rw / 重新挂载

分配swap分区

加入缓存

格式化: mkswap /dev/sdb6

加入swap分区:

swapon /dev/sdb6

取消

swapoff /dev/sdb6

linux 服务

命令: chkconfig --list 服务自启动

ps aux

RPM包安装服务的位置

  • 源码安装在指定位置:/usr/local
  • RPM安装在默认位置

独立服务启动

  • /etc/init.d/独立服务名 start | stop |status | restart
  • service 独立服务名 start | stop |restart |status

独立服务自启动

  • chkconfig [--level 级别]][独立服务器名][on | off]
  • /etc/rc.d/rc/local
  • ntsysv 命令

linux 进程管理

作用

  • 查看服务健康状态
  • 查看所有进程
  • 杀死进程

PS 命令

  • ps aux (BSD模式)
  • ps le (标准)

参数说明

USER 那个用户产生
PID 进程pid号码
%CPU cpu占用百分比
%MEM 物理内存占用百分比
VSZ 占用虚拟内存的大小
RSS 占用实际物理内存的大小
TYT 该进程在哪个终端运行

查看系统监控状态

top [选项]

kill 命令

kill -l 查看信号

常用

1 SIGHUP 立即关闭进程(重启

9 SIGKILL 立即结束程序

15 SIGTERM 正常结束程序

查看后台的工作

jobs [-l]

后台暂停的工作回复到前台操作

fg %工作号

系统资源查看

开机时内核检测

dmesg | grep cpu

查看内容使用状态

free [-b|-k|-m|-g]

缓存和缓冲的区别

缓存: 加强读取

缓冲: 加强写入

查看CPU 信息

cat /proc/cpuinfo

uptime 命令

查看系统与内核的相关信息

uname [选项]

查看当前系统位数

file /bin/ls

lsb_relaeas -a

系统定时任务

crond 服务管理和访问控制

  • service crond restart
  • chkconfig crond on

用户 cronttab 设置

crontab [选项]

五个星号的含义

项目 含义 范围
第一个 * 一小时的第几分钟 0-59
第二个 * 一天中第几个小时 0-23
第三个 * 一个月当中的第几天 1-31
第四个 * 一年中的第几个月 1-12
第五个 * 一周当中星期几 0-7(07都是星期日)

 

特殊符号 含义
* 代表任何时间
, 代表不连续时间如:"0 8,12,16 * * *" 代表每天8,12,16时执行一次
- 代表连续的时间范围 "0 5 * * 1-6"周一到周六 5 点 0分执行
*/n 代表每隔多久执行一次, "*/10 * * * *" 每十分钟执行一次

linux日志

rsylogd 的新特点

  • 基于 tcp 协议传输
  • 更安全
  • 有及时分析框架
  • 后台数据库
  • 配置文件可以写简单的逻辑判断
  • 与syslog 配置文件兼容

rsyslogd 日志文件格式

  • 基本包含以下四列
  • 事件产生时间
  • 发生事件主机名字
  • 产生时间服务名或程序名
  • 事件的具体信息

/etc/rsyslog.conf 配置文件

authpriv.* /var/log/secure 日志位置

#服务器名称[连接符号]日志等级

#认证相关服务.所有日志等级 记录在/var/log/secure 日志中

系统运行参数

运行级别命令

runlevel

init 运行级别

vim /etc/inittab 系统默认运行级别系统启动过程

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
缓存 网络协议 Linux
Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现
Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现
50 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
56 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
38 0
|
3月前
|
缓存 监控 Linux
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
|
3月前
|
安全 Linux 数据安全/隐私保护
Linux 学习笔记十八:SELinux 相关概念
Linux 学习笔记十八:SELinux 相关概念
|
3月前
|
Linux 开发工具 索引
Linux 学习笔记索引
Linux 学习笔记索引
|
3月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
3月前
|
存储 Linux 数据库
Linux学习笔记十三: 数据备份与恢复
Linux学习笔记十三: 数据备份与恢复
|
3月前
|
监控 Linux
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理
|
3月前
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理