Linux学习笔记(二)
六、零散基础知识
1、process(进程):用户执行应用程序的过程
2、权限:用户对于应用程序的执行能力
3、Linux实现权限隔离机制(多用户)
4、操作系统识别用户
用户:UID
组:GID(逻辑容器,包含用户,实行多个用户对于某个文件或应用程序分配相同的权限)、
用户分类:
管理员用户:root UID:0
普通用户:1000-65535
程序(系统)用户:1-999
组分类:
管理员组/普通组
基本组:Linux中,新建用户时,没有指定隶属于的组,系统会为该用户建立一个同名组,作为该用户基本组
附加组:方便以后为用户分配权限
5、解析:
/etc/passwd:存储用户基本信息
/etc/shadow:存储用户的影子口令
/etc/passwd 解释:用冒号隔开;eg cat /etc/passwd //会以冒号隔开,列出七列信息
第一列:用户的登录名
第二列:加密密码(X表示密码占位符,密码保存在 /etc/shadow)
第三列:用户的ID号
第四列:组的ID号
第五列:用户的描述信息
第六列:用户宿主目录
第七列:用户默认使用的shell(cat /etc/shells //查看所有支持的shell)
/etc/shadow 解释:用冒号隔开,保存用户密码相关信息文件
第一列:用户的登录名
第二列:用户加密后的密码
密码区域解释:三部分组成,用$隔开
第一部分:加密算法(对称加密、非对称加密、单向加密)
第二部分:随机序列号(salt)
第三部分:随机序列号和密码共同加密后的字符串
第三列:最后一次更改密码的时间
第四列:密码最小使用时间
第五列:密码最大使用时间
第六列:密码过期前的警告时间
第七列:密码过期后的一个宽限时间
第八列:密码失效时间
第九列:保留
6、新建用户命令:useradd
1>useradd文件解释:
2>/etc/skel:用于存放新用户配置文件,该目录的默认文件为隐藏文件。在创建新用户的时候,该目录下的所有文件会自动复制到新用户的家目录中。
skel文件解释
3>login.defs文件解释
4>更改组id命令:useradd -u 2000 tom //用户tom的id号改为2000
7、passwd命令:为用户设置密码;锁定解锁用户;查看状态
语法:passwd [option] user_name
参数:
-l:锁定用户(暂时无法登陆系统)
-u:解锁用户
-S:查看用户状态(重要)
--stdin:标准输入
-d:删除用户密码,允许普通用户以空密码使用
-e:快速设置密码过期
8、使用man 5 file_name 可以查看文件文本格式说明
9、userdel命令:删除用户(修改/etc/passwd、/etc/shadow、/etc/group)
语法:userdel [option] user_name
-r:删除用户时,连同删除用户的宿主目录
10、usermod:修改用户属性(实际是修改/etc/passwd中的内容)
语法:usermod [option] user_name
usermod -g groupname username是把username的主组变成groupname,而usermod -G groupname username只是把用户加到groupname组,并没有改变主组。
-c:更改用户的描述信息
eg:usermod -c "" tom
-d:更改用户的宿主目录
-l:修改用户的登录名
-s:修改用户的shell
11、chsh命令:修改用户的shell(相当于usermod -s)
语法:chsh [options] user_name
-s:后面跟shell,更改用户的shell
-l:显示当前系统支持的shell(/etc/shells)
12、finger:显示用户的基本信息
finger [options] user_name
13、chfn:修改用户的基本信息
14、id命令:显示用户和组的id号
15、chage:修改用户密码时间信息(shadow中的内容)
语法:change [options] user_name
七、linux组管理
1、组:逻辑容器、存放用户、实现集中授权
配置文件:
/etc/group
文件内容解释:
第一列:组的名字
第二列:组的密码区域
第三列:组的ID号(GID)
第四列:组的成员
/etc/gshadow
文件内容解释
第一列:组的名字
第二列:组的密码
第三列:组的管理员
第四列:组成员列表
2、groupadd:创建一个新组
-d:创建组时指定组的ID
-r:添加一个系统组
3、groupdel:删除一个组
默认情况下,不能删除一个用户的基本组,但是:
1>可以通过修改用户的基本组后删除该组,
2>可以删除用户的同时,系统会删除同名基本组(该组是一个用户的基本组)
4、groupmod:修改组的属性
-g:修改组的GID号 eg:groupmod -g 1000 tom //1000是GID号
-n:为组重命名
3、gpasswd:为组设置密码,设置组的管理员,添加组成员
-A:为组设置管理员
-M:添加组成员
-r:为组移除密码
-R:让组的密码失效
-a:为组添加成员(组的管理员操作命令)
-d:删除组成员(组的管理员操作命令)
4、newgrp:为用户修改有效组(只在当前shell生效)
exit退出
5、groupmems:为组添加成员,显示组成员列表
八、linux权限管理
1、基础
文件:
r:读权限,可以查看文件的内容,使用cat,more等命令
w:写权限,可以修改文件的内容及删除文件
x:执行权限,可以执行文件或脚本
目录:
r:读权限,可以查看目录中的列表,执行ls命令
w:写权限,可以向目录中新建文件或目录等
x:执行权限,可以执行cd命令
权限用数字标识
r:4
w:2
x:1
---:0
2、 chown:改变文件属主
语法:chown 属主名 文件名或者目录名 eg:chown tom a.txt 或者 chown tom /opt/
-R:递归更改目录的属主或属组
-reference:复制一个权限属性到目标文件 eg:chown --reference=a.txt b.txt
改变文件属组:修改文件属组时,在组名前添加点(.)符号或者冒号(:)
eg:chown .tom a.txt 或者 chown :tom a.txt
同时修改属组和属组:
语法:chown username.groupname filename 或者 chown username:groupname filename
eg:chown tom.mike a.txt
把目录及目录下文件的属组及属主更改:chown -R tom:mike /etc/
-R:递归更改
3、chgrp:只能更改属组
4、chmod:修改文件或目录权限
语法:chmod [augo] [+-=] [rwx] file_name eg:chmod a+x a.txt //为所有用户添加执行权限
a:所有用户
u:文件属主
g:文件属组
o:其他用户
+:为用户添加权限
-:为用户减少权限
=:为用户赋予权限
5、默认情况下,Linux系统新建文件时不添加执行权限
6、umask:反掩码(在/etc/login.defes中定义)语法:umask num
7、Linux隐藏权限
chattr:修改文件的隐藏权限,/ /dev/ /tmp/ /var/ /etc/ 目录不受chattr保护
语法:chattr +-= [options] file_name
a:只能向文件追加数据,不能删除
i:任何用户不能删除
A:不同步访问时间
8、lsattr:查看文件或目录的隐藏权限
9、3A认证
认证机制:authen
授权机制:authorization
审计机制:audition
10、名称解析:字符解析成数字、数字解析成字符
可以用文件解析、用DNS解析、ldap(轻量级目录服务访问协议)、db(数据库)
11、nsswitch(name services switch):名称解析
nsswitch.conf(name service switch configuration,名字服务切换配置)文件位于/etc目录下,由它规定通过哪些途径以及按照什么顺序以及通过这些途径来查找特定类型的信息,还可以指定某个方法奏效或失效时系统将采取什么动 作。Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式: Info: method[[action]] [method[[action]]...] 其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法,action是对前面的method返回 状态的响应。action要放在方括号里。
nsswitch.conf的工作原理
当需要提供nsswitch.conf文件所描述的信息的时候,系统将检查含有适当info字段的配置行。它按照从左向右的顺序开始执行配置行中指定的方法。在默认情况下,如果找到期望的信息,系统将停止搜索。如果没有指定action,那么当某个方法未能返回结果时,系统就会尝试下一个动作。有可能搜索结束都没有找到想要的信息。
应用程序通过nsswitch来联系名称解析库(.so文件)
nsswitch配置文件:/etc/nsswitch.conf
12、readelf:查看elf文件
13、getent命令:可以用来察看系统的数据库中的相关记录
14、PAM(需重看视频做实验)
九、磁盘结构
1、基础
(接图)检查MBR是否有效
主分区+扩展分区<=4个
扩展分区:16字节空间,只能有一个,扩展分区是一个指针,指向磁盘另外的位置,不能直接存储数据。
mkfs:make file system 创建文件系统
-t:指定文件系统
eg:mkfs -t ext3 dev.name
vfs:虚拟文件系统,是一个库。
fdisk命令:fdisk -l 查看硬盘列表
/proc/partitions:查看系统分区情况
mount命令:挂载
eg:mount /dev/sdb1 /sdb1 ///把dev/sdb1挂载到/sdb1下
实现开机自动挂载:修改 /etc/fstab文件
fstab文件内容
UUID号、挂载点、文件系统、默认选项、是否开机检查、是否备份
blkid命令:查看UUID号
十、软件包管理工具:RPM(Redhat package manager)
1>应用程序:和cpu架构密不可分。
应用程序中包含:1、二进制文件(可执行文件)2、库 3、配置文件 4、帮助文件
2>源代码——编译(分成两步:1、生成二进制文件;2、匹配底层架构)——链接(应用程序与库文件链接的过程。库(.so文件):静态库和动态库)
静态链接过程:把库文件集成到应用程序中
动态链接库:库文件和应用程序分开,做成链接
3>程序=数据+指令(text中)
4>内存地址空间
text:存放指令
date+BSS:date存放数据,BSS:block system of symbol :存放初始化为0的变量
堆:heap存放运行中临时文件
栈:stack存放应用程序的变量和函数等。
5>软件包管理器的核心功能:1、制作软件包 2、安装、卸载、升级、查询、校验
6>RPM优点
rpm软件包中包含了编译过的程序与配置文件,用户不用重新编译
rpm在安装前,首先会检查硬盘容量,操作系统版本等,避免错误安装
rpm在使用rpm数据库管理,数据中记录应用程序的参数,便于升级,卸载,查询(rpm数据库位于:/var/lib/rpm)
rpm本身会提供应用程序版本信息,相关属性,软件名称,用途等,便于用户了解
7>rpm包位于:/media/packages/
8> rpm命名:
主包:eg:bind-libs-9.7.1-1.e15.i586.rpm
子包:eg:bind-libs-9.7.1-1.e15.i586.rpm / bind-utils-9.7.1-1.e15.i586.rpm
包名格式:name-version--release.arch.rpm
9>包类型:rpm包(经过源码编译后的软件包) .tar.gz包(源码包,没有经过编译)
10>rpm参数 (eg:rpm -ivh name.rpm)
-i:安装软件包
-h:以#显示进度,每个#代表2%
-v:显示安装详细信息
--nodeps:忽略依赖关系,可能导致软件包安装不完整
--replacepkgs:重新安装,替换原有安装
--force:强行安装,可以实现重装或降级
-q package_name:查询指定的包是否已经安装
-qa:查询已经安装的所有包
-qi package_name:查询指定包的说明信息
-ql package_name:查询指定包安装后生成的文件列表
-qc package_name:查询指定包安装的配置文件
-qd package_name:查询指定包安装的帮助文件
11>重建数据库
rpm --rebuilddb :重建数据库,一定会重新建立
rpm --initdb:初始化数据库,没有才建立,有就不用建立
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?