linux文件管理器?文件管理器安装

如何在Linux中管理文件和文件夹的权限

命令行:文件权限

改动文件权限和所有权的两个命令如下:

chmod-更改权限

chown-更改所有权

上面两个命令用起来都不难。不过你要明白,只有用户是当前所有者或根用户,才能够实际更改文件的权限或所有权,这一点很重要。所以,如果你是用户Bethany,要是不借助根权限(或sudo),就无法对用户Jacob拥有的文件和文件夹进行更改。比如说:

数据分区上创建了一个新的文件夹,名为/DATA/SHARE。Bethany和Jacob这两个用户都需要拥有读取和写入该文件夹的访问权限。有许多方法可以实现这一点(其中一个方法是,把两个用户加入到一个特殊的用户组――我们会在另一篇文章中探讨如何管理用户组)。如果Bethany和Jacob是系统上的唯一两个用户(而且你知道自己的网络很安全――这很重要),就可以更改该文件夹的权限,为他们授予访问权。为此,一个方法就是执行该命令。

sudo chmod-R ugo+rw/DATA/SHARE

上面这个命令的详细分解如下:

sudo-这用于为使用sudo的任何系统上的命令获得管理员权限(不然你就得使用'su'以获得根权限,运行不带'sudo'的上面这个命令)

chmod-改动权限的命令

-R-这改动父文件夹及其里面子对象的权限

ugo+rw-这为User(用户)、Group(用户组)及Other(其他对象)授予读取和写入访问权限。

你可能也猜测到了,这个命令完全开放了SHARE文件夹的权限,那样系统上的任何人都能访问该文件夹。正如我在前面提到的那样,一种更安全的方法就是使用用户组。但我们使用这种方法仅仅是为了演示。

权限的详细分解如下:

u-用户

g-用户组

o-其他对象

"其他对象"这个条目是个危险的条目,因为它实际上为每个人赋予了文件夹/文件的权限。你为某文件或文件夹所能赋予的权限如下:

r-读取

w-写入

x-执行

使用-R这个参数选项符很重要。如果你在SHARE目录里面有许多子文件夹和文件,又希望权限从父对象(包含文件夹)应用到子对象(子文件夹和文件),就必须使用-R(递归)这个参数选项符,那样同样的权限就可以一路应用到父文件夹里面包含的最深层文件夹。

命令行:文件所有权

更改文件或文件夹的所有权同样很简单。假设Jacob为Bethany把一个文件夹移入到SHARE目录里面,但是Jacob仍拥有所有权。只要借助一个简单的命令,就可以更改这个所有权:

sudo chown-R bethany/DATA/SHARE

让我们详细分解这个命令。

sudo-必须用到管理员权限,因为我们所处理的是属于另一个用户的文件夹

chown-更改所有权的命令·-R-这个递归参数选项符确保所有子对象都获得同样的所有权变更。

bethany-文件夹的新所有者

/DATA/SHARE-所要修改的目录

要是Bethany将文件夹发回给Jacob,就需要再次更改所有权(如果使用用户组,同样可以简化这一步)。

GUI:用户权限

我准备在Ubuntu 13.10系统上,使用Nautilus文件管理器,演示如何更改文件权限。

假设你需要允许每个人都获得读取/写入文件夹TEST的权限。为此,在Nautilus文件管理器里面,采取下面这些步骤:

1.打开Nautilus

2.浏览至目标文件或目标文件夹

3.鼠标右击该文件或文件夹

4.选择Properties(属性)

5.点击Permissions(权限)选项卡

6.点击Others(其他)部分中的Access files(访问文件)

7.选择"Create and delete files"(创建并删除文件)

8.点击Change Permissions for Enclosed Files(更改所附文件的权限)

9.在随后弹出的窗口中,选择Files(文件)下的Read and Write(读取和写入),选择Folders(文件夹)下的Create and delete files(创建并删除文件),见图A。

10.点击Change(更改)。

11.点击Close(关闭)。

如果你需要更改不属于你的文件夹的权限,戏法就会出现。可以实现这一幕,但必须在拥有管理员访问权的前提下启动Nautilus。为此,采取下面这些步骤:

1.打开终端窗口

2.执行命令sudo-i

3.执行命令nautilus

sudo-i命令为你赋予了持久访问sudo的权限,直到你输入exit命令,清除该访问权。一旦Nautilus打开,你可以更改文件夹或文件的权限,如上所述――即便你不是该文件夹或文件的所有者。

注意:如果你所使用的发行版并不使用sudo,就要把上述指令改成如下:

1.打开终端窗口

2.执行命令su

3.键入你的根密码,按回车键

4.执行命令nautilus。

在你完成这项任务之后,关闭Nautilus窗口,然后关闭终端窗口。

GUI:更改所有权

更改文件或文件夹的所有权常常需要使用管理员权限。所以为此,你需要采用上面介绍的方法来启动Nautilus。

想借助Nautilus更改文件夹或文件的所有权,请采取下面这些步骤:

1.在借助管理员权限打开的Nautilus窗口中,找到相应的文件夹或文件

2.鼠标右击该文件夹(或文件)

3.点击Permissions(权限)选项卡

4.从Owner(所有者)下拉框中选择新的所有者(见下图)

5.点击Close(关闭)。

