Linux学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux touch 的文件默认是没有可执行权限的

前言


早年看视频整理的一些笔记,虽然比较基础但是基本包含了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日志并进行多维度分析。
相关文章
|
10月前
|
网络协议 Java Linux
Linux学习笔记
Linux学习笔记
122 0
|
6月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
5月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
72 3
|
6月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
7月前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
79 0
|
8月前
|
Shell Linux
RSIC-V“一芯”学习笔记(二)——Linux入门教程
RSIC-V“一芯”学习笔记(二)——Linux入门教程
|
9月前
|
数据可视化 Shell Linux
技术笔记:Linux学习笔记1
技术笔记:Linux学习笔记1
48 0
|
10月前
|
Linux 开发工具 索引
Linux 学习笔记索引
Linux 学习笔记索引
|
10月前
|
缓存 监控 Linux
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
Linux 学习笔记十九:常见监控工具
|
10月前
|
监控 Linux
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理
Linux学习笔记十二:Linux 工作管理