标签:linux基础知识
程序由指令+数据组成
高级语言--编译器--汇编语言--编译器--机器语言
linux指的是GUN tools+linux内核
系统结构
硬件
内核(内核隐藏了硬件特性,将计算机的计算能力抽象提供给应用程序使用)
应用程序(基于内核的systemcal实现的程序)
shell(也是应用程序)
库函数(.a或.so----是程序,但是没有执行入口,只能被调用)
应用程序,基于库函数实现的程序
所有程序的运行,都是向内核发起请求,通过内核代为访问硬件。
运行应用程序的空间---用户空间
运行内核的内存空间---系统空间
应用程序的执行接口API
开发程序的接口---ABI
API不同决定了不同类型操作系统的应用程序不能在其他平台执行
systemcal过于底层,后来有人开发了高级的实现--库
专有库--.a
共享库--.so
程序的编译方式
静态编译--内嵌库
动态编译--使用共享库
进程的类型
与终端相关,通过终端启动
与终端无关,操作系统引导启动过程中自动启动
linux内核功能
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
linux的基本法则
由目的单一的小程序组成,组合小程序完成复杂任务
一切皆文件
尽量避免捕获用户接口,尽量少的与用户交互
配置文件以文本形式保存
linux根文件系统--树形结构
FHS文件层级结构标准
/
├── bin 所有用户的基本命令程序文件
├── boot 引导加载器必须用到的静态文件,kernel,initramfs(initrd),grub
├── dev 存储特殊文件或设备文件
├── etc 系统程序的配置文件,只能是静态的
├── home 普通用户的家目录
├── lib 位系统启动或根文件系统上的应用程序(bin,sbin)提供共享库
以及为内核提供的内核模块/lib/modules
├── lib64
├── media 便携设备挂载点
├── mnt 其他文件系统的临时挂载点
├── opt 附加应用程序的安装目录(第三方软件)
├── proc 伪文件系统---多为内核参数,抽象为文件格式
├── root 超级管理员的家目录
├── run
├── sbin 供管理员使用的工具程序
├── srv 当前主机为服务提供的数据
├── sys 伪文件系统--主要用来管理设备
├── tmp 存放临时文件---系统会定期清理
/usr 本身也是一个层级结构
├── bin
├── etc
├── games
├── include
├── lib
├── lib64
├── libexec
├── local 安装第三方程序的目录,也是一个层级结构安装本地应用程序
├── sbin
├── share
├── src
└── tmp -> ../var/tmp
/var 本身也是层级结构,经常发生变化的数据的存放位置
├── adm
├── cache
├── crash
├── db
├── empty
├── games
├── gopher
├── kerberos
├── lib
├── local
├── lock -> ../run/lock
├── log
├── mail -> spool/mail
├── nis
├── opt
├── preserve
├── run -> ../run
├── spool
├── tmp
└── yp
--------------------------------------------------------------------------------
linux用户权限管理
man 5 shadow
man 5 passwd
用户,计算机的使用者,每个使用者有一个id,计算机更容易识别数字
用户标识:用户名
用户密码:认证手段
操作系统提供
认证
授权
审计
组:用户组,用户的容器,便于实现权限分配
用户分类
管理员
普通用户
系统用户
登陆用户
用户标识:userid--UID
16bits的二进制数字0-65535
管理员为0
普通用户:1--65535
系统用户:1--499(centos5,6)
1--999(centos7)
登陆用户:500--60000(centos6)
1000--60000 (centos7)
名称解析:
用户名<---->UID
根据名称解析库进行 /etc/passwd
用户组的分类
分类1
管理员
普通用户
组id--GID
管理员为0
普通用户:1--65535
系统用户:1--499(centos5,6)
1--999(centos7)
登陆用户:500--60000(centos6)
1000--60000 (centos7)
分类2
用户的主组(基本组)
用的附加组
分类3
私有组:组名同用户名一样,且只有一个用户
共有组:组内可以包含多个用户
认证信息
通过对比事先存储的,与登陆时提供的信息是否一致
用户密码:/etc/shadow
组密码:/etc/gshadow
组的信息库:/etc/group
密码的使用策略
1使用随机面膜
2最短长度不要低于8位
3应该使用大小写字母,数字和标点符号四类中的三类
4定期更换
权限管理
进程安全上下文
进程对文件访问权限应用模型
进程的属主与文件的属主是否相同,如果相同则运行属主权限
进程的属主与文件的属主不相同,对比属组权限是否相同,相同则应用属组权限
进程的属主既不是文件的属主也不是同一属组,则应用其他人权限
九个字段RWX-RWX-RWX
前三个是属主
第二个是属组
第三个是其他人
R:读
W:写
X:执行
对于文件
R:可获取文件的数据
W:可修改文件的数据
X可将此文件运行为进程,普通文件没有执行权限
对于目录:
R:可使用ls命令获取其下的所有文件列表,但是不包括详细信息不能使用ls -l
W:可以膝盖此目录下的文件列表,即创建删除文件
X:可以cd至此目录中,可使用ls -l
八进制权限表示法:r=4 w=2 x=1
三位数字,每个数字分别表示相应的权限如:777,664,640,600,755,750,775
注意:
用户仅能修改属主为自己的那些文件的权限
只有管理员能修改别人文件的权限
只有管理员能够修改文件的属主和属组
--------------------------------------------------------------------------------
linux系统上的特殊权限
SUID
SGID
STICKY
SUID:
默认情况下,用户发起的进程,进程的属主不是其发起者;因此是不是以其发起者的身份运行,
而是以文件自己的属主身份运行。
SUID的功能:用户运行某程序时,如果此程序拥有SUID的权限,程序以其属主身份运行
passwd命令具有SUID
一般情况下,不建议给程序设置SUID,风险较大。
有执行权限的为小写的s
没有执行权限的为大写S
chmod 设置SUID
chmod u+1 -s file
SGID:
一般用户创建文件夹时应用此权限的文件夹,其他用户在此目录下创建文件的属组为SGID组。不是用户的主组
SGID的功能:
当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中创建新文件或目录时,新建的文件的属组不是用户的基本组(私有组),而是此目录的属组。
chmod设置SGID
chmod u+1 -s dir
STICKY
功能:对于属组或全局可写的目录组内的所有用户或系统上的所有用户在此目录中都能创建新文件或删除文件;如果为此类目录设置sticky权限,则每个用户能创建文件,且只能删除自己的文件。
chmod设置STICKY
chmod o+1 -t dir
如果其他用户原本有执行权限则是小写t
否则是大写T
系统上的/tmp和/var/tmp均有STICKY权限
管理特殊权限的另一种方式
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
chmod 1755
facl:
文件的额外赋权机制,针对指定用户和组
在原有UGO之外,另一层让普通用户能控制赋权给另外用户或组的赋权机制
setfacl -m u:用户名:rwx 文件名
g:组名
getfacl 文件名 查看文件的facl权限
取消授权: setfacl -x u:name file
g:name
标签:linux基础知识
原文地址:http://yangyouwei.blog.51cto.com/114816/1829343