文件管理
文件系统应该具备的五个基本功能:
1. 用户能够用文件名对存储介质上的信息进行访问,文件系统负责完成对文件的按名存取。
1. 用户能够用文件名对存储介质上的信息进行访问,文件系统负责完成对文件的按名存取。
2. 用户能创建一个新文件或删除一个文件,并能对指定的文件进行打开、关闭、读、写、执行等操作。
3. 对文件提供保护和保密措施,从而防止对文件的无意或有意的破坏,并实现对文件的共享。
4. 对文件存储空间的管理。
5. 文件系统应提供转储和恢复的能力,尽量减少因系统发生故障时所造成的破坏。
Linux这种操作系统的兼容性很强,支持的文件系统格式大体可以分为以下几类。
磁盘文件系统
网络文件系统
专有、虚拟文件系统
目前Linux磁盘文件系统中普遍采用的文件格式是Ext3。
虽然FAT16、FAT32、NTFS是Windows系统的文件格式,但是Linux系统同样可以很好的支持这些文件格式。
磁盘文件系统
网络文件系统
专有、虚拟文件系统
目前Linux磁盘文件系统中普遍采用的文件格式是Ext3。
虽然FAT16、FAT32、NTFS是Windows系统的文件格式,但是Linux系统同样可以很好的支持这些文件格式。
基本目录
Linux文件系统分层标准FHS(Filesystem Hierarchy Standard)。
基本目录,熟悉基本目录
在linux系统中,不同的文件存放在不同的基本目录中。充分的认识这些基本目录,有助于对Linux系统的整体了解。
例如:
/bin 基本命令的二进制文件,这里包含了启动系统和在单用户模式下运行系统所需要的文件。
基本目录,熟悉基本目录
在linux系统中,不同的文件存放在不同的基本目录中。充分的认识这些基本目录,有助于对Linux系统的整体了解。
例如:
/bin 基本命令的二进制文件,这里包含了启动系统和在单用户模式下运行系统所需要的文件。
Linux文件系统和Windows文件系统比较
这两种文件系统可以从以下几个方面进行比较
文件格式(windows: FAT 16、 FAT 32、 NTFS;Linux: ext 2 ext 3 等)
存储结构(Linux:倒置的树;windows:硬盘分多个区,像多棵树)
路径分隔符(Linux:/;windows:\)
文件命名(Linux:区分大小写;windows:不区分)
文件格式(windows: FAT 16、 FAT 32、 NTFS;Linux: ext 2 ext 3 等)
存储结构(Linux:倒置的树;windows:硬盘分多个区,像多棵树)
路径分隔符(Linux:/;windows:\)
文件命名(Linux:区分大小写;windows:不区分)
目录文件和普通文件
工作目录
登录Linux系统的字符界面后,所在目录即为工作目录。
Shell内置命令pwd用来显示工作目录的路径名
主目录
Shell内置命令pwd用来显示工作目录的路径名
主目录
用户第一次登录Linux系统时的工作目录即为用户的主目录。
登录后使用pwd命令可以看到当前用户的主目录是什么。
启动文件位于主目录下
路径名
登录后使用pwd命令可以看到当前用户的主目录是什么。
启动文件位于主目录下
路径名
绝对路径名:绝对路径名都是以“/”开头,表示根目录,斜杠后是位于根目录下的文件名(这个路径遍历了从根节点开始到文件的所有中间节点,所以称为绝对路径)
如:/home/xxxy/d/hello.c
Shell将~/放到路径名开始,表示主目录路径名
如:/home/xxxy/d/hello.c
Shell将~/放到路径名开始,表示主目录路径名
创建目录
创建新目录使用的是命令mkdir
使用-p参数,则mkdir命令可以同时创建父目录mydemo和子目录secdemo
删除目录
命令rmdir用来删除目录。
rmdir不能删除非空目录。
rmdir命令的语法结构如:rdmir [option] dir-name
在工作目录下无法删除工作目录和还包含其他目录的目录。
rmdir不能删除非空目录。
rmdir命令的语法结构如:rdmir [option] dir-name
在工作目录下无法删除工作目录和还包含其他目录的目录。
移动和复制文件
mv命令可以将文件从一个目录移动到另外一个目录,同时也可以改变文件名。
显示访问权限
文件信息最前面的10个字符代表以下含义:
第一个字符代表文件类型
第一个字符后的九个字符为文件访问权限
再下一个字符代表文件的ACL标识(假定文件有ACL)
第一个字符代表文件类型
第一个字符后的九个字符为文件访问权限
再下一个字符代表文件的ACL标识(假定文件有ACL)
改变访问权限
从安全性上考虑,文件目录访问权限是Linux设置中最基础的环节。
可以通过命令chmod来改变用户对文件的访问权限,该命令有两种使用方式。
符号模式
绝对模式
可以通过命令chmod来改变用户对文件的访问权限,该命令有两种使用方式。
符号模式
绝对模式
改变访问权限
chmod命令模式
chmod [role] [+|-|=] [mode] filename
参数role可以是
u 代表用户。
g 代表组。
o 代表其他用户。
a 代表所有用户。
操作符有+、-、=,含义分别为添加、取消或赋予某个权限
mode可用字母r(可读)、字母w(可写)和字母x(可执行)的任意组合来标示。
chmod [role] [+|-|=] [mode] filename
参数role可以是
u 代表用户。
g 代表组。
o 代表其他用户。
a 代表所有用户。
操作符有+、-、=,含义分别为添加、取消或赋予某个权限
mode可用字母r(可读)、字母w(可写)和字母x(可执行)的任意组合来标示。
1、初始时,文件myfile的权限是”-rw-r--r--”(所有者具有读写、组用户具有读、其他用户只读权限)
2、通过chmod命令给文件拥有者追加可执行权限、给组用户设定可写和可执行权限、为其他用户追加可写权限
2、通过chmod命令给文件拥有者追加可执行权限、给组用户设定可写和可执行权限、为其他用户追加可写权限
chmod命令的绝对模式(系统使用效率高)
chmod[mode] filename
mode表示权限设置模式,用数字表示。规则是“0”表示没有权限,“1”表示可执行权限x,“2”表示可写权限w,“4”表示可读权限r,然后将其相加
mode表示权限设置模式,用数字表示。规则是“0”表示没有权限,“1”表示可执行权限x,“2”表示可写权限w,“4”表示可读权限r,然后将其相加
目录访问权限
三种类型的用户都可以读写目录,但不能执行目录。
对目录的执行权限定义为:可使用cd命令转到目录下,并可查看目录下具有读取权限的文件,但不一定能执行目录中的文件。
对目录的执行权限定义为:可使用cd命令转到目录下,并可查看目录下具有读取权限的文件,但不一定能执行目录中的文件。
磁 盘 管 理
磁盘文件系统格式
Ext2:文件系统是指文件存在的物理空间。Linux支持很多种文件系统Ext2是为解决ext文件系统的缺陷而设计的可扩展的、高性能的文件系统。
Ext3:ext3是由开放资源社区开发的日志文件系统,ext3被设计成是ext2的升级版本,尽可能方便用户从ext2向ext3迁移。ext3最大的缺点是,它没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能。此外,使用ext3文件系统要注意硬盘限额问题。
其他文件系统:Minix是Linux支持的第一个文件系统,对用户有很多的限制,性能低下。ISO 9660标准CD-ROM文件系统。NFS Sun公司推出的网络文件系统,允许多台计算机之间共享同一文件系统。Linux也可以支持基于Windows和Netware的文件系统。文件系统是整个操作系统的重要组成部分,是操作系统正常运行的基本条件。
ext2文件系统
Ext3:ext3是由开放资源社区开发的日志文件系统,ext3被设计成是ext2的升级版本,尽可能方便用户从ext2向ext3迁移。ext3最大的缺点是,它没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能。此外,使用ext3文件系统要注意硬盘限额问题。
其他文件系统:Minix是Linux支持的第一个文件系统,对用户有很多的限制,性能低下。ISO 9660标准CD-ROM文件系统。NFS Sun公司推出的网络文件系统,允许多台计算机之间共享同一文件系统。Linux也可以支持基于Windows和Netware的文件系统。文件系统是整个操作系统的重要组成部分,是操作系统正常运行的基本条件。
ext2文件系统
Linux文件系统分配策略
文件的记录形式
文件的记录形式
Linux文件系统分配策略
块分配(block allocation)
磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。
扩展分配(extent allocation)
文件创建时,一次性分配一连串连续的块,当文件扩展时,也一次性分配很多块。
磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。
扩展分配(extent allocation)
文件创建时,一次性分配一连串连续的块,当文件扩展时,也一次性分配很多块。
文件的记录形式
Super block在每个文件系统的根上,描述和维护文件系统的状态,表示一个文件系统,它包含管理文件系统所需的信息,包括文件系统的名称、大小和状态、块设备的引用和元数据信息。
Linux文件系统使用索引节点(inode)来记录文件信息。
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一的元素对应。
Linux文件系统将文件索引节点号和文件名同时保存在目录中。
Super block在每个文件系统的根上,描述和维护文件系统的状态,表示一个文件系统,它包含管理文件系统所需的信息,包括文件系统的名称、大小和状态、块设备的引用和元数据信息。
Linux文件系统使用索引节点(inode)来记录文件信息。
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一的元素对应。
Linux文件系统将文件索引节点号和文件名同时保存在目录中。
linux如何读取一个文件内容
mount:挂载文件系统
如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现。
mount的基本用法:
格式:mount [-参数] [设备名称] [挂载点]
mount的基本用法:
格式:mount [-参数] [设备名称] [挂载点]
-a 挂上/etc/fstab下的全部的文件系统
-t指定所挂上来的文件系统的名称,所有系统支持的文件系统,这个信息可以在/proc/filesystems这个文件里看到
-n挂上文件系统但是不把文件系统的数据写入/etc/mtab这个文件。
-w将文件系统设为可读写(如果本身可读写的话
-f挂上来的文件系统设为只读
umount:卸载已挂上的文件系统
需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常
df:检查各硬盘分区和已挂上来的文件系统的磁盘空间
-a 列出所有的文件系统,包括系统特有的/proc等文件系统。
-k 以KB为单位显示个文件系统
-m 以mb为单位显示各文件系统
-h 以gb、mb、kb等格式显示
-T 联通该分区的文件系统名称一起列出。
-i 以inode数量来显示
列说明:
Filesystem 表示该文件系统在哪个分区,所以列出设备名称
1k-blocks 说明下面数字单位是1kb,可使用-h或-m来改变容量单位
Used 已使用的硬盘空间
vailable 剩下的磁盘空间大小
Use% 使用率,如果使用率达90%以上就要小心
Mounted on 挂载点
1k-blocks 说明下面数字单位是1kb,可使用-h或-m来改变容量单位
Used 已使用的硬盘空间
vailable 剩下的磁盘空间大小
Use% 使用率,如果使用率达90%以上就要小心
Mounted on 挂载点
du:显示文件目录或大小
语法:
du [-ahskm] [目录名]
不加任何参数,递归列出当前目录下每个目录及其子目录所占空间大小。
后接目录名则列出指定目录下每个目录及其子目录所占空间大小。
参数:-a 列出目录和文件的大小 -h 以易读方式表示大小 -s 只列出总量而不列出子目录大小
一般使用 du -sh 来获取数据
不加任何参数,递归列出当前目录下每个目录及其子目录所占空间大小。
后接目录名则列出指定目录下每个目录及其子目录所占空间大小。
参数:-a 列出目录和文件的大小 -h 以易读方式表示大小 -s 只列出总量而不列出子目录大小
一般使用 du -sh 来获取数据
fdisk:分区命令
参数:-l 输出指定设备的分区内容,如果fdisk -l 后面没有设备名,则把整个系统搜索到的全部设备分区列出来。
对linux分区、格式化、系统安装,需要把它挂载到一个目录下才能使用,而不像windows一样格式化就是一个盘符了。
linux可以把一个分区挂载到任何目录。
在linux中,任何可访问存储设备必须进行载入,加载到指定的加载点,才能使用。比如光驱、U盘、新的硬盘分区等
linux可以把一个分区挂载到任何目录。
在linux中,任何可访问存储设备必须进行载入,加载到指定的加载点,才能使用。比如光驱、U盘、新的硬盘分区等
虚拟机下mount命令的使用:挂载u盘
1、插上u盘,在虚拟机→移除设备→断开u盘设备与主机的连接
2、使用fdisk –l 命令,查看Linux是否识别u盘。可看到系统已识别u盘,并分配一个分区/dev/sdb(每个系统识别的标示 符不同)。
4、将USB设备(/dev/sdb)挂装到/mnt/usb目录下:
mkdir /mnt/usb
mount /dev/sdb /mnt/usb
5、进入到挂载目录,可以查看U盘的内容
cd /mnt/usb
2、使用fdisk –l 命令,查看Linux是否识别u盘。可看到系统已识别u盘,并分配一个分区/dev/sdb(每个系统识别的标示 符不同)。
4、将USB设备(/dev/sdb)挂装到/mnt/usb目录下:
mkdir /mnt/usb
mount /dev/sdb /mnt/usb
5、进入到挂载目录,可以查看U盘的内容
cd /mnt/usb
用户管理
Linux系统账户介绍
/etc/passwd用户账号文件
用户账号文件
在Linux系统中,系统识别用户的信息是账号ID,而不是账号名称。账号ID保存在文件/etc/passwd文件中。
当要登录Linux主机时
系统首先会到文件/etc/passwd中查找与账号对应的账号ID。
从文件/etc/passwd文件中读取相应的账户ID(User ID)和组ID(Group ID)。
同时读取的还有该账号的主目录和shell。
冒号“:”一共分隔了七个部分
帐号名称:用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符(字母或数字)的长度之内;
密码:系统用口令来验证用户的合法性。现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。 需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。
用户ID:UID是一个数值,是Linux系统中惟一的用户标识,用于区别不同的用户。对于系统来说UID更为重要;而对于用户来说注册名使用起来更方便。UID是0表示是系统管理员,1~499给系统使用的ID,500~65535给一般者使用
组ID:这是当前用户的缺省工作组标识。具有相似属性的多个用户可以被分配到同一个组内,每个组都有自己的组名,且以自己的组标识号相区分。在现代的Unix/Linux中,每个用户可以同时属于多个组。除了在passwd文件中指定其归属的基本组之外,还在/etc/group文件中指明一个组所包含用户。
描述信息:包含有关用户的一些信息,如用户的真实姓名、办公室地址、联系电话等。在Linux系统中,mail和finger等程序利用这些信息来标识系统的用户。
用户主目录:该字段定义了个人用户的主目录,当用户登录后,他的Shell将把该目录作为用户的工作目录。在Unix/Linux系统中,超级用户root的工作目录为/root;而其它个人用户在/home目录下均有自己独立的工作环境,个人用户的文件都放置在各自的主目录下。
用户登录shell:Shell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名,如/bin/bash。
在Linux系统中,系统识别用户的信息是账号ID,而不是账号名称。账号ID保存在文件/etc/passwd文件中。
当要登录Linux主机时
系统首先会到文件/etc/passwd中查找与账号对应的账号ID。
从文件/etc/passwd文件中读取相应的账户ID(User ID)和组ID(Group ID)。
同时读取的还有该账号的主目录和shell。
冒号“:”一共分隔了七个部分
帐号名称:用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符(字母或数字)的长度之内;
密码:系统用口令来验证用户的合法性。现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。 需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。
用户ID:UID是一个数值,是Linux系统中惟一的用户标识,用于区别不同的用户。对于系统来说UID更为重要;而对于用户来说注册名使用起来更方便。UID是0表示是系统管理员,1~499给系统使用的ID,500~65535给一般者使用
组ID:这是当前用户的缺省工作组标识。具有相似属性的多个用户可以被分配到同一个组内,每个组都有自己的组名,且以自己的组标识号相区分。在现代的Unix/Linux中,每个用户可以同时属于多个组。除了在passwd文件中指定其归属的基本组之外,还在/etc/group文件中指明一个组所包含用户。
描述信息:包含有关用户的一些信息,如用户的真实姓名、办公室地址、联系电话等。在Linux系统中,mail和finger等程序利用这些信息来标识系统的用户。
用户主目录:该字段定义了个人用户的主目录,当用户登录后,他的Shell将把该目录作为用户的工作目录。在Unix/Linux系统中,超级用户root的工作目录为/root;而其它个人用户在/home目录下均有自己独立的工作环境,个人用户的文件都放置在各自的主目录下。
用户登录shell:Shell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名,如/bin/bash。
/etc/shadow文件
使用shadow文件保存密文的密码,shadow文件只有理员用户才可以读取。
1. 账号名称:第一栏是账号,必须要与 /etc/passwd 相同才行!
2. 密码:这个才是真正的密码,是经过编码过的密码啦!只会看到有一些特殊符号的字母,这个档案的属性是只有 root 才可以读写
3. 最近更动密码的日期:这个字段记录了“更动密码的那一天”的日期
4. 密码不可被更动的天数: 第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。
5. 密码需要重新变更的天数: 由于害怕密码被某些『有心人士』窃取而危害到整个系统的安全,所以必须要在这个时间之内重新设定你的密码,否则这个账号将会暂时失效。
6. 密码需要变更期限前的警告期限:当账号的密码失效期限快要到的时候, 就是上面那个“必须变更密码”的那个时间时, 系统会依据这个字段的设定,发出“警告”给这个账号,提醒他“再过 n 天你的密码就要失效了,请尽快重新设定你的密码”
7. 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在“必须变更密码的期限”前,并没有变更你的密码, 那么该组密码就称为“失效的密码”。当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,您的账号就失效了!无法登入!
8. 账号失效日期:这个日期跟第三个字段一样,都是使用 1970 年以来的总日数设定。这个字段表示: 这个账号在此字段规定的日期之后,将无法再使用。 这个字段会被使用通常应该是在“收费服务”的系统中, 你可以规定一个日期让该账号不能再使用!
9. 保留:最后一个字段是保留的,看以后有没有新功能加入。
/etc/group文件
/etc/group文件包含了unix组的名称和每个组中成员的列表。每一行都代表一个组其中包含4个字段。
组名
加密的密码或者包含一个x,表明有一个gshadow文件。
GID号。
成员列表,彼此用逗号隔开。
加密的密码或者包含一个x,表明有一个gshadow文件。
GID号。
成员列表,彼此用逗号隔开。
添加用户
1、编辑passwd文件、group文件
编辑passwd文件和shadow文件
向passwd文件加入一个新的用户账号
sudo vi /etc/passwd
向passwd文件加入一个新的用户账号
sudo vi /etc/passwd
编辑/etc/group文件
/etc/group文件里给zhao这个用户建立个人的用户组。
仍然把这个用户组叫做zhao。其组ID应该是1002和他的UID 1002相匹配。
如果我们想把找分配给其他组,只需要在group文件中把他的登录名加入到其他组里就可以了。
2、设置初始密码和创建用户主目录
/etc/group文件里给zhao这个用户建立个人的用户组。
仍然把这个用户组叫做zhao。其组ID应该是1002和他的UID 1002相匹配。
如果我们想把找分配给其他组,只需要在group文件中把他的登录名加入到其他组里就可以了。
2、设置初始密码和创建用户主目录
使用passwd命令修改任何用户的口令
3、使用adduser添加用户
3、使用adduser添加用户
如果没有特殊的要求,通常使用adduser命令接上用户名称直接创建用户帐号。 adduser创建用户的时候会创建和用户同名的用户组。
4、使用userdel删除用户
5、创建用户组
4、使用userdel删除用户
5、创建用户组
删除用户
命 令: userdel
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-r 删除用户登入目录以及目录中所有文件。
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-r 删除用户登入目录以及目录中所有文件。
在删除用户主目录之前,应该确保先重新安置其他用户需要的任何文件
请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;
用户组管理
请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;
用户组管理
用户组就是一个具有相同特性的用户集合,在同一个组中的所有用户具有相同的组权限。
创建用户组:单独的创建用户组,可以使用groupadd命令实现。
groupadd [-g gid [-o]] [-f] groupname
创建用户组:单独的创建用户组,可以使用groupadd命令实现。
groupadd [-g gid [-o]] [-f] groupname
root(超级)用户
系统级别的文件和进程属于一个叫root的虚拟用户,我们一般称其为超级用户。
root可以充当任何进程和文件的所有者,
还可以执行一些特殊的操作。
root账号在定义上的特征是它的UID为0
有些系统调用(对内核的请求)只能够由超级用户来执行,例如:
采用chroot命令来改变进程的根目录。
创建设备文件。
设置系统时钟。
设置系统的主机名称。
root可以充当任何进程和文件的所有者,
还可以执行一些特殊的操作。
root账号在定义上的特征是它的UID为0
有些系统调用(对内核的请求)只能够由超级用户来执行,例如:
采用chroot命令来改变进程的根目录。
创建设备文件。
设置系统时钟。
设置系统的主机名称。
成为root用户
root也是一个用户,所以可以直接以root账号登陆进去系统。但是前提必须修改了系统为root设置的初始密码。
在Ubuntu Linux系统中,默认情况下系统没有合法的root密码。
如果需要以root身份访问系统的话,最好采用以下的方法
1. su:替换用户身份
2. sudo:受限的su
在Ubuntu Linux系统中,默认情况下系统没有合法的root密码。
如果需要以root身份访问系统的话,最好采用以下的方法
1. su:替换用户身份
2. sudo:受限的su
切换到root身份方法
执行下列命令:
sudo passwd root
输入两次密码
su root
输入设置的root密码
切换到root用户
sudo passwd root
输入两次密码
su root
输入设置的root密码
切换到root用户