Linux系统管理(三)

文件系统与权限设置

        当所有人都把目光投注在操作系统身上时,却常常忘记了一个极为重要的配角――文件 系统。文件系统的优劣与否和操作系统的执行效率、稳定性以及可靠度息息相关。

一、认识系统的目录

        在安装 Linux 的磁盘中会有很多系统默认的目录,这些目录依照不同的用途而放置特定 的文件。在前面已经简单介绍过一些常用的目录,以下将详细说明每一个默认目录的功能:

/:  根目录,包含整个 Linux 系统的所有目录和文件。

/bin:此目录放置操作系统时所需要使用的各种命令程序。例如 cp rpm kill tar mv rm  ping 等常用命令,还有各种不同的 Shell,如 bash bash2 tcsh 等。

/dev:存放界面设备代号的文件。例如硬盘的/dev/had 、终端机等。这些文件比较特殊, 他们实际上都指向所代表的界面设备。

/etc:存放与系统设置、管理相关的文件。例如记录账号名称 passwd 文件、投影口令 文件 shadow 都放在这里。

/etc/X11:X Window  配置文件的目录。

/etc/rc.d:这个目录包含了启动或关机时所运行的 script 文件。

/home:此目录默认用来设置用户账号的主目录。

/lib:放置一些共享的函数库。

/lib/modules:存放系统内核的模块。某些可被模块化的部分,并不需要在编译系统内核 本体, 避免内核过大导致效率较低。

/lostfound:文件系统发生问题时,Linux 会自动扫描磁盘试图修正错误,倘若找到遗失 或错误的区域, 就会将这些区域转成文件存放于目录中, 等候管理员来进一步处理。

/misc:默认空无一物,供管理员堆放公共杂物。默认权限时全部用户都可以读取和执 行文件,但是只有管理员能够写入文件。

/mnt:此目录下默认有/mnt/cdrom /mnt/floppy 两个目录,用来作为光盘与软件的加载点.

/proc:系统内核和执行程序之间的信息,如执行 ps free 等命令时所看到的信息,就是 从这里读取。这目录内的文件并非真的存在,用户看到的虚拟文件。

/root:系统管理员专用的目录, 即 root 账号的主目录。

/sbin:此目录存放启动系统需运行,例如 fsck init grub lilo  swapon 

/tmp:供全部用户暂时放置文件的目录。系统默认可让所有用户读取、写入和执行文件, 因此对于一般用户来说, 若觉得自己的磁盘空间不够使用,便可暂时利用此目录存放文件。 这里也是临时文件的目录,某些程序在执行中说产生的临时文件会存放在这个目录内。

/usr:此目录包括许多子目录, 用来存放系统命令。程序等信息。

/usr/bin:放置用户可以执行的命令程序,如 find free gcc 等。

/usr/share/doc:存放各种文件的目录。

/usr/share/man:放置多种帮助文件。

/usr/src:存放源代码的地方,Linux 系统内核的源代码就放在此目录下。

/var:系统执行时, 需要暂时记录存放的数据或临时文件,都会放置在这个目录里。

/var/tmp:前面介绍的/tmp  目录除了放置所有用户暂时存放的文件之外,还提供给程序 产生的临时文件使用,因此经常会因对方许多文件,而显得非常杂乱。管理员通常会定时清 /tmp  目录,维护磁盘空间的整洁。加入不想将某些文件混/tmp  目录中,可以选择存放 在这里。

二、文件属性

d:表示这是一个目录。在 ext3 中,目录被视为一种特殊的文件。

-:表示这是一个普通的文件

l:表示这是一个符号链接的文件, 实际上它指向另一个文件。

b c :分别代表区块设备和其他的界面设备,是特殊类型的文件。

s p:这些文件关系到系统的数据结构和通道, 通常很少见到。

1 、一般权限

        r (read ,读取):对文件而言,用户具有读取文件内容的权限。对目录而言,用户拥有浏

览目录内容的权限。

        w (write,写入):对文件而言,用户具有修改文件内容的权限。对目录而言,用户具有删 除或移动目录内文件的权限。

        x(execute,执行):对文件而言, 用户具有执行文件的权限。对目录而言, 用户具有进入 目录的权限。

2、特殊权限

        其实文件与目录的权限设置不只如此,还有所谓的特殊权限存在。属于特殊权限会拥有 一些特权,因而用户若无特殊需求,不应该去打开这些权限,避免安全方面出现严重漏洞, 让黑客入侵。

        设置 UID,S(SUID, Set UID):可执行的文件若搭配这个权限,该文件便能得到权限,可以 任意存取文件所有者能使用的全部系统资源。

        设置 GID S(SGID Set GID):应用在文件上面,其效果和 SUID 相同,只不过将范围由 文件所有者扩大成组。也就是说,拥有此权限的文件,可以任意存取整个组所能使用的系统 资源。

