第6章用户账户和组管理6.1用户和组的基本概念•用户从本地或者远程登录至Linux系统时,必须拥有用户账户,系统将核对用户输入的用户名和密码,只有当用户名存在且密码与之相匹配之后,用户才能成功登录系统。•权限相同的用户可以为其分配组,方便统一进行管理。组中可以包含多个用户,用户也可以加入到多个组中,分别具备不同组的权限。6.1.1用户•在Linux操作系统中的用户类型有三种,分别是超级用户、系统用户和普通用户。不同的用户拥有不同的操作权限,系统将根据已有设置为不同的用户建立不同的操作环境。6.1.1用户•1.超级用户•超级用户即root用户,Linux系统中root用户拥有的权限是最高的,它可以完成普通用户无法进行的操作。•在默认情况下,出于安全考虑,Ubuntu的root用户是无法登录的,如果需要以root用户的身份访问系统,需要执行如图命令,为root用户设置密码。•root用户的命令行提示符为“#”。•注意,在Linux命令行中输入密码时屏幕没有任何显示,输入密码后按下Enter键即可。6.1.1用户•2.系统用户•系统用户是与某些特定系统服务相关的用户,如sys、mail、lp等。一般情况下,当用户安装特定系统服务时,系统会自动创建相关的系统用户,其默认设置一般也不需要更改。•在安装某些服务器程序时,为了统一配置安全权限,系统会自动生成一些特定的用户和组,用于对这些服务的操作和管理。例如,在安装MySQL服务时,系统会自动生成mysql用户以用于该服务的相关操作。6.1.1用户•3.普通用户•普通用户是使用最为频繁的用户类型,一般在系统安装的同时进行用户的创建和相关设置。普通用户的权限有限,只能在其权限许可的范围内进行完成相关操作,比如只能操作其拥有权限的文件、目录和进程。6.1.1用户•用户属性:•①用户名•②密码•③用户ID(UID)–Ubuntu系统中超级用户的UID为0–1~999的UID供给系统用户使用–普通用户的UID是从1000开始•④主组(GID)–超级用户组(root组)的GID为0–1~999的GID供系统用户组使用–第一个普通用户组的UID是1000•⑤主目录–普通用户的主目录是/home/下与用户名相同名称的目录–root用户的主目录一般为/root•⑥全名•⑦登录Shell6.1.2与用户相关的配置文件•1.用户账户信息文件/etc/passwd•/etc/passwd文件中保存的是系统中所有用户的属性信息。普通用户可以查看这个文件的内容,但仅有root用户(或者临时取得root权限)可以进行修改。6.1.2与用户相关的配置文件•/etc/passwd文件中的每一行代表一个单独的用户,每一个用户的属性信息不同字段之间用“:”隔开。从左到右依次是用户名、密码、用户ID、主组ID、用户全称、主目录和登录shell。为了保证安全,/etc/passwd文件中的用户密码均使用“x”代替,而所有密码均经过加密后保存在/etc/shadow文件中。•如图所示,用户juwenfei的用户名为“juwenfei”,密码屏蔽,用户ID为1000,主组ID为1000,用户全称为juwenfei,主目录位于/home/juwenfei,登录Shell为/bin/bash。6.1.2与用户相关的配置文件•2.用户密码信息文件/etc/shadow•系统中所有用户的用户密码保存在/etc/shadow文件中。所有的密码都是经过MD5算法加密处理过的,只有具备超级用户权限才能查看这个文件。•/etc/shadow文件中的每一行同样代表一个单独的用户。其中的“:”用于间隔用户的属性信息字段。6.1.2与用户相关的配置文件字段示例说明1juwenfei用户名,与/etc/passwd文件中的用户名对应2$1$SDoRlRXD$7wuHnLna-dyolSeJ6YDJ/经过MD5加密的用户密码,如果是“*”,表示对应账户无密码,无法登录系统315352从1970年1月1日起到上次修改密码日期的天数,对于无密码用户,只从这一天起到创建用户的天数40密码自上次修改后,再次修改的间隔天数,若为0,表示没有限制599999密码自上次修改后,多少天内必须修改,若为99999,表示密码可以不修改,若为1,表示永远不可修改67若密码设置了时间限制,则在逾期前多少天向用户发出警告,7为默认天数,-1表示没有警告7空若密码设置为必须修改,而到期后未作修改,系统将推迟关闭用户的天数,-1表示永远不禁用8空该账户被禁用的天数9空该字段为保留字段6.1.2与用户相关的配置文件•3./etc/skel目录•在Linux系统中创建一个新用户时,系统会自动把/etc/skel目录下的所有内容(包括目录、文件等)复制到新用户的主目录“/home/用户名”下。•/etc/skel目录是一个配置文件框架,里面包含了一些默认配置文件,如.bashrc、.bash_profile等。6.1.3组•Linux系统中,可以将具有相同属性的不同用户集合到一起,形成一个组(group),通过对组进行管理可以简化对多个用户的管理。•比如,管理员可以把不同的用户定义到同一个组,修改组的操作权限,这样组下的每一个用户都具有相同的权限。一个用户至少属于一个组并且只能属于一个主组,但同时可以属于多个附加组,其权限是多个组的集合。6.1.3组•Linux系统中组分为系统组和私人组两种类型。•①系统组安装Linux系统和某些特定服务后系统自动生成的组。•②私人组在系统安装完成后由超级用户创建的新组。6.1.3组•组属性:•①组名组的名称,由字母、数字和某些特定字符组成。•②组ID(GID)不同组的惟一数字标识–Ubuntu系统中超级用户组(root组)的GID为0–1~999的GID供系统用户组使用–第一个普通用户组的UID是1000,之后依次类推•③组密码•④组成员6.1.4与组相关的配置文件•1.组账户信息文件/etc/group–/etc/group文件中保存的是系统中所有组的属性信息。–每一行代表一个单独的组,每一个组的属性信息分别用“:”隔开。–各字段从左到右依次是组名、密码、组ID和用户列表。•2.组密码信息文件/etc/gshadow–/etc/gshadow文件用于保存系统中所有组的密码–和/etc/shadow一样所有的密码都经过MD5算法加密处理,只有超级用户才能查看。6.2桌面环境下管理用户和组•桌面环境下管理用户和组,其本质上是对用户和组的相关配置文件(即/etc/passwd、/etc/shadow等)的修改。•本节介绍在Ubuntu系统的默认桌面Unity下的用户和组管理。GNOME和KDE桌面环境下的用户和组管理与之大同小异。6.2.1用户管理•1.新建用户–打开系统设置中的“用户账户”选项,启动用户管理。–解锁并输入密码后用户便可以添加、删除和修改用户–单击左下角的“”按钮,创建新的用户账户。•注意:–用户账户类型默认为“标准”用户,而非“管理员”用户。–新建用户处于“禁用”状态,要启用新建用户,需要更改此用户的密码。6.2.1用户管理•2.修改用户属性•Ubuntu系统中,默认情况可以更改用户名、账户类型、语言、密码以及是否允许自动登录。•在“用户和组”中,可更改更多属性,选中要修改属性的用户,选择“高级设置”打开“更改高级用户设置”。–“联系信息”选项卡中可以为用户添加或者修改联系信息,如办公地址、工作电话等信息。–“用户权限”的选项卡中,用户可以修改相关用户的操作权限。–“高级”选项卡中,可以修改用户的主目录、登录shell、主组和用户ID,并且可以禁用相关账户。6.2.1用户管理•3.删除用户•要删除系统中的普通用户,需要首先进行“解锁”操作。在“用户账户”窗口,选中想要删除的用户账户,单击窗口左下角的“”按钮,即可删除用户。•单击删除按钮后会弹出提示,询问删除用户时是否保留用户主目录、电子邮件目录和临时文件。选择之后,该用户便被从普通用户中删除。6.2.2组管理•手动安装“用户和组”程序,可以进行用户和组的管理操作。•要安装“用户和组”,可以在Ubuntu软件中心搜索“gnome-system-tools”,找到“Cross-platformconfigurationutilitiesforGNOME”系列应用程序(意为GNOME环境跨平台配置工具,其中包含“用户和组”管理程序。•安装完成后,要访问相关的配置工具,用户可以通过Dash控制面板搜索。6.2.2组管理•1.添加组•选择“用户和组”程序,打开“用户设置”窗口,单击左下角“管理组”按钮,会出现如“组设置”窗口。•单击右侧的“添加”按钮,用户可以新建组。,用户可以设置新建组的组名、组ID并选择该组的用户。6.2.2组管理•2.修改组属性•在“组设置”窗口左侧选中想要修改属性的组,然后单击窗口右侧的“属性”按钮,弹出“组属性”窗口。•用户可以修改组的组ID和组成员,但不可修改组名6.2.2组管理•3.删除组•在“组设置”窗口左侧选中想要删除的组,然后单击“组设置”窗口右侧的“删除”按钮。随后将出现确认提示窗口,单击“删除(D)”,即可删除组。6.2.3KDE环境下的用户和组管理•KDE桌面环境下的用户和组管理与Unity和GNOME环境下的用户和组管理在本质上是一致的,均是对用户和组相关配置文件的修改,两种桌面环境只是在用户界面上略有差异,操作方式是类似的。6.2.3KDE环境下的用户和组管理•1.用户管理窗口•在KDE系统设置中打开用户管理(UserManagement),即可进行用户和组的管理。•在KDE中,用户管理是一个独立的应用程序,执行它需要具备管理员权限。•在用户管理窗口中有两个标签,分别为“用户账户”和“用户组”,可以分别针对用户和组执行修改、创建和删除操作。6.2.3KDE环境下的用户和组管理•2.用户管理•选择现有账户后,可在窗口底部查看登录用户名、用户标识(UID)、用户的主组和其他组的信息。•单击“修改”按钮,可以打开修改用户账户窗口。–①账户细节可以设置账户状态、登录名称、真实用户名、用户标识、主组、主目录、Shell等。–②权限和组可以设置用户权限,将用户添加到特定的组或将用户从特定的组中去除。–③密码/安全修改用户密码,设置密码相关选项。•单击“新建”按钮可创建新的用户账户。6.2.3KDE环境下的用户和组管理•3.用户组管理•选择现有的组后,可在窗口底部查看当前组的成员用户信息•单击“修改”按钮,可以打开修改组窗口,在窗口中可以修改组名、组标识(GID),在组中添加和删除账户。•单击“新建”按钮可以创建一个新的组,在新建组窗口中可以设置组名、组标识,添加和删除账户。6.3使用命令行管理用户和组•使用命令行同样可以完成用户和组管理的相关操作,虽然命令行不如桌面环境下用户和组管理简单直观,但是使用命令行进行管理操作效率更高。6.3.1管理用户的命令6.3.1管理用户的命令•1.useradd•在系统中添加一个用户账户,命令格式:•useradd[选项]用户名•useradd支持的子命令包括:①-u指定新建用户的用户ID。②-c指定新建用户的用户全称。③-d指定新建用户的主目录。④-g指定新建用户的主组。⑤-G指定新建用户所属的附加组。⑥-s指定新建用户的登录shell。⑦-m强制建立用户的主目录。•要建立一个用户名为test的普通用户,执行命令:sudouseraddtest•新建用户test1,并且将其用户ID指定为1003,指定其主组为test并添加到组juwenfei中,强制建立用户主目录为/home/test1,可以执行如下命令:–sudouseradd-u1003-gtest-Gjuwenfei-d/home/test1-mtest1•使用useradd–D命令可以查看useradd命令的默认参数。6.3.1管理用户的命令•2.adduser•创建新用户的另外一个常用命令是adduser,这个命令的功能与useradd相同。•使用ad