本书以任务为主线,全面介绍了Red Hat Enterprise Linux 5 Server操作系统,包括Linux桌面应用、Linux系统管理和服务器管理与维护等工作中的应用技能。本书*大的特点是以虚拟企业的真实情景为背景,把Linux网络操作系统的工作过程与学习过程有机地结合起来。
项目3 管理Linux操作系统
3.1任 务 描 述 季目开关制造公司运营过程中,由于公司各部门文件权限没有严格限制,造成公司的研发资料以及行政部门的行政管理资料在公司内部随意传播访问,这就需要网络运维管理员对文件服务器上的文档进行权限规划和限制,并对各部分用户的权限进行设置。用户权限的任务要求:
(1) 研发部开发人员David和Peter属于组A。
(2) 行政部人员Jack和Mike属于组B。
(3) 建立目录/project_a,该目录中的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用户不能对该中进行任何访问操作。
(4) 建立目录/project_b,该目录中的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何访问操作。
(5) 建立目录/project,该目录中的文件可由研发部、行政部人员读取、增加、删除、修改以及执行,其他部门用户只可以对该目录进行只读的访问操作。
3.2任 务 分 析
(1) 理解用户与账户的概念。
(2) 熟悉账户配置文件。
(3) 学会设置基本操作权限。
(4) 了解特殊权限的使用。
3.3知 识 储 备 3.3.1Linux系统管理概述 Linux操作系统是多用户的操作系统,允许多个用户同时登录到系统上,使用系统资源。当多个用户能同时使用系统时,为了使所有用户的工作都能顺利进行,保护每个用户的文件和进程,也为了系统自身的安全和稳定,必须建立一种秩序,使每个用户的权限都得到规范。
3.3.2用户和组管理
1. 用户的概念 Linux 是真正意义上的多用户操作系统,可以在Linux系统中建若干用户。例如,其他人想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)。这时我就可以给他建一个新的用户名,这从计算机安全角度来说是符合操作规则的; 当然用户的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问一个Linux服务器的网页程序,就是nobody用户; 我们匿名访问ftp 时,会用到用户ftp或nobody。Linux系统的一些账号请查看 /etc/passwd。
2. 用户的类型
(1) root 用户: 系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有*高权限。
(2) 普通用户: 这类用户能登录系统,但只能操作自己目录的内容; 权限有限; 这类用户都是系统管理员自行添加的。 3. 用户组的概念 用户组就是具有相同特征的用户的集合体。例如,有时要让多个用户具有相同的权限,如查看、修改某一文件或执行某个命令,这时需要用户组,把用户都定义到同一用户组,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是通过定义组和修改文件的权限来实现的。例如,为了让一些用户有权限查看某一文档,如是一个时间表,而编写时间表的人要具有读写执行的权限,想让一些用户知道这个时间表的内容,而不让他们修改,所以可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的。 用户和用户组的对应关系是: 一对一、多对一、一对多或多对多。 一对一: 某个用户可以是某个组的唯一成员。 多对一: 多个用户可以是某个唯一的组的成员,不归属其他用户组,如beinan和linuxsir两个用户只归属于beinan用户组。 一对多: 某个用户可以是多个用户组的成员,如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员。 多对多: 多个用户对应多个用户组,并且几个用户可以是归属相同的组。
4. 用户和组管理常用命令
1) 添加系统用户: useradd 格式: useradd [选项] 用户名 useradd -d/*指定用户的宿主目录*/ useradd -e /*指定用户的账号失效时间,可使用YYYY-MM-DD的日期格式*/ useradd -g /*指定用户的基本组名,也可以使用GID*/ useradd -G /*指定用户的公共组名,也可以使用GID*/ useradd -M /*不为用户建立并初始化宿主目录*/ useradd -s /*指定用户的登录shell环境*/ useradd -u /*指定用户的UID号*/
2) 设置系统用户密码passwd 格式: passwd [选项] 用户名 passwd -d /*清空指定用户密码*/ passwd -l /*锁定指定用户账户*/ passwd -S /*查看指定用户状态*/ passwd -u /*解锁指定用户账户*/
3) 修改指定用户账户信息usermod 格式: usermod [选项] 用户名
4) 删除指定用户账户userdel 格式: userdel [-r] 用户名 userdel -r /*删除用户后,也将该用户的宿主目录一并删除*/ 5) 添加一个系统用户组groupadd 格式: groupadd [-g] 组名 groupadd -g /*为新建的组指定GID组标记*/
6) 删除一个系统用户组groupdel 格式: groupdel 组名
7) 输出指定用户的身份标记信息id 格式: id [选项] 用户名 id -u /*只显示有效用户信息*/ id -g /*只显示有效组信息*/ id -n /*只输出用户名称*/ 8) 查看登录到当前主机中的用户users 格式: users/who 9) 切换为另一个用户身份su 格式: su [-l] [目标用户名] su -l /*使用目标用户的登录shell环境,该选项可简写为"-"*/
5. 账号系统文件 完成用户管理的工作有多种方法,但是每种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd,/etc/shadow,/etc/group等。下面分别介绍这些文件的内容。
1) /etc/passwd文件 这个文件是用户管理工作涉及的*重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。例如,用cat /etc/passwd可以查看它的详细信息: root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:Array:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/usr/sam:/bin/sh 可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
(1) “用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号,因为冒号在这里是分隔符。为了兼容起见,登录名中*好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
(2) “口令”: 一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,如x或*。
(3) “用户标识号”是一个整数,系统内部用它来标识用户。一般情况下,它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~Array,Array由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
(4) “组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
(5) “注释性描述”字段记录着用户的一些个人情况,如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用作finger命令的输出。
(6) “主目录”,就是用户的起始工作目录,是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
(7) 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX/TOPS20 type C Shell)、bash(Bourne Again Shell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。 系统中有一类用户称为伪用户(Psuedo Users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如表31所示。