《Linux 就是这个范儿 - 阅读笔记2》 融于心而表于行

用户的身份

Linux 下的用户等级实际上是非常简单的,就两个等级 root 和非 root。root 用户在 Linux 下是拥有至高无上的权利的,也就是说它可以胡作非为。但是比较幸运的是,只有一个用户是 root,它的用户名就叫 root。而非 root 用户的权利是严格受限的,只能访问由 root 规定的文件。

澡堂子模型

我们把 Linux 的用户管理方式比喻成一个澡堂子模型,因为这非常形象。所有非 root 用户,都只是这个澡堂子的顾客:root 用户则是这个澡堂子的服务生;Linux 系统就是这个大澡堂子。

去过澡堂子的人都知道,一进门就会有服务生接待你,让你登记并发给你一个带有号牌的钥匙。这个过程跟 root 用户给其他用户分配帐号是一个道理。登记是向系统中添加用户,钥匙是给你登录系统的密码,而号牌上的号码就是你的用户名。

当你获得钥匙之后,就可以进入更衣室了。更衣室一般都会有几组大柜子。每个大柜子又有 n 多的小柜子组成,其中有一个小柜子是属于你的。怎么找到属于你的柜子呢?看柜子上面的号码!这个号码与你钥匙号牌上的号码是一致的。

这个过程跟我们登录 Linux 系统的过程很相似。正确登陆后,我们就会拥有一个自己的文件目录,这个目录一般是 /home/[username],后面的 [username] 与你的用户名相同。一般称这个目录为“home 目录”。更衣室的柜子就是你的 home 目录,里面可以放入一些你的私人物品,可以保证别人偷不走。

只要离开你的 home 目录,就进入了公共区间。一般都是只读的,但有少数的位置是能够写入数据的,比如 /temp 目录。在使用 Linux 的过程中如果忘记了自己的密码,只要向 root 用户申请,就能够变更新的密码。

理解用户角色

在 Linux 系统中还有一些用户是用来完成特定任务的,比如 nobody、admin、ftp 等。需要注意,在 Linux 中不管用户名看起来有多牛,只要不是 root ,它就一定是个普通用户,权力大小都是相同的。很多资料上说的所谓用户角色的概念,尤其是说角色不同然后权限不同的观点不是十分精准,很容易造成 Linux 用户有权限大小的印象。其实所谓的权限,则是不同的用户所能访问的文件不同而产生的一种假象。而这种假象又不是单独一个用户的概念能决定的,还要用到用户组的概念。

什么是用户组呢?可以把它理解为用户的职业。一个用户可以属于多个用户组,而且还要注意,一个用户至少应该属于一个用户组。

虽然用户角色不能跟权限靠上关系,但不同角色有些时候还是有待遇差别的,所谓的待遇就是是否拥有密码、home 目录以及 shell 这些资源。有些用户的主要任务就是运行某些服务程序以确保安全的,比如 nobody 用户就可以用于 Nginx(一个高性能的 HTTP 和反向代理服务器) 的工作进程。对于这类用户一般是不分配密码和 shell(严格来说还是分配 shell 了的,只是分配的是 /sbin/nologin 这个特殊的 shell。) 的,甚至 home 目录也没有。为什么要这么做呢?

首先,可能会有很多服务程序默认使用这个用户,如果设置了密码,程序就无法自动使用了;其次,因为不会有人使用这个用户登录系统,也就没有必要分配一个 shell 给它,然而私有的 home 目录也显得有些多余。

/etc/passwd文件查看用户

/etc/passwd 文件,它是用来存放用户基本信息的。这个文件的部分内容如下:

[[email protected] lixin]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
......
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
piranha:x:60:60::/etc/sysconfig/ha:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
luci:x:141:141:luci high availability management application:/var/lib/luci:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
dovenull:x:495:491:Dovecot‘s unauthorized user:/usr/libexec/dovecot:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
jason:x:500:500:Jason Yang:/home/jason:/bin/bash

文件的每一行都代表一个用户。换句话说,这个文件有几行你的系统中就拥有几个用户。每一行由冒号“:”分割成7个字段,其结构如下所示:

用户名 : 密码 : UID : GID : 用户全名 : home 目录 : shell

这个文件中比较重要的是 UID(User ID) 和 GID(Group ID),无论是用户还是用户组,Linux 只靠它们来识别。所以 UID 和 GID 都只是一个数字。为了区别不同的用户或用户组,需要保持它们自身在系统中的唯一性。UID 和 GID 是可以相同的,因为它们代表的是不同的概念(可以把他们理解为两张数据库表中的主键值),都为 0 的 UID 和 GID 是 Linux 系统中比较特殊的,它们分配给 root 用户和 root 用户组。UID 和 GID 是可以通过程序获取的,所以可以通过这个特殊的值来判断是否能够胡作非为。

