柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: LINUX
2012-07-18 09:20:28
2010-01-22 18:29:02| 分类: (acl)文件访问控 | 标签:acl 文件系统 mount debian blocks |字号大中小
传统的Linux文件系统的权限控制是通过user、group、other与r(读)、w(写)、x(执行)的不同组合来实现的。随着应用的发展,这些权限组合已不能适应现时复杂的文件系统权限控制要求。例如,我们可能需把一个文件的读权限和写权限分别赋予两个不同的用户或一个用户和一个组这样的组合。传统的权限管理设置起来就力不从心了。为了解决这些问题,Linux开发出了一套新的文件系统权限管理方法,叫文件访问控制列表(Access Control Lists,ACL)。
要启用ACL,需内核提供ACL支持和安装ACL管理工具。现在的2.6内核都提供ACL支持,在编译内核时只要在file systems分支下,把Ext2 POSIX Access Control Lists或Ext3 POSIX Access Control Lists选中就可以了。用以下命令挂接硬盘启用文件系统ACL。
debian:~# mount -t ext2 -o acl /dev/hda1 /mnt/hda1
我们也可把选项写到/etc/fstab文件中,在需启用acl的分区选项包含acl参数。
ACL有两种,一种是存取ACL(access ACLs),针对文件和目录设置访问控制列表。一种是默认ACL(default ACLs),只能针对目录设置。如果目录中的文件没有设置ACL,它就会使用该目录的默认ACL。要设置ACL,首先要安装管理工具,它们分别是getfacl和setfacl,在debian中只要安装acl软件包即可。
debian:~# apt-get install acl
setfacl工具可为文件和目录ACL,命令格式如下:
setfacl -m
rules的格式如下,多条规则间可用逗号分隔。
u:uid:perms #为用户设置ACL,perms为r、w、x的组合
g:gid:perms #为组设置ACL
o:perms #为其它组设置ACL
m:perms #设置有效权限屏蔽
下面是setfacl的实例:
debian:~# setfacl -m u:jims:rw testfile.txt
#-m选项表示添加或修改文件或目录的权限访问列表
debian:~# setfacl -x u:jims:rw testfile.txt
#-x选项表示删除文件或目录的访问列表
要设置默认的ACL,只在rules前加一个d:,以表示指定一个目录,如:
debian:~# setfacl -m d:o:rx /data
getfacl用以显示文件或目录的ACL,如:
debian:getfacl debian.xml
# file: debian.xml
# owner: jims
# group: jims
user::rwx
group::r--
other::r--
tune2fs是linux下面重要的文件系统调整工具,其中的几个选项解释如下:
-c:表示文件系统在mount次数达到设定后,需要运行fsck检查文件系统。
-i:文件系统的检查间隔时间。系统在达到时间间隔时,自动检查文件系统。
-l:显示文件系统的很多参数。
-j:转换为ext3文件系统。
-m: Set the percentage of reserved filesystem blocks。 设置保留的空间百分比
-o: Set or clear the indicated default mount options in the filesystem.设置默认加载参数
通常如果使用ext3文件系统的话,使用-c 0关掉mount次数达到后的文件系统检查。
tune2fs -m 10 /dev/sda1
tune2fs -o acl,user_xattr /dev/sda1
tune2fs -i 0 -c0 /dev/sda1
显示当前的磁盘状态(dumpe2fs)
[root@tonykorn97 /]# dumpe2fs /dev/sda1
dumpe2fs 1.35 (28-Feb-2004)
Filesystem volume name: /boot
Last mounted on:
Filesystem UUID: 5bd40e99-41d8-4ec8-919f-2b2a11ef5435
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 26000
Block count: 103980
Reserved block count: 5199
Free blocks: 91961
Free inodes: 25966
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2000
Inode blocks per group: 250
Filesystem created: Tue Apr 1 22:19:51 2008
Last mount time: Tue Apr 1 14:49:10 2008
Last write time: Tue Apr 1 14:49:10 2008
Mount count: 2
Maximum mount count: -1
Last checked: Tue Apr 1 22:19:51 2008
Check interval: 0 (
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: tea
Directory Hash Seed: b48bee98-d59c-4c25-9d0b-50d5f5296152
Journal backup: inode blocks
文件系统属性的查看
dumpe2fs 显示文件系统的super block和blocks group的信息
不加参数将显示全部的内容
-h :仅列出 superblock 的数据
superblock 常用的显示内容注释如下
Filesystem volume name:
Last mounted on: / <==此文件系统的挂载点
Filesystem UUID: 8e4f6141-20f9-4f5a-aad4-bac048374152 <==此文件系统的代号
Default mount options: user_xattr acl <==默认的挂载选项
Inode count: 960992 <==Inode的数量
Block count: 3840000 <==Block的数量
Reserved block count: 192000 <==保留的块数量
Free blocks: 3093336 <==剩余的地段数量
Free inodes: 855672 <==剩余的Inode数量
First block: 0
Block size: 4096 <==块的大小为4K
Mount count: 21 <==文件系统被挂载的次数
Maximum mount count: -1 <==文件被挂载多少次后需要FSCK,如果是负数或者是0的话,就永远不会自检了
Reserved blocks uid: 0 (user root) <==为某个用户保留的块
Reserved blocks gid: 0 (group root) <==为某个组保留的块
First inode: 11
Inode size: 256 <==Inode的大小
以上都是supberblock的相关信息,如果想看Block Group的相关信息,可以用dumpe2fs命令,不加参数。supberblock下面以Group开头的就是Block Group的相关信息了
Group *: <==这些都是block group的信息
查看文件系统的UUID
blkid
[root@yufei ~]# blkid
/dev/sda1: UUID="744b208e-0951-40e1-a4ae-1ece29840ddb" TYPE="ext4" LABEL="/dev/sda1"
/dev/sda2: UUID="c70cd6a4-09cd-4aea-ba94-f3641df4e981" TYPE="swap"
ls -l /dev/disk/by-uuid/
[root@yufei ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx. 1 root root 10 Apr 4 12:37 744b208e-0951-40e1-a4ae-1ece29840ddb -> ../../sda1
lrwxrwxrwx. 1 root root 10 Apr 4 12:37 c70cd6a4-09cd-4aea-ba94-f3641df4e981 -> ../../sda2
fdisk /dev/sda
[root@yufei ~]# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00093fdc
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 1978 524288 82 Linux swap / Solaris
q退出
这里可以看到交换分区的信息,如果用df是看不到交换分区的信息的。关于fdisk这个分区命令的使用,后面还会详细介绍。
调整文件系统的参数
更改文件系统的标签e2label命令使用的格式
e2label 设备名称 新的Label名称
注:不知道如何还原LABLE,如果有朋友知道的话,可以留言分享一下。谢谢!
常用选项说明:
-l 查看文件系统信息 相当于dumpe2fs -h查看到的信息
-c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过此次数后就会强制自检
-i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
-m reserved-blocks-percentage 设置保留块的百分比
-r reserved-blocks-count 设置保留块多少
-L volume-label 设置/修改文件系统的标签。类似e2label的功能。
-o [^]mount-option[,...] Set or clear the indicated default mount options in the filesystem. 设置或清除默认挂载的文件系统选项
tune2fs -o ^acl /dev/sda1清除acl属性
tune2fs -o +acl /dev/sda1
-u uid
-g gid
设置保留blocks的用户和用户组
-U UUID
如何获得UUID信息
uuidgen会动态的获得文件系统的UUID信息,可以根据自己的喜好来改。
他有两个参数
-r随机获得
-t根据时间随机获得
注意:修改过后,你需要修改对应的/etc/fstab和/boot/grub/menu.lst这两个文件,否则你的系统就启动不了。我在做实验的时候,把fstab这个文件里面的改了,忘记了menu.lst文件,导致找不到启动设备。
关于block和inode的数量和大小,这些是在创建文件系统时候生成的,如果想改变的话,就需要重新对其格式化。