Linux - 文件操作

一、Linux中的用户和组账号概述

与Windows操作系统相比,Linux系统中的用户和组账号的作用本质上是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在些许差异。下面将给大家介绍Linux系统中用户账号和组账号的相关概念。

1、用户账号

在Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。

【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有至高无上的完全权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议使用普通用户账号进行。

【普通用户】:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中有完全权限。

【程序用户】:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bin、daemon、ftp、mail等。

2、组账号

基于某种特定联系将多个用户集合在一起,即构成一个用户组,用于表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);如果该用户同时还包括在其他的组中,则这些组称为该用户的附加组(或公共组)。

例如,用户gaoke是总经办的员工,与部门内的其他同事同属于基本组zongjingban,后来因工作安排需要,公司将gaoke加入到信息中心组mis。则此时用户gaoke同时属于zongjingban、mis组,zongjingban组是其基本组账号,而mis组是其附加组账号。

最组账号设置的权限,将适用于组内的每一个用户账号。

3、UID和GID号

Linux系统中的每一个用户账号都有一个数字形式的身份标记,称为UID,对于系统核心来说,UID作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。root用户账号的UID号为固定值0.而程序用户账号的UID号默认在1-499之间,500-60000的UID号默认分配给普通用户账号使用。

与UID相类似,每一个组账号也有一个数字形式的身份标记,称为GID。root组账号的GID号为固定值0,而程序组账号的GID号默认在1-499之间,普通组账号使用的UID号默认为500-60000.

普通用户、组账号使用的默认UID、GID号范围定义在配置文件“/etc/login.defs”中。

二、文件属性

在shell环境里输入:ls -l可以查看当前目录文件信息(或者ls -l filename 查看特点文件信息)如:

drwxr-xr-x 2 nsf users 1024 12-10 17:37 下载文件备份

分别对应的是:

文件属性 连接数 文件拥有者 所属群组 文件大小 文件修改时间 文件名

这里r是可读,w可写,x可执行,其中文件属性分为四段,共10个位置

例如:

d rwx r-x r-x

第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件;如果是d,表示是一个目录文件。

第二段是文件拥有者的属性;第三段是文件所属群组的属性;第四段是对于其它用户的属性。

如上面文件夹“下载文件备份”的访问权限,表示文件夹“下载文件备份”是一个目录文件;文件夹“下载文件备份”的属主有读写可执行权限;与文件夹“下载文件备份”的属主同组的用户只有读和可执行权限;其它用户也只有读和可执行权限。

三、Linux文件结构 

/是根目录,位于目录层次的最顶端。根目录中通常包含用于存放系统程序(二进制可执行文件) 的/bin子目录、用于存放系统配置文件的/etc子目录和用于存放系统函数库的/lib子目录。代表物理设备并为这些设备提供接口的文件通常存放在/dev子目录中。/proc子目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问。/proc子目录中以数字命名的子目录用于提供正在运行的程序的信息。

四、系统调用、设备驱动程序和库函数

 

系统调用:由Linux直接提供的函数用来对文件和设备进行访问和控制。

设备驱动程序:是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作。

库函数:Linux发行版提供了一系列的标准函数库。它们是一些由函数构成的集合。

使用系统调用会影响系统的性能。因为:

(1)在执行系统调用时,Linux必须从运行用户代码切换到执行内核代码,然后再返回用户代码。

(2)硬件会限制对底层系统调用一次所能读写的数据块大小。

比如标准I/O库,你可以高效地写任意长度的数据块,库函数则在数据满足数据块长度要求时安排执行系统底层调用。

五、文件和设备

Linux作为UNIX的一个变种,继承了UNIX的设备管理方法,即所有的设备是具体的文件,通过文件系统层对设备进行访问。这种设备管理方法可以很好地做到“设备无关性”,可以根据硬件外设的更新进行方便的扩展。

Linux中的设备大致可以分为三类:字符设备块设备网络设备
1. 字符设备没有缓冲区,以字节为单位顺序处理数据,不支持随机读写。常见的字符设备如普通打印机、系统的串口、终端显示器嵌入式设备中的简单按键、手写板等。
2. 块设备是指在输入输出时数据处理以块为单位的设备,一般都采用缓冲技术,支持数据的随机读写。典型的块设备硬盘光驱等。
 
字符设备和块设备面向的上一层是文件系统层。对用户来说,块设备和字符设备的访问接口都是一组基于文件的系统调用,如read, write等。
 
3. 网络设备块设备和字符设备不同,网络设备面向的上一层是网络协议层。设备文件是一个唯一的名字(如eth0),在文件系统中不存在对应的节点项。内核和网络驱动程序之间的通信使用的是一套和数据包传输相关的函数,而不是read, write等。
posted @ 2016-12-20 14:52  etcjd  阅读(199)  评论(0)    收藏  举报