虽然系统只区别 0 和 非零的 UID 和 GID,但是在使用习惯上还是进行了一些分段的(类似我们的平时分配端口号那样)。0 自然不用说,就是给 root 的;1~499是属于系统用户的,比如前面提到的那些待遇比较差的和一些甚至是占坑的就属于这类;500~4294967295是分配普通用户的。所以你会发现,你系统中的第一个被添加的用户的 UID 和 GID 都是 500。

未完,待续。。。

时间: 2024-10-13 18:54:48

《Linux 就是这个范儿 - 阅读笔记2》 融于心而表于行的相关文章

《Linux就是这个范儿》

<Linux就是这个范儿> 基本信息 作者: 赵鑫磊    (加)Jie Zhang(张洁) 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115359360 上架时间:2014-6-27 出版日期:2014 年7月 开本:16开 页码:728 版次:1-1 所属分类:计算机 > 操作系统 > Linux 更多关于>>> <Linux就是这个范儿>   编辑推荐 阿里巴巴Linux技术大拿赵鑫磊.支付宝高级专家Jie Zhang带你深入

新书《Linux就是这个范儿》预售

预售地址 当当 内容简介 本书内容源自淘宝技术大学的培训实战.由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同著写.两位作者用轻松.诙谐的语言讲解了高深的Linux特性.通俗易懂.深入浅出,从Linux设计思想的角度出发,授人以渔.同时,又密切结合应用案例,透彻展示出Linux的系统架构设计是如何在实际中贯穿的,从而让读者真正掌握Linux的强大之处.书中不含较为复杂的技术理论问题,一切从实际出发.全书共分为三

《Linux 就是这个范儿》 读书笔记

选择哪个发行版? 就目前的情形看,Linux发行版可以分为三个主要的分支:RedHat.Slackware和Debian.每一个分支都拥有一个最具代表性的商业服务器级的发行版,它们是:Red Hat Enterprise Linux 简称(RHEL):SUSE Linux Enterprise 简称(SUSE):Ubuntu Server 简称(Ubuntu). Linux分支概念在当前的发行版中越来越模糊了,现在比较清晰的是软件安装方法的不同,有些使用rpm,有些使用deb,有些甚至直接采用源

Linux就这个范儿 第8章 我是Makefile

P287 Makefile的作用就是——自动化编译,一旦写好,只需要一个make命令(解析Makefile,执行Makefile中描述的操作),整个工程就能完成自动编译,无论这个工程拥有多少个源代码文件.Makefile定义了一系列的规则,来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile就像一个shell脚本一样,其中也可以执行操作系统的命令. 最典型的就是在微软的Visual Studio中,当你需要别人编写的dll作为你项目

Linux device drivers,LDD阅读笔记

第一章       惯例,泛泛而谈的第一章.但我注意到一个关键字“linux的模块”. 第二章       令人激动的hello world.这一章要开始实践了,所以先下载虚拟机和linux吧.

Linux Shell 脚本攻略阅读笔记第1章 小试牛刀

一.简介 1.Bash(Bourne Again Shell),目前大多数GNU/Linux系统默认的shell环境. 命令都是在shell终端中输入并执行.打开终端后,提示符的形式:[email protected]$       或    [email protected] #     ($表示普通用户,#表示管理员用户root) 2.shell脚本是一个以#!(shebang)起始的文本文件,如下:   #!/bin/bash shebang是一个文本行,其中#!位于解释器路径之前./bi

Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统

http://www.cnblogs.com/MYSQLZOUQI/p/5257200.html glibc库是什么?没有glibc库,就没有Linux.我们平时用过的malloc和strcpy等函数都是glibc这位仁兄提供的.除此之外,它还提供了网络编程中要用到的Socket API接口.之前曝光的glibc库漏洞 f

Linux内核设计与实现 阅读笔记:8、下半部和推后执行的工作

By:Ailson Jack Date:2016.04.10 个人博客:www.only2fire.com 本文在我博客的地址是:http://www.only2fire.com/archives/871.html,排版更好,便于学习. 上一章简单的讲了一下中断的上半部(中断处理程序),这一章就讲讲中断的下半部以及下半部的几种实现机制,最后简单的写了几个测试的例子来测试软中断.tasklet和工作队列. 测试程序下载地址:. 1.下半部简述 中断下半部的任务是执行与中断处理密切相关但中断处理程序

《深入理解Linux网络技术内幕》阅读笔记 --- 路由

一.Linux内核中路由相关的主要数据结构 struct fib_result:对路由表查找后返回该结构,它的内容并不是简单的包含下一跳信息,而且包含其他特性,例如策略路由所需的更多参数. struct fib_rule:表示由策略路由在路由流量时选择路由表的规则 struct fib_node:一条路由表项.例如,该数据结构用于存储由route add或ip route add命令添加一条路由时生成的信息. struct fn_zone:一个zone表示子网掩码长度相同的一组路由 struct