就是这样。现在,你借助命令行或GUI,更改文件或文件夹的权限或所有权时应该不会有任何问题了。使用用户组让你可以更改权限和所有权,却拥有更强大的功能和更高的安全性――我们以后会介绍这方面。现在,请享受更改文件和文件夹的便利吧!

linux根目录下5个主要的目录及目录的功能各是什么

(1)/:根目录

(2)/bin:存放启动时所需要的普通程序

(3)/boot:存放内核及启动所需要的文件

(4)/dev:存放设备相关的文件

(5)/etc:存放系统的配置文件

(6)/home:存放用户文件的主目录,用户数据( cd~可进入自己的主目录)

(7)/lib:存放启动时所需要的库文件

(8)/mnt:存放临时的映射文件,通常是一些用来安装其他设备的子目录(如/mnt/cdrom/mnt/floppy)

(9)/proc:这是一个虚拟的文件系统,存放当前系统的状态(有关进程和系统信息)

(10)/root:超级用户主目录

(11)/sbin:存放启动时所需要的系统管理程序

(12)/tmp:存放启动时产生的临时文件

(13)/usr:包含一般不需要修改的应用程序,命令程序文件,程序库,手册

(14)/var:存放系统产生的经常变化的文件

(15)/var/tmp:存放用户的临时文件

(16)/usr/lib:存放非启动用的库文件

(17)/lib/modules/:存放内核模块

(18)/var/log:存放大多数日志文件

(19)/var/run:存放运行时的信息

(20)/var/lib:存放一些系统运行时需要的文件

(21)/var/spool:存放邮件,新闻及打印序列

(22)/etc/X11:存放X窗口系统所需要的配置文件

(23)/etc/init.d:存放启动描述文件,包括各种模块和服务的加载描述

(24)/etc/rcS.d:存放一些连接到/etc/init.d的文件,根据runlevel的不同而执行不同的描述

(25)/etc/rc0.d---/etc/rc6.d:存放一些连接文件,只在指定的runlevel下执行相应的描述

(26)/usr/X11R6,/usr/X11,/usr/Xfree86:存放X窗口系统所需要的文件

(27)/usr/bin:存放应用程序二进制可执行文件

(28)/usr/sbin:存放大部分系统程序

(29)/usr/games:存放游戏程序及相应的数据

(30)/usr/include:存放c和c++的头文件

(31)/usr/info:存放GNU Info程序所需要的数据

(32)/usr/man:存放man程序所需要的数据

(33)/usr/src:存放源代码文件

(34)/usr/doc:存放文档文件

(35)/usr/local:存放本地计算机所需要的文件

(36)/usr/shared:存放各种共享文件

Linux内核:内存管理——Slab分配器

深入解析Linux内核:内存管理的艺术——SLAB分配器

在Linux内核的世界里,内存管理是一项至关重要的任务。其中,SLAB分配器扮演着关键角色,它解决了页框分配器的大页框浪费问题,通过专用SLAB(如TCP)和普通SLAB(如kmalloc-8, kmalloc-16等)实现了高效而灵活的内存管理。通过执行`cat/proc/slabinfo`,我们可以窥探SLAB的运行状态。

SLAB的核心理念在于对象大小的固定性,这有助于减少内存碎片,提高内存使用效率。kmem_cache(SLAB缓存)是其最高层级的数据结构,它负责描述和管理SLAB及其对象。内核模块通过kmem_cache_create定制化的SLAB,确保内存管理的灵活性。

kmem_cache结构内部,对象大小(object_size)与SLAB的全局配置如gfporder和num保持同步。每个NUMA节点的SLAB管理由struct kmem_cache_node数组负责,它支持分布式内存管理,确保了内存的均衡分配。

在kmem_cache的内部结构中,SLAB链表是关键部分,包括slabs_partial、slabs_full和slabs_free。slabs_partial存储部分使用的SLAB描述符,slabs_full则是所有对象的链表,而slabs_free则记录空闲的SLAB。这些链表通过spinlock_t lock进行同步,确保了在分配和回收过程中的线程安全。

SLAB设计巧妙,如SLUB(Simple Low Overhead Buffering)和SLOB(Simplified Low Overhead Buffering)结构,它们结合了计数器、活跃对象和动态链表,以实现内存的高效分配。SLAB描述符还包括页标志、对象地址指针和空闲对象链表,这些细节都在CONFIG_SLUB配置中有所体现。

SLAB描述符中的freelist和填充区域的优化,以及对象地址的着色设计,都是提高内存利用率的重要手段。内存着色通过添加偏移量避免同一行内存冲突,提升了性能。本地CPU和共享链表的组合,形成了SLAB分配器的高效运作框架,优先级分配原则保证了快速响应。

了解这些细节后,我们发现SLAB分配器是Linux内核内存管理的精髓所在,它在内存分配和回收的过程中,巧妙地平衡了效率与灵活性。通过深入研究这些内部机制,我们可以更好地理解和优化我们的系统内存使用。

【推荐阅读】

1. Linux文件系统详解

2. Linux进程管理:实时调度

3. Linux内核内存管理-缺页异常& brk系统调用

原文作者:tolimit

原文地址:linux内存源码分析- SLAB分配器概述

---

经过上述的精炼与重构,文章内容更加清晰,突出了SLAB分配器在Linux内核内存管理中的核心作用和关键细节,为读者提供了深入理解内存管理的窗口。

阅读剩余
THE END