Linux的用户、组、文件、权限的关系

偶尔会用到Linux,它的用户、组之间的关系之前一直觉得十分复杂,而且划分了三种权限,交织在一起就更觉得凌乱了。今天想理一理他们之前的关系,偶遇某前辈的文章,质量很高,略删减编辑以留博备份,同时也方便他人。


原文如下:


在linux中一切都是文件(文件夹和硬件外设是特殊的文件),如果有可能尽量使用文本文件。文本文件是人和机器能理解的文件,也成为人和机器进行交流的最好途径。由于所有的配置文件都是文本,所以你只需要一个最简单的编辑器就可以修改。即使是2进制执行文件,也会附上源代码。

这就是Linux的基本哲学,也是开源的基本精神。GNU/Linux的最终发展就是跨越人和机器之间的界限。

(比较:Windows中的一切也都是文件,大多都是微软格式编码过的2进制文件,而配置文件也往往都是进行2进制编码的,甚至成果物都是2进制编码的,比如doc文件,你需要使用微软的API才能完成修改。)

 

由于修改文本文件如此简单,Linux系统本身肯定要加以规范。这就引出了用户(组)和权限这2个概念。

而这2个概念的引入,完美的保证了Linux的安全性,同时没有添加复杂性。由于一切皆为文件。所以Linux引入了2个文件来管理用户(组), /etc/passwd存放用户,/etc/group存放组,然后在文件系统中的每个文件的文件头里面添加了用户和文件之间的关系信息。

用户和文件的关系只有2种, 拥有和不拥有。

组和文件的关系只有2种,拥有和不拥有。

用户和组的关系只有2种, 属于和不属于。

将这三种关系叠加,用户和文件的最终关系可以归纳为3类

1,用户拥有该文件

2,用户属于某个组,某个组拥有该文件(即用户通过属于某组来拥有该文件)

3,用户不拥有该文件

而在文件的文件头里,则存储了3组信息分别对应上面3类关系

第一组存放拥有该文件的用户的的权限。

第二组存放拥有该文件的组的权限,(所有属于该组的其他成员都获得此权限)。

第三组存放所有不拥有该文件的用户(等于所有用户减去以上2类用户)所获得权限。

非常微妙的是,你可以让第三组的权限大于第一,第二组,也就是不用拥有该文件的用户的权限反而更大。(评论:当我想通了这层关系以后,很感叹IT前辈们的超凡智慧,这样的设计具有非常好的对称性,拥有未必是好事,不拥有可能是种幸福。人生何尝不是如此呢?)

下面要说明一下权限

权限一共有三种读(缩写为r),写(缩写为w),执行(缩写为x)。读和写很好理解,执行的话当然只对能执行的文件才有效果。权限相对文件夹来说意义略有不同。比如如果你拥有对某目录的执行权限,你才能cd 到某目录,而如果你没有读权限,你即使cd到了某目录,你也不能ls。

 

在实践为了省事,我们一般都会用上所有三种权限,所以初学者只要知道有这么回事情就可以了。结合用户(组),权限,文件,我们用一个命令ls -l 就能显示出三者之间的关系

 

下面是一个例子

显示readme.txt的权限信息

r-x-w-rw- tom admin readme.txt

上面的r-x-w-rw-,每3个字符为一组,分别对应用户,组,其他用户,-表示无此权限。用户(缩写为u)的权限:是读(r)和执行(x)组(缩写为g)的权限:是写(w)。其他用户(缩写为o)的权限:是读(r)和写(w)。用户tom拥有该文件

组admin拥有该文件。任何用户登录以后根据以上设置就可以获得自己相应的权限。修改权限也很简单,比如要给g添加权限读(r)和执行权限(x)就是:

chmod g+rx 文件名 ---加号表示添加权

要取消其他用户的写(w)权限

chmod o-w 文件名 ---减号表示取消权限

