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

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

  (比较:Windows中的一切也都是文件,大多都是微软格式编码过的2进制文件,而配置文件也往往都是进行2进制编码的,甚至成果物都是2进 制编码的, 比如doc文件,你需要使用微软的API才能完成修改。微软将数据和程序同时二进制化的做法,维护了20多年的垄断的同时,也给自己挖好了最后的坟墓,聪 明绝顶的比尔.盖茨显然也看到了这点。所以提前跳船了。我大胆预言,微软最终会推出Office for Ubuntu(别吃惊,office for mac 存在很多年了), 而Windows 8.0将成为最后一个版本的Windows,Windows 会和当年Novell的 Netware一样成为历史。随着Tablet兴起,基于丰富的触摸控制的游戏会大行其道,Windows上基于鼠标的游戏也会成为过时的玩意。至于 Windows Phone 7 则不会有任何厂商“真心”支持, 微软以诉讼相威胁,才让HTC就范。刚刚挣脱了微软的魔掌,谁愿意重回老路呢?。至于广大的.Net程序员,呵呵,赶快来学Linux吧,将 Windows迁移到Linux将会是一块巨大的蛋糕,而两者都会的程序员就有好日子过了)

  由于修改文本文件如此简单,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 g-w 文件名 ---减号表示取消权限

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

  Make everything as simple as possible, 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的时候,就会多了解一些symbolic link的含义。很多东西要磨练以后才可能明白真正的内涵。

转:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/01/2231230.html

Linux的用户(组),权限,文件精妙的三角关系,和强大的帮助系统的更多相关文章

  1. Linux下用户-组权限配置

    cat /etc/group cat /etc/ashadow 一.用户管理 1.添加用户 #useradd 用户名 useradd php100;用cat /etc/passwd查看 分析:php1 ...

  2. Linux命令权限 用户权限 组权限 文件、目录权限

    Linux命令的格式是: 命令+选项+参数 命令是必须存在的,选项和参数可以不必存在,不写的情况是有默认的参数 Linux 一切皆文件 对于文件而言,只需要对文件进行读写就可以实现对文件内容内容的增删 ...

  3. linux 添加用户、权限

    # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...

  4. Linux之用户和权限

    自从我大微软终于放下身段,决定给开源社区一个迟来的拥抱,追随多年的拥趸们像是突然得到了女神的垂青,各种茫然失措.痛哭流涕.欢欣鼓舞,纷纷唱了起来:“等了好久终于等到今天,梦了好久终于把梦实现……”唱完 ...

  5. Linux创建用户与权限赋值

    1.设置文件的权限 1).解说: d:是英语directory的缩写,表示“目录”.就是说这是一个目录. l:是英语link的缩写,表示“链接”.就是说这是一个链接. b:块设备文件 c:字符设备 s ...

  6. Linux命令-用户及权限管理

    一.权限管理linux系统中对文件权限的描述机制: u g od r w x r w x r - x (r读,w写,x执行)文件 所有者 所属组 其他人可以表示为二进制: 111 111 101也可以 ...

  7. linux 新建用户和权限分配

    1.创建新用户:testuser 命令:#useradd 选项 用户名 选项: -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主 ...

  8. linux添加用户、权限

    # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...

  9. Linux实际用户(组)ID,有效用户(组)ID,设置用户(组)ID

    实际用户(组)ID: 标识用户是谁,这两个字段在登录时取自口令文件中的登录项. 有效用户(组)ID: 决定了对文件的访问权限,通常有效用户(组)ID等于实际用户(组)ID,谁运行有效ID就等于谁的实际 ...

随机推荐

  1. spring mvc 注解@Controller @RequestMapping @Resource的详细例子

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  2. Android-LoaderManager异步加载数据库数据

    LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...

  3. 梯度下降VS随机梯度下降

    样本个数m,x为n维向量.h_theta(x) = theta^t * x梯度下降需要把m个样本全部带入计算,迭代一次计算量为m*n^2 随机梯度下降每次只使用一个样本,迭代一次计算量为n^2,当m很 ...

  4. 【TypeScript】TypeScript 学习 5——方法

    在 JavaScript 中,有两种方式定义方法. 1.命名的方法 function add(x,y){ return x+y; } 2.匿名方法 var myAdd = function(x,y) ...

  5. js实现回车登陆

    2018-11-15 $(document).keydown(function (event) { if (event.keyCode == 13) { $("#LoginBtn" ...

  6. VS2017按F1使用中文帮助

    VS2017使用时,按F1出来在线英文帮助,可以稍作改动,出来中文帮助. 1.进入安装文件,选择单个组件,勾选Help Viewer. 2.安装完成后,在IDE中选择在线查看器中启动.

  7. [Xamarin]我的Xamarin填坑之旅(一)

    一想到明天是星期五,不对,是今天,心里就很激动,毕竟明天没课.激动之余,来写一篇博客,记录一下最近踏坑Xamarin开发校园助手APP的一些事儿.也许更像是一篇流水账. 在扯Xamarin之前,有必要 ...

  8. 【自动化专题】借助firefox插件定位web元素小技巧

    浏览器:firefox 插件:firebug.firepath.firefinder 安装插件---已安装的请跳过 1.安装firefox浏览器 2.打开firefox-附加组件(找不到入口的问度娘) ...

  9. GSS1 - Can you answer these queries I(线段树)

    前言 线段树菜鸡报告,stO ZCDHJ Orz,GSS基本上都切完了. Solution 考虑一下用线段树维护一段区间左边连续的Max,右边的连续Max,中间的连续Max还有总和,发现这些东西可以相 ...

  10. 微信小程序 Unexpected end of JSON input/Unexpected token o in JSON at position 1

    原因JSON.parse无法识别某些url中的特殊字符,所以报错 mistakes.js中 nextBtn:function(){ var nextData = this.data.dataNextI ...