开始新对话

未解决

此帖子已超过 5 年

3861

2014年5月13日 02:00

指尖上的Linux(三):文件与文件权限

指尖上的Linux(一):系统管理员常用命令一览(入门级,高手慎点)

指尖上的Linux(二):系统管理员更多实用命令与操作实例

指尖上的Linux(四):系统与软件安装


文件

程序是由文件组成的。实际上,全部Linux操作系统就是文件的集合。其实,不仅仅是电脑中的数码相片是一个文件,连显示器也是文件。Linux中,万事都是文件。

/dev目录

这些是你的系统使用或能够使用的设备。Linux中所有事物都被当做文件,所以硬盘被当做文件来管理。如果使用IDE硬盘,将被看做/dev/hda。不要删除该文件。正常情况下用户无需经常访问该目录。

/boot目录

这里通常是Linux内核所在的文件。高级用户可以根据自身的原因更改内核的位置,但这里是通常情况下大多数系统的内核所在位置。用户最终会用到这一目录,因为未来可能需要使用两种以上不同类型的内核。

/root目录

如果不是“root”用户但输入了cd /root,将会进入/root目录,但不能做任何处理。root的家目录对其他所有人都是限制区域。Linux的回应类似于“你不需要知道这些”。用户的家目录同样对于其他用户也是限制区域。

/sbin目录

/sbin是另一禁区之一。你可以看但不能碰。这一目录类似于/bin,里面有很多常用程序,但但只能由root使用。”Shutdown”就在那里,只有root有此权限。如果其他人尝试关机,将会收到一条消息显示只有root才能执行此操作。

/tmp目录

/tmp是用来存放临时性文件的,当你使用类似KDE的Linux系统是,窗口管理器将会在这里创建文件供临时用途。当你双击一个图片时,弹出一个图片但同时创建了一个临时文件。当你关闭KDE图像程序时临时文件即被删除。主要是在窗口管理器之下工作的程序会利用这一目录。

/var目录

/var是用来存放大小可变文件的。例如,Linux中有一些数据库。其中一个是MySQL。通常,MySQL在/var目录的子目录/var/mysql之下保存数据。这通常也是邮件服务器存放接收邮件的地方。同样,邮件大小可变。

/lib目录

/lib是存放库文件的。程序会使用库以执行他们的功能。不同的程序使用相同的库,所以Linux在这里存储文件以使每一个程序都能找到。除非用户得到信息“找不到共享库”否则用户无需关心此目录。这有时会发生在用户下载一个程序并且需要编译的饿时候。即便如此,需要知道“依赖项”的情况也非常少见。大多数程序,即使从souce编译,通常也有一个预配置程序以确保他们可以找到运行所“依赖”的库。如果没有的话,他们将会告知用户无法安装程序。

/home目录

如我们之前所提到的,/home是用来存储用户个人文件的目录,每一个人在使用程序时都有特定的喜好,这些通常存放在用户家目录下的配置文件。这类文件大多数以“.”开头。

cd /home/[username]

ls -a

 

文件权限——chmod:

Linux从UNIX承袭了文件所属和权限的概念。这主要是源于Linux作为网络系统不同用户会使用不同程序或文件,等等。显而易见,有必要保持文件的有序性和安全性。我们不希望看到常规用户使用可能摧毁整个系统的程序。同样,也涉及一些隐私问题。

如同本系列前篇所提到的,多用户概念是Linux系统的一大优势——也就是说多人使用同一台机器或一人使用同一台机器做不同工作。这就是文件许可系统需要解决的问题。我们将会讨论关于文件所有者以及谁能对文件做哪些事情等一些基本概念。我们要讲述的是如何理解文件许可标识以及怎样修改特定文件以使它们安全性更高。

许可标识:

如果在home目录下运行命令

ls –l

你将会得到一个文件列表,可能包含类似以下内容:

-rw-r--r--  1 bob  users  1892 Jul 10  18:30 linux_course_notes.txt

这句话的意思是,从右向左解释,文件linux_course_notes.txt于7月10日晚上6:30创建大小为1892字节。它属于组用户(也就是说,使用本机器的用户)。然后是文件许可符号。


让我们看一下这些符号的含义:

破折号-将权限分隔成三种类型:

第一部分表示所有者bob的权限。

rw之前的破折号表示这是一个普通的包含任意类型的数据。例如,对于目录将会是d而不是破折号。

第二个rw表示bob可以对他的文件进行读写。这非常好理解,文件的所有者可以对文件进行任意操作。

第二个破折号之后的第二部分,表示组权限。Linux可以为文件访问创建不同类型的组。在家用电脑环境下任一用户可对文件进行读取但不能对其进行写入。这是一种常规的情况,作为一个用户,很可能需要禁止其他人读取你的文件,稍后讨论这一点。

两个破折号之后(这里两个破折号是因为组成员没有写权限)是全部用户权限。内部或外部(网络情况下)能够访问此电脑的人都能够读取此文件。再一次,我们可以取消用户读取此文件的权限。

让我们来看看其他示例。一个读取不同类型文件权限的地方是/bin目录。这里我们能看到Linux系统上所有人的可用命令。以gzip命令为例,这是一个Linux文件压缩工具。

-rwxr-xr-x  1 root root        53468 May  1  1999 gzip

如此处所见,这里有一些区别。

程序名称,日期,字节数都是标准的。即便如此这还是明显不同的信息,改变主要在于所有者和组。root拥有文件并且在组“root”中。Root实际上是这个组中唯一的成员。

这是一个可执行文件(程序),这也就是为何符号中会有一个X。此文件任何人都可以执行:所有者(root),组(root)以及其他所有能够接触机器的用户。

如前所述,此文件是一个程序,因此除了root以外的其他人都没有必要“写入”文件,所以除了root以外的任何人都没有w权限。

如果我们查看/sbin目录,此目录下的文件只有root能够使用或执行,许可权限将类似如下内容:

-rwxr--r--  1 root root        1065 Jan 14  1999 cron

cron”是Linux系统中允许程序在特定时间和特定情况之下自动运行的程序。如这里所示,只有root,也就是文件的所有者能够使用这一程序,其他用户都没有执行权限。

现在我们来谈一谈特定权限的更改。

chmod

chmod是让用户对文件设置权限的命令。

chmod permissions file

chmod permission1_permission2_permission3 file

在使用chmod的时候,用户需要认识到是为3种类型的Linux用户设置权限。因此,当设置权限的时候,你实际上是为“你自己”,“你的组”,“其他所有人”指定权限。因此,设定权限时需设定三种级别,而不是仅仅是一个用户。

Linux允许每个文件设置三种权限:read,write,execute,所以,作为非专业人员,如果你需要文件被所有人可读,并且只有自己可写,你可以使用如下结构:

command:owner:group:world:path

chmod read&write read read FileName

chmod 644 myDoc.txt

看一看“ls -l”的输出:

-rw-r--r-- 1 gcawood iqnection 382 Dec 19 6:49 myDoc.txt

你需要按照以下格式将单词的读写或执行转换成对应的八进制数字:

4 read (r)

2 write (w)

1 execute


例如:

chmod 400 mydoc.txt 对所有者可读

chmod 040 mydoc.txt 对组可读

chmod 004 mydoc.txt 对全部人可读

chmod 200 mydoc.txt 对所有者可写

chmod 020 mydoc.txt 对组可写

chmod 002 mydoc.txt 对全部人可写

chmod 100 mydoc.txt 对所有者可执行

chmod 010 mydoc.txt 对组可执行

chmod 001 mydoc.txt 对全部人可执行

可能有些读者发现这些数字不够表达所需的权限——请看如下规则:

7 = 4+2+1 (read/write/execute)

6 = 4+2 (read/write)

5 = 4+1 (read/execute)

4 = 4 (read)

3 = 2+1 (write/execute)

2 = 2 (write)

1 = 1 (execute)


chmod 666 mydoc.txt 对全部人可读写

chmod 755 mydoc.txt 对所有者rwx,对组rx,对其他所有rx

chmod 755 mydoc.txt 对全部人可读写及执行

643 消息

2014年5月13日 19:00

赞!

1.2K 消息

2014年5月13日 20:00

是的,常常用于重新执行刚修改的文件

643 消息

2014年5月13日 20:00

最近在学GP,请问source命令也是Linux的吧

找不到事件!

Top