三、用户与组的权限关系

        假如用户 lambert 属于 cassia 组,其用户主目录的权限设为 rwxr-x—x ,表示统属 cassia  组的用户,可以读取和记入这个目录,其他用户则只能进入该目录,但完全看不到任何内容。

        因而属于其他组的用户 saber,就无法读取 lambert  目录中的文件。但若将/etc  目录下的 group 文件内容作些修改, 情况就不同了:

postfic:x:89:

pvm:x:24:

cassia:x:501:lambert,saber ←   saber 账号加入 cassia 

saber:x:502:

四、检查 inode 编号

        链接的文件实际上都是指向磁盘中相同的数据, 因为每个文件仅占用一个 inode,所以 他们的 inode 编号应该一样。执行 ls –i 命令来查看文件的 inode 编号:

[lambert@free lambert]$ ls –i LambertLink

10423 LambertLink

[lambert@free lambert]$ ls –i /tmp/var/ForEveryOne

10423 /var/tmp/ForEveryOne

        从上面的结果可看出这两个文件的 inode 编号一样的,倘若是用复制而非连接的方法, 便会是两个不相干的文件,各自拥有 inode 编号。

[lamnert@free lambert]$ ls –I LambertFile

366955 LambertFile ←这个文件的 inode  366955,而 ForEveryOne 的是104423

public void Polygon_Trans4(IFeatureClass pFeatureCls, string strPath, string strFilename, ProgressBar pBar) { if (pFeatureCls == null || strPath == "" || strFilename == "") return; createNewShape(strPath, strFilename, pFeatureCls); IFeatureCursor pFeatCursor = pFeatureCls.Search(null, false); IFeature pFeature = pFeatCursor.NextFeature(); //打开目标图层 IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass(); IWorkspace pWS = pWSF.OpenFromFile(strPath, 0); IFeatureWorkspace pFWS = (IFeatureWorkspace)pWS; IFeatureClass pTargetFClass = pFWS.OpenFeatureClass(strFilename); IWorkspaceEdit pWSEdit = pWS as IWorkspaceEdit; pWSEdit.StartEditOperation(); pWSEdit.StartEditing(false); ITable pTble = (ITable)pFeatureCls; int lCunt = pTble.RowCount(null); pBar.Visible = true; pBar.Minimum = 0; pBar.Maximum = lCunt; pBar.Step = 1; IFeature pNewFeature; IPolygon pOutPolygon; IGeometryCollection pOutGeos; IPolygon pInPolygon; IGeometryCollection pInGeos; IPoint pOutPnt = new PointClass(); IPointCollection pOutPnts; while (pFeature != null) { pBar.PerformStep(); pNewFeature = pTargetFClass.CreateFeature(); pOutPolygon = new PolygonClass(); pOutGeos = pOutPolygon as IGeometryCollection; //获取原图形 pInPolygon = pFeature.Shape as IPolygon; pInGeos = pInPolygon as IGeometryCollection; for (int m = 0; m < pInGeos.GeometryCount; m++) { IGeometry pInGeo = pInGeos.get_Geometry(m); IPointCollection pInPnts = pInGeo as IPointCollection; pOutPnts = new PolygonClass(); object missing = Type.Missing; for (int n = 0; n < pInPnts.PointCount; n++) { IPoint pInPnt = pInPnts.get_Point(n); //转换点坐标 pOutPnt.X = ClsParas4.m_OffY + pInPnt.Y * ClsParas4.m_vb + pInPnt.X * ClsParas4.m_va; pOutPnt.Y = ClsParas4.m_OffX + pInPnt.Y * ClsParas4.m_va - pInPnt.X * ClsParas4.m_vb; pOutPnts.AddPoint(pOutPnt, ref missing, ref missing); } ISegmentCollection pSegmentCols = new RingClass(); pSegmentCols.AddSegmentCollection(pOutPnts as ISegmentCollection); pOutGeos.AddGeometry(pSegmentCols as IGeometry, ref missing, ref missing); } for (int i = 0; i < pFeature.Fields.FieldCount; i++) { if (pNewFeature.Fields.get_Field(i).Name.ToString().Equals("FID", StringComparison.CurrentCultureIgnoreCase) || pNewFeature.Fields.get_Field(i).Name.ToString().Equals("SHAPE", StringComparison.CurrentCultureIgnoreCase)) continue; pNewFeature.set_Value(i, pFeature.get_Value(i)); } pNewFeature.Shape = pOutPolygon as IGeometry; pNewFeature.Store(); pFeature = pFeatCursor.NextFeature(); } pBar.Visible = false; pWSEdit.StopEditOperation(); pWSEdit.StopEditing(true); }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值