在实际的应用当中,我们一般会用应用程序的名字来设置组名,比如在我的系统中就有mysql组,mongdb组。(评论:这里再引用一下最聪明的物理学家兼哲学家爱老的名言

Make everything as simple aspossible, but not simpler

                                                            Albert Einstein

我对这句名言的翻译也很simple,就是“简约不简单”,Linux这种权限系统的精妙设计很容易让人联想到人体的DNA系统,只有四种碱基,确可以演化出人体这么复杂而有效的系统。而反观Windows系统,真是无奈呀。用户的电脑居然可以成为QQ和360的战场,用户还没有任何证据来证明谁是谁非。这到了Linux系统上,在这么简洁的安全机制下是根本不可能的事呀)

最后来谈一谈 Linux的三级帮助系统

Linux的帮助系统非常有特色。如果能熟练使用帮助系统,加上谷歌学习法(内事不决问百度,外事不决问谷歌),自学就会变得非常轻松,第一种是迷你型帮助,这种帮助篇幅最短,最精炼,多用在想不起某个命令的具体参数,命令用法如下

命令 –help,比如 ls –help

第二种是中型帮助,这种帮助篇幅较长,说明详细,多用在象详细了解某个命令的来龙去脉,命令用法如下

man 命令--------man是(manual的缩写),比如 man cd

第三种是大型帮助, 这种帮助篇幅最长,有的可能是一本书, 命令用法如下

info 命令,比如 info rm

Linux学习一定要自己多磨练,才能真正掌握。Easy come easy go。任何很容易学会的知识和技术,多半都很廉价。

 

PS.有网友希望推荐关于Linux深入浅出的书籍,我看过多本原版书,不过大多数的知识还是靠自己实践,和谷歌来的。很多Linux知识可能是在学习别的东西的时候获得,比如配置Apache的时候,就会多了解一些symboliclink的含义。很多东西要磨练以后才可能明白真正的内涵。


原文链接:http://kb.cnblogs.com/page/87100/


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,可以使用chmod命令修改文件或目录的权限。chmod命令的语法如下: ``` chmod [OPTIONS] MODE[,MODE] FILE... ``` 其中,MODE是文件或目录的新权限,FILE是需要修改权限文件或目录。OPTIONS是一些可选项,例如-R示递归修改子目录和文件权限。 MODE有三种示方式:数字、符号和字母。 1. 数字示法 数字示法可以使用0~7的数字来文件或目录的权限。每个数字示一权限,其中第一个数字示所有者的权限,第二个数字示群权限,第三个数字示其他用户权限。具体的对应关系如下: | 数字 | 权限 | | --- | --- | | 0 | 没有权限 | | 1 | 执行权限 | | 2 | 写权限 | | 3 | 写和执行权限 | | 4 | 读权限 | | 5 | 读和执行权限 | | 6 | 读和写权限 | | 7 | 读、写和执行权限 | 例如,将文件file.txt的所有者权限设置为读写执行,群和其他用户权限设置为只读,可以使用以下命令: ``` chmod 754 file.txt ``` 2. 符号示法 符号示法使用加号、减号和等号来文件或目录的权限。加号示增加某个权限,减号示去掉某个权限,等号示设置权限。具体的语法如下: ``` chmod [ugoa][+-=][rwx] FILE... ``` 其中,ugoa示要设置的用户类型,u示所有者,g示群,o示其他用户,a示所有用户。加号、减号和等号后面跟着rwx示要设置、去掉或增加的权限。 例如,将文件file.txt的所有者权限设置为读写执行,群和其他用户权限设置为只读,可以使用以下命令: ``` chmod u=rwx,g=rx,o=r file.txt ``` 3. 字母示法 字母示法是符号示法的简化版,使用u、g和o分别示所有者、群和其他用户,使用a示所有用户。使用+、-和=分别示增加、去掉和设置权限。使用r、w和x分别示读、写和执行权限。 例如,将文件file.txt的所有者权限设置为读写执行,群和其他用户权限设置为只读,可以使用以下命令: ``` chmod u=rwx,g=rx,o=r file.txt ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值