2011年(42)
分类: LINUX
2011-07-31 21:06:34
文件权限管理扩展:
文件权限的模型:每个文件都有属主、属组 每一类用户都有对应的权限如属主、属组、其他 每一类用户都有三位权限:rwx 这是一般的文件权限模型的概念!
首先我们回顾一个命令:passwd 这是修改用户密码的命令,我们知道密码保存在 /etc/shadow这个文件里这个文件的权限是 400 属主、属组都是root 但普通用户却能用passwd这个命令来修改这个文件,再来看看passwd这个命令的权限 rwsr-xr-x 中间有个s位权限这是什么个东西呢?下面就说说这个SUID
SUID:Set UID 或者 Super UID 别管这个说的是什么!这个的本意是,如果一个文件被给予了SUID这种权限,当一个用户来执行这个文件时将以这个文件属主的身份来执行这个文件!这就是为什么普通用户为什么能使用passwd这个命令来修改/etc/shadow这个文件了,因为此时普通用户在使用passwd这个命令时是以root的身份来执行的,root管理员权限无穷大,这就能理解了吧!
SUID的功能:能临时使其他用户获得属主的执行权限。chmod u+s file 即可为文件添加s位权限
SGID:Set GID 对属组设置s位 通常对目录设置 使多个用户共享文件都有对文件有写权限
一般情况下用户创建文件的时候属主是用户,属组是用户的基本组
然而当我们对一个目录的属组设置了SGID得权限后,且在此目录里创建文件的用户的一个附加组跟目录的属组相同,那么用户在此目录下创建的文件的属组将使此目录的属组,因此只要是这个组的用户都能对此用户创建的文件具有读写的权限,这就有利于文件的共享!这在工作组workgroup中将十分有用!然而这会造成另外一种问题,因为只要是这个组的成员都对文件有写的权限就能随意的修改或删除此文件,为了防止恶意的删除引入了令一个权限位,sticky,t位需要指定在其他位上,这个权限位能在以上的情况下防止其他人删除自己创建的文件!即每个人都只能删除自己的文件,能修改或者看他人的文件但不能删除!
假设一种情景对上面的状况做个具体分析!具体情境如下:
我们新建一个目录:/workgroup 属主无所谓就为 root 吧 属组为 wkgroup 组 假设有3个用户redhat
gentoo,centos,这三个用户共有一个附加组是wkgroup,并且我们对/workgroup的属组设置了SGID权限位,其他设置了t位权限,此时redhat,gentoo,centos这三个用户在/workgroup这个目录下创建的文件的属组就是 wkgroup组啦!这3个用户都对彼此创建的文件有读写的权限!且彼此不能删除他人的文件!
系统的安全机制
umask
普通用户 0002
管理员 0022
DIR:
777-umask
666-umask
文件默认不给执行权限
自己指定 umask 的值 umask 027
因此当 666-umask 出现有执行权限的时候 它会默认加1 永远不给执行权限
umask命令设定的值 只临时有效 要想全局 永远有效 要定义在配置文件里
acl: Access Cotrol list 访问控制列表
getfacl file 查看文件的访问控制属性列表
setfacl
setfacl [options] id:operand
setfacl -m u:UID:PERM
setfacl -m g:GID:PERM
-x 取消
-m 指定
安全管理非常重要的功能
-b 删除所有
-k 删除默认
默认acl只能设定给目录 , 目录下的文件自动继承目录的默认访问控制列表
给acl,
设定mask 有效权限位
下面主要说下RAID的相关知识因为学习条件有限主要说明软RAID的玩法!
RAID 本来称为廉价冗余磁盘阵列它的诞生是为了解决具有高吞吐量的SCSI设备过贵而用廉价的磁盘设备以数组的方式排列起来提升性能的磁盘阵列,但由于后来的发展使之并不廉价,而是为了获取更高的性能或容错性能,后来更名为独立冗余磁盘阵列!
RAID的级别有:0-6,10,01
常见的有:
0,1,5,10
RAID0 条带 性能提升一倍 容错能力差
RAID1 镜像卷 容错能力强 磁盘利用率低50% 写入性能没有提升 读取性能提升一倍
RAID4 通常需要3块儿以上磁盘 第3块儿磁盘存储校验码 第3块儿盘会成为整个架构的瓶颈
RAID5 是RAID4的改进 循环的储存数据和校验码 磁盘利用率 (n-1)/n 只允许坏一块儿盘
RAID6 至少需要4块儿盘 磁盘利用率(n-2)/n 至多坏2块儿盘
高并发性 容错能力高
RAID10 两两镜像 再做条带 高并发 容错能力强
软RAID怎么实现
kernel space
内核内置了一个驱动 md 多设备模块有实现将多个磁盘按某种方式链接起来的能力
disk1+disk2=raid
mdadm 工作在用户空间 来定义怎么将磁盘做成RAID
如何去创建一个软RAID
mdadm 模式化的命令用法
mdadm [mode]
常见的模式
Assemble 装配模式
Create 创建模式
Follow or Monitor 监控模式
Grow 扩展模式 shrink
Manage管理模式
常用的选项
-A --assemble
-C --create
-F --follow,--monitor
-G,--grow
上面的几个选项对应以上的几种模式
--add 可以插入一个设备
--fail 可以模拟一个设备坏了
--remove 可以模拟拔出一个设备
-v
-s,--scan
mdadm的配置文件
/etc/mdadm.conf
mdadm -D --scan >> /etc/mdadm.conf
/etc/mdadm/mdadm.conf
mdadm -S /dev/mdn 停止一个正在工作中的软RAID设备
mdadm -A --scan 重新启动停止的软RAID设备
下面以如何创建软RAID1为例简单说明下上面命令的使用
我们创建一个2G的RAID1
首先创建俩个2G的分区
fdisk /dev/sda 动态的交互命令创建俩个分区具体过程不必说了吧 假设我们创建出来的俩个分区是
/dev/sda7 /dev/sda8 都调整为fd类型的!
接下来就是创建的过程了:
mdadm -C /dev/md1(这里跟设备的级别没关系只是按顺序对新常见的软RAID折本进行编号)
-a yes(强制创建前面的文件) -l(指定级别) 1 -n 2 /dev/sda7 /dev/sda8
完整的命令:mdadm -C/dev/md1 -a yes -l 1 -n 2 /dev/sda7 /dev/sda8
cat /proc/mdstat 可以查看软RAID的创建状态 watch 能动态的查看某个不断变化的文件 这里我们想动态的查看创建过程 可以watch -n .5(0.5秒刷新一次) `cat /proc/mdstat`
创建完成后就改格式化了:
mkfs.ext3 /dev/md1
创建个目录对这个设备进行挂载
mkdir /mnt/raid1
mount /dev/md1 /mnt/raid1
这样一个软RAID1就创建成功可以使用了!
关于RAID就说到这儿吧!
下面简单介绍下LINUX系统里的压缩与解压缩:
常见的压错工具
传统的 compress/uncompress, 后缀名 .Z
gzip/gunzip,.gz
gzip FILE ,FILE.gz
gzip -d = gunzip
默认动作是保留压缩后的文件,删除原文件
gzip -c messages > messages.gz 能保留原文件
-n [1-9] 指定压缩比 默认是6 数字越大压缩比越高 时间越长 不能压缩目录 如果把目录传递给它 它将逐个压缩目录里面的所有文件
zcat 查看压缩文件的内容
bzip2/bunzip2,.bz2
压缩比比gzip更强 用法跟gzip相同
有一点不同的是
bzip2 -k message 能保留原文件
bzcat 不用解压缩查看文件内容
zip/unzip,.zip
只能用unzip解压
-d删除压缩包里的某一个压缩文件
不删除原文件 要自己指定压缩后文件的名字
如:
zip myfile.zip file1 file2
能压缩目录
tar归档工具 很聪明 哈哈!能自己解压调用
cpio著名的归档工具
tar:归档 本身不做任何压缩 跟 压缩工具同时使用
用法 -c表示创建归档
f实现定义归档后名字叫什么
如:tar cf myfile.tar file1 file2
tf 查看tar里有什么文件
xf 释放归档文件 展开归档
vf 显示过程 cvf xvf等
z:调用gzip 进行压缩
j:调用bzip2 进行压错
-C 指定展开文件存放的目录
tar不能保存额外的访问控制列表信息
du -sh /etc 查看目录及内容的大小
最近发现自己有点懈怠的情绪总结的东西不是很好,以后会尽量调整!