第8章 管理用户和文件权限.docx
第八章 管理用户和文件权限管理用户账号用户和组账号概述1. 用户账号 根据其拥有的权限 担任的角色不同 分为 超级用户 普通用户和程序用户只在用户自己的主目录中有完全权限程序用户 不能登录 只能维持系统或某个程序的运行2. 组账号基本组 每个用户都有一个基本组 将用户A添加到用户B的基本组就不在属于A的基本组公共组 用户可以属于多个公共组练习1:查看UID和GID号Root用户帐户的UID固定值为0,程序帐户的UID为1-599之间,普通用户的UID为500-60000普通用户 组账号使用的UID和GID的范围定义在配置文件/etc/login.defs练习2:使用不同的Ubuntu用户登录本练习为你介绍Ubuntu用户种类,启用root账户,并使用root账户登录。æ 超级管理员Root 系统管理员,为了防止root用户造成无法弥补的误操作,在默认情况下Ubuntu的root不能登录.如果一定要以root登录的话,可以执行以下步骤按ctrl+alt+F2,就可以使用root登录系统。 可以看到root登录后的提示符为#,普通用户登录后的提示符为$æ 安装时创建的系统用户此用户创建时被添加到admin组中,而在Ubuntu中,admin组中的用户默认是可以使用sudo命令执行只有管理员才能执行的命令,因此这个用户相当于一个比较安全的系统管理员,因为如果不适用sudo命令的话,它相当于一个普通用户。æ 普通用户由管理员创建,只能执行普通的操作。练习3:用户账号管理/etc/passwd 用于保存用户名 宿主目录 登录Shell等基本信息 普通用户能够访问 管理员能够修改/etc/shadow 用于保存密码 账号有效期等信息 只有root能够访问第二个字段为经过加密的用户密码字串 或者密码占位符“X”所有用户能够访问passwd 只有root能够修改第二个字段 使用MD5加密的密码字符串 当为* 或!时表示此用户不能登录 空表示不需要密码就能登录7天前提示密码过期练习4:添加用户帐户使用useradd 添加新用户,查看useradd命令的帮助。创建登录名为stu01的用户,-m指定要创建主目录,-s指定用户登录后的shell,-d指定主目录位置,-p指定用户密码。rootubuntuServer:# useradd -m -s /bin/bash -d /home/stu01 stu01 查看用户 创建用户时指定用户的ID,并查看用户UID。rootubuntuServer:# useradd -m -s /bin/bash -d /home/hlg -u 588 hlgrootubuntuServer:# grep "hlg" /etc/passwd练习5:创建禁止登录用户创建一个不允许登录的用户rootwebServer:# useradd -s /sbin/nologin dluserrootwebServer:# passwd dluser大多数程序用户都是被禁止登录到系统,查看禁止登录用户。按ctrl+alt+F4 使用dluser登录,看看是否能够成功练习6:创建具有管理员权限的账户/etc/sudoers指定了哪些用户可以以哪些身份运行哪些命令。让普通用户support只能在某几台服务器上,执行root能执行的某些命令 首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种 Host_Alias Cmnd_Alias User_Alias Runas_Alias 1) 配置Host_Alias:就是主机的列表Host_Alias HOST_FLAG = hostname1, hostname2, hostname3 2) 配置Cmnd_Alias:就是允许执行的命令的列表Cmnd_Alias COMMAND_FLAG = command1, command2, command3 3) 配置User_Alias:就是具有sudo权限的用户的列表 User_Alias USER_FLAG = user1, user2, user3 4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表Runas_Alias RUNAS_FLAG = operator1, operator2, operator35) 配置权限 配置权限的格式如下: USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG 6) 如果不需要密码验证的话,则按照这样的格式来配置 USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG查看默认的sudoer文件配置rootwebServer:# grep -v "#" /etc/sudoers%admin 代表admin组的用户可以 更改任何身份 使用任何命令。以下命令将会创建一个用户,将该用户添加到admin组。该用户使用sudo命令提升为管理员。rootwebServer:# useradd -G admin -m -d /home/boss boss打开putty使用boss登陆,验证该用户可以使用sudo创建用户。将现有用户添加到admin组rootubuntuServer:# gpasswd -a hlg admin打开putty使用hlg登录,使用sudo创建用户,你发现能够创建成功。练习7:删除用户,同时删除主目录删除用户的命令userdel删除用户和用户主目录。练习8:查看用户主目录普通用户主目录/home 存储用户相关配置文件Root用户的主目录/root查看主目录的权限可以看到用户的主目录只允许自己能够修改,其他用户只能读和执行。显示宿主目录隐藏文件和文件夹练习9:设置用户密码和锁定用户passwd命令可以更改当前用户密码,也可以更改其他用户的密码。普通用户改自己密码。更改其他用户密码锁定用户hlg 注意锁定前后的变化查看用户是否锁定 注意hlg后面的!号 表示该账户锁定锁定的用户不能登录。解锁用户练习10:usermod命令 修改用户帐户属性本练习将会使用usermod用户移动主目录,锁定用户和解锁用户。查看hlg的主目录,注销hlg,否则不能将hlg的主目录移动到根目录,修改用户主目录,查看用户主目录,可以看到hlg的主目录已经更改为/hlg查看用户hlg的状态,锁定用户,查看用户状态。使用usermod命令锁定用户帐户,查看状态。将用户账号登录名hlg更改为hanligangrootwebServer:# usermod -l hanligang hlg查看hanligang的信息练习11:userdel命令 删除用户查看userdel的帮助删除用户默认并不删除用户主目录。删除系统用户同时删除宿主目录 删除bossUser和主目录练习12:用户帐户的初始配置文件本练习将会为你介绍用户登录后环境设置,包括全局环境设置和用户环境设置。新用户的宿主目录来自/etc/skel/ 基本上都是隐藏文件. 用户的宿主目录/etc/profile,/etc/bashrc 是系统全局环境变量设定/.profile用户主目录下的私有环境变量设定,用户每次登录时被执行;/.bashrc文件中的命令会在每次加载/bin/Bash程序时(当然也包括登录系统)被执行而.bash_logout文件中的命令将在用户每次退出登录时被执行注意看现有命令的别名,添加过滤注释行的命令别名mygrep。保存输入exit推出root用户,重新使用Putty登陆。查看mygrep命令查看interfaces文件。组账号管理每个用户都必须属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Ubuntu下的用户属于与其同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的添加、删除和修改实际上就是对/etc/group文件的记录更新。 练习13:查看用户的UID和GID以boss登陆,查看自己的ID,用户查看指定用户的uid,宿主组的GIU练习14:查看组账号文件/etc/group 存储组信息,以下命令练习15:groupadd 命令 添加组账号添加组javaClass,然后查看group文件中添加的该组练习16:gpasswd命令 添加删除组成员本练习演示如何向组添加成员。添加用户zhangjian,将该用户添加到javaClass组。使用zhangjian登录Ubuntu然后再输入id,查看当前用户所属的组,发现当前用户的令牌已经有javaClass组添加boss用户到javaClass组,查看javaClass组的成员。删除组中的成员,查看该组的成员。练习17:groupdel命令 删除组账号查看hanadmin当前用户id删除javaClass组查看hanadmin用户的id 用户和组账号查询练习18: groups命令 查询某个用户帐户所属的组本练习演示使用groups命令查看指定用户所属的组和当前用户所属的组。查询用户所属的组查看当前用户所属的组,适应zhangjian连接到ubuntu。查看当前用户所属的组。通过group文件,查看zhangjian所属的组。练习19:finger命令 查询用户帐户的详细信息本练习使用finger命令查看登录ubuntu服务器的用户。安装finger工具。可以看到登录到ubuntu的用户,用户名 登录终端 空闲时间 登录时间以多行显示的方式查看指定的用户帐户 zhangjian练习20: who 、w、users命令 查询当前登录到主机的用户信息列出用户名 终端 登录时间 来源地点等信息管理文件目录的权限和归属文件/目录的权限和归属· 访问权限· 读取:允许查看文件内容、显示目录列表· 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录· 可执行:允许运行程序、切换目录· 归属(所有权)· 属主:拥有该文件或目录的用户帐号· 属组:拥有该文件或目录的组帐号练习21:查看文件/目录的权限和归属本练习查看文件夹权限和文件权限,并验证权限。查看/etc目录 /etc/passwd和/etc/shadow文件的权限和归属第一个字符 表示该文件的类型 d目录 b 块设备 c 字符设备文件 普通文件 l 连接文件第24个字符 表示该文件的属主用户(User)对该文件的访问权限第57个字符 表示该文件的属组内各成员用户(Group)对该文件的访问权限第810个字符 表示其他任何用户(Other对该文件的访问权限)普通用户不能查看shadow文件验证普通用户不能打开shadow文件能够打开/etc/passwd介绍文件/目录的权限练习22:设置文件夹权限在根目录下创建一个文件夹/mnt/sharedata,root能够读写执行的权限、root属组读写、其他用户能够读。更改权限,查看更改后的权限。或者通过以下方式授予o执行的权力取消用户,宿主组和其他用户组的w权限,查看更改后的权限。通过以下方式去掉所有人的执行权限为所有人授权能执行 a代表all 所有人 即ugo重新设置sharedata文件夹的权限 去除其他用户的权限练习23:Linux文件夹权限不继承本练习验证Ubuntu文件夹权限不继承Chmod R能够设置目录以及目录中的所有子目录及文件的权限。练习24:设置文件/目录的归属需要设置文件或者目录的归属时,可以通过chown、chgrp命令进行chown命令既可以修改属主,也可以修改属组,而chgrp命令只用于修改属组信息(因此并不常用将sharedata目录的属主、属组设置为 查看子目录的属主和属组,递归设置文件夹属主单独设置属组单独更改属主