8 linux文件和目录的属性及权限
//文件系统:
文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘(包括光盘、软盘、闪盘及其他存储设备)或分区上组织文件的方法,如ext2,ext3,NTFS或者FAT;
文件系统是在组织存储文件或者数据的方法,目的是易于查询和存取数据。
文件系统是基于存储设备的,比如:硬盘或者光盘,并且包括文件物理位置的维护;也可以说文件系统也是虚拟数据或者网络数据存储的方法,比如:NFS。
目前,UNIX/LINUX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统)、ext2/ext4/ZFS和Reiserfs等
硬盘最小存储单位是扇区,一个扇区大小为512个字节bytes。数据存储的最小单位则不是扇区。因为扇区来存储效率很低。,读取数据时磁头是一个扇区一个扇区的读取,
即如果文件10M,那么磁头要进行10M=1024*1024*10字节/512字节=20480次I/O,这样效率极其低下的。
块设备:
就是以块(比如磁盘扇区)为单位收发数据的设备,他们支持缓冲和随机访问(不必顺序读取块,而是可以在任意时候访问任何块)等特性。
块设备包括硬盘、CD-ROM和RAM盘。与块设备相对的是字符设备,字符设备没有可以进行物理寻址的媒体。字符设备包括串行端口和磁带设备,只能逐字符的读取这些设备中的数据。
逻辑块:
为了提高硬盘读取数据效率而诞生的,也叫数据块。逻辑块是在分区进行文件系统格式化时所指定的“最小存储单位”,这个最小存储单位以扇区为基础,所以逻辑块的大小总是以扇区的2的n次方倍。
10M=10240K=10240*1024bytes/1024*4bytes =2560次IO,结果:磁头可以一次读取一个数据块,这样效率提高了!
10M=10240K/4K=2560次 IO.
逻辑块的规划是需要计划的,并不是越大越好。因为一个逻辑块最多只能容纳一个文件(linux的ext2中),
若逻辑块规划太大,会浪费磁盘空间。举例:如果一个逻辑块为4KB,而一个文件只有0.1KB大小,而这个小文件仍然占用一个逻辑块会浪费3.9KB。
故建议:在规划磁盘时,需要考虑到主机的用途,比如:BBS,blog主机,由于文章短小,文件、图片较小,那么逻辑块分配的小一点好,如4K;
如果主机主要用在存储大容量的文件(如视频文件),那么考虑到数据读取效率逻辑块大一点好,如16-32K
[root@localhost ~]# dumpe2fs /dev/sda1 |grep -i "Block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
磁盘组成:
//磁盘可以分成一个或者多个分区,且每个分区内有且仅有一个文件系统;
//每个分区=引导块+超级块+若干快组;
//每个块组包含:超级块副本、配置信息、i节点图(记录哪些节点可用)、位块图(记录哪些块是否可用)、若干i节点、数据块(逻辑块)
磁盘分区:
//权限
[root@localhost oldboy]# touch ett1.txt ett2.txt
[root@localhost oldboy]# ls -lh ett1.txt ett2.txt
-rw-r--r--. 1 root root 0 7月 28 16:51 ett1.txt
-rw-r--r--. 1 root root 0 7月 28 16:51 ett2.txt
[root@localhost oldboy]# chmod 755 ett1.txt
//u:属主;g:属组;o:其他用户;a:代表属主、属组和其他用户
//+:添加某个权限;-:取消某个权限;=:赋予给定权限并取消其他权限
[root@localhost oldboy]# chmod u+x,og+x ett2.txt //
[root@localhost oldboy]# ls -lh ett1.txt ett2.txt
-rwxr-xr-x. 1 root root 0 7月 28 16:51 ett1.txt
-rwxr-xr-x. 1 root root 0 7月 28 16:51 ett2.txt
[root@localhost oldboy]# chmod 700 ett.txt
[root@localhost oldboy]# ll ett.txt
-rwx------. 1 root root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# chmod 700 -R oldboydir/ //-R 递归改变目录下所有目录和文件的权限
[root@localhost oldboy]# ll oldboydir
总用量 0
-rwx------. 1 root root 0 7月 28 16:58 old1.txt
-rwx------. 1 root root 0 7月 28 16:59 old2.txt
[root@localhost oldboy]# chmod go=x ett.txt //
[root@localhost oldboy]# ll ett.txt
-rwx--x--x. 1 root root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# chmod u=x ett.txt //
[root@localhost oldboy]# ll ett.txt
---x--x--x. 1 root root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# chmod ug=rwx,o=r ett.txt //
[root@localhost oldboy]# ll ett.txt
-rwxrwxr--. 1 root root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# chmod ug=rwx,o=u ett.txt //
[root@localhost oldboy]# ll ett.txt
-rwxrwxrwx. 1 root root 0 7月 28 16:49 ett.txt
//默认权限分配命令umask
umask是通过八进制的数值来定义用户创建文件或者目录的默认权限。umask表示的是禁止权限。
对于文件:umask的设置是在假定文件拥有八进制666权限上进行,文件的权限就是666减去umask的掩码值;
对于目录:umask的设置是在假定目录拥有八进制777权限上进行,目录的权限就是777减去umask的掩码值;
[root@localhost oldboy]# touch ett.txt
[root@localhost oldboy]# ll ett.txt
-rw-r--r--. 1 root root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# umask //666 - 022 ==》644( 当前文件的权限)
0022
[root@localhost oldboy]# umask 044 //可设置umask值
[root@localhost oldboy]# umask
0044
//umask 一般放在用户相关SHELL的配置文件中:
[root@localhost oldboy]# vim /etc/login.defs
[root@localhost ~]# vim .bashrc
[root@localhost ~]# vim .bash_profile
或者 放在SHELL全局的配置文件中,比如:/etc/profile /etc/bashrc
//setuid 和setgid位是让普通用户可以以root用户的角色运行只有root账号才能运行的程序或命令。
//文件或者目录的归属关系:
主要定义文件或者目录归属哪个用户所有及归于哪个用户组所有。
linux 的安全性主要表现在用户管理和权限管理上!
//chown chgrp
[root@localhost oldboy]# ll
总用量 12
drwxr-xr-x. 2 root root 4096 7月 28 14:42 ett
-rwxr-xr-x. 1 root root 0 7月 28 16:51 ett1.txt
-rwxr-xr-x. 1 root root 0 7月 28 16:51 ett2.txt
-rwxrwxrwx. 1 root root 0 7月 28 16:49 ett.txt
drwx------. 2 root root 4096 7月 28 16:59 oldboydir
lrwxrwxrwx. 1 root root 10 7月 28 14:10 oldboydir_soft_link -> oldboydir/
-rw-r--r--. 1 root root 6 7月 28 14:16 oldboyfile_hard_link
lrwxrwxrwx. 1 root root 10 7月 28 14:05 oldboyfile_soft_link -> oldboyfile
[root@localhost oldboy]# chown oldboy ett.txt //chown 修改文件所有者和组别
[root@localhost oldboy]# ll ett.txt
-rwxrwxrwx. 1 oldboy root 0 7月 28 16:49 ett.txt
[root@localhost oldboy]# chgrp oldboy ett.txt //chgrp 修改文件的组所有权
[root@localhost oldboy]# ll ett.txt
-rwxrwxrwx. 1 oldboy oldboy 0 7月 28 16:49 ett.txt
浙公网安备 33010602011771号