06LINUX用户管理.docx
《06LINUX用户管理.docx》由会员分享,可在线阅读,更多相关《06LINUX用户管理.docx(12页珍藏版)》请在冰豆网上搜索。
![06LINUX用户管理.docx](https://file1.bdocx.com/fileroot1/2022-12/11/04ae425f-6b25-4cd8-8178-187164b3e4b0/04ae425f-6b25-4cd8-8178-187164b3e4b01.gif)
06LINUX用户管理
LINUX用户管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
一、相关的基本概念
1、用户(user)的概念
Linux用户分为三类:
超级用户(root)、专有用户、普通用户 。
超级用户该帐号为系统管理员帐号,对系统有安全的控制权,可以对系统进行任何设置和修改。
专有用户创建这类用户可用来完成特定任务的,如以对系统的某些文件进行管理,它们针对某些文件有较高的操作权力。
如ftp管理用户等等。
普通用户可登陆Linux进行某些使用操作,它们不属于超级用户和专用用户。
安装好linux后,系统默认的帐号为root。
2、用户组(group)的概念
用户组(group)就是具有相同特征的用户(user)的集合体;Linux下,每个文件又属于一个用户组。
当创建一个文件或目录时,系统会赋予它一个用户组关系,chgrp命令可以改变文件的组关系。
比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的。
举例:
我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的。
3、工作目录与用户主目录
用户在登录到Linux系统中之后,每时每刻都处在某个目录之中,此目录被称做工作目录或当前目录(WorkingDirectory)。
工作目录是可以随时改变的。
用户初始登录到系统中时,其主目录(HomeDirectory)就成为其工作目录。
工作目录用“.”表示,其父目录用“..”表示。
用户主目录是系统管理员增加用户时创建起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。
root用户的主目录是/root,登陆后提示符是[root@工作目录]#。
其它用户用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同,登陆后提示符是[用户名@工作目录]$。
二、Linux系统用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号(useradd命令)
语 法:
useradd[选项]用户名
使用方式:
useradd[-mMnr][-c<备注>][-d<登入目录>][-e<有效期限>][-f<缓冲天数>][-g<群组>][-G<群组>][-s][-u][用户帐号]
功能说明:
可用来建立用户帐号。
帐号建好之后,再用passwd设定帐号的密码,在建立用户帐号同时默认在/home/下建立了上个同名的用户主目录。
使用useradd指令所建立的帐号保存在/etc/passwd文本文件中。
参 数:
-c<备注> 加上备注文字。
备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的启始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 自动建立用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s 指定用户登入后所使用的shell。
-u 指定用户ID。
例子说明
代码:
#useradd–d/usr/sam-msam
此命令创建了一个用户sam,如下图:
其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
2、删除帐号userdel命令
语 法:
userdel选项用户名
使用方式:
userdel[-r][用户帐号]
功能说明:
userdel可删除用户帐号与相关的文件。
若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-f 删除用户登入目录以及目录中所有文件。
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
代码:
#userdelsam如下图:
说明:
此命令删除用户sam在系统文件中(主要是/etc/passwd,/etc/shadow,/etc/group等)的记录,同时删除用户的主目录。
3、用户口令的管理passwd命令
用户管理的一项重要内容是用户口令的管理。
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
语 法:
passwd[选项][用户名]
使用方式:
passwd[-k][-l][-u[-f]][-d][-S][username]
功能说明:
用来更改使用者的密码
参 数:
-l锁定口令,即禁用账号。
-u口令解锁。
-d关闭使用者的密码认证功能,使用者在登入时将可以不用输入密码,只有具备root权限的使用者方可使用。
-f强迫用户下次登录时修改口令。
-s显示指定使用者的密码认证种类,只有具备root权限的使用者方可使用。
说明:
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
4、显示登录用户信息
语 法:
who[选项]
使用方式:
who-[husfV][user]
说 明:
显示系统中有那些使用者正在上面,显示的资料包含了使用者ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU使用量,动作等等。
参 数:
-h:
不要显示标题列
-u:
不要显示使用者的动作/工作
-s:
使用简短的格式来显示
-f:
不要显示使用者的上线位置
-V:
显示程序版本
5、显示用户的ID
语 法:
id[选项][用户名称]
使用方式:
id[-gGnru][--help][--version][用户名称]
功能说明:
显示用户的ID,以及所属群组的ID。
补充说明:
id会显示用户以及所属群组的实际与有效ID。
若两个ID相同,则仅显示实际ID。
若仅指定用户名称,则显示目前用户的ID。
参 数:
-g或--group显示用户所属群组的ID。
-G或--groups显示用户所属附加群组的ID。
-n或--name显示用户,所属群组或附加群组的名称。
-r或--real显示实际ID。
-u或--user显示用户ID。
-help 显示帮助。
-version 显示版本信息
6、显示当前终端(或控制台)上的用户名
语 法:
whoami[选项]
使用方式:
whoami[--help][--version]
功能说明:
显示自身的用户名称,本指令相当于执行"id-un"指令。
参 数:
--help 在线帮助。
--version显示版本信息。
三、Linux系统用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。
组的增加、删除和修改实际上就是对/etc/group文件的更新。
1、增加一个新的用户组
语 法:
groupadd[选项]组名
使用方式:
groupadd[-ggid][-o]][-r][-f]groupname
功能说明:
本命令用于将新组加入系统。
主要参数
-ggid:
指定组ID号。
-o:
允许组ID号,不必惟一。
-r:
加入组ID号,低于499系统账号。
-f:
加入已经有的组时,发展程序退出。
应用实例
建立一个新组,并设置组ID加入系统:
代码:
#groupadd-g344cjh
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
代码:
#groupaddgroup1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
2、删除一个已有的用户组
语 法:
groupdel[群组名称]
使用方式:
groupdel[群组名称]
功能说明:
需要从系统上删除群组时,可用groupdel指令来完成这项工作。
倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
代码:
#groupdelgroup1
此命令从系统中删除组group1。
3、修改用户组的属性
语 法:
groupmod[选项]用户组
使用方式:
groupmod[-g<群组识别码><-o>][-n<新群组名称>][群组名称]
功能说明:
更改群组识别码或名称。
需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
主要参数
-gGID为用户组指定新的组标识号。
-o与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组将用户组的名字改为新名字
代码:
#groupmod-g102group2
此命令将组group2的组标识号修改为102。
代码:
#groupmod–g10000-ngroup3group2
此命令将组group2的标识号改为10000,组名修改为group3。
以上三个命令可由桌面系统完成:
第一步:
打开“用户管理器'"窗口如下图:
第二步:
选择用户并设置属性,如下图:
第三步:
选择用户组并设置属性,如下图:
四、su和sudo命令
1、 名称:
su
使用方式:
su[-fmp][-ccommand][-sshell][--help][--version][-][USER[ARG]]
说 明:
变更为其他使用者的身份,除root外,需要键入该使用者的密码
参 数:
-f或--fast不必读启动档(如csh.cshrc等),仅用于csh或tcsh
-m-p或--preserve-environment执行su时不改变环境变数
-ccommand或--command=command变更为帐号为USER的使用者并执行指令(command)后再变回原来使用者
-sshell或--shell=shell指定要执行的shell(bashcshtcsh等),预设值为/etc/passwd内的该使用者(USER)shell
--help显示说明文件
--version显示版本资讯
--l或--login这个参数加了之后,就好像是重新login为该使用者一样,大部份环境变数(HOMESHELLUSER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定USER,内定是root
USER欲变更的使用者帐号
ARG传入新的shell参数
例:
su-clsroot变更帐号为root并在执行ls指令后退出变回原使用者。
suroot-f变更帐号为root并传入-f参数给新执行的shell。
su-clsung变更帐号为clsung并改变工作目录至clsung的家目录(homedir)
2、 名称:
sudo
“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:
运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc/samba/smb.conf等。
这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
(1)sudo的特点
sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。
同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。
sudo设计者的宗旨是:
给用户尽可能少的权限但仍允许完成他们的工作。
所以,sudo有以下特点:
1.sudo能够限制指定用户在指定主机上运行某些命令。
2.sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
3.sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
它默认的存放位置是/etc/sudoers。
4.sudo使用时间戳文件来完成类似“检票”的系统。
当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。
超时以后,用户必须重新输入密码。
2.sudo命令
sudo程序本身就是一个设置了SUID位的二进制文件。
我们可以检查一下它的权限:
$ls-l/usr/bin/sudo
---s--x--x2rootroot10683202-1217:
41/usr/bin/sudo
它的所有者是root,所以每个用户都可以像root那样执行该程序。
设置了SUID的程序在运行时可以给使用者以所有者的EUID。
这也是为什么设置了SUID的程序必须小心编写。
但是设置一个命令文件的SUID和用sudo来运行它是不同的概念,它们起着不同的作用。
sudo的配置都记录在/etc/sudoers文件中,我们下面将会详细说明。
配置文件指明哪些用户可以执行哪些命令。
要使用sudo,用户必须提供一个指定用户名和密码。
注意:
sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。
如果不在sudoers中的用户通过sudo执行命令,sudo会向管理员报告这一事件。
用户可以通过sudo-v来查看自己是否是在sudoers之中。
如果是,它还可以更新你的“入场券”上的时间;如果不是,它会提示你,但不会通知管理员。
sudo命令格式如下:
sudo-K|-L|-V|-h|-k|-l|-vsudo[-HPSb][-aauth_type][-cclass|-][-pprompt][-uusername|#uid]{-efile[...]|-i|-s|command}
下面我们再来看一下sudo其它常用的一些参数:
选项 含义作用
sudo-hHelp 列出使用方法,退出。
sudo-VVersion 显示版本信息,并退出。
sudo-lList 列出当前用户可以执行的命令。
只有在sudoers里的用户才能使用该选项。
sudo-uusername|#uidUser以指定用户的身份执行命令。
后面的用户是除root以外的,可以是用户名,也可以是#uid。
sudo-kKill 清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
sudo-KSurekill与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
sudo-bcommandBackground在后台执行指定的命令。
sudo-ppromptcommandPrompt可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。
非常人性化的设计。
sudo-efileEdit不是执行命令,而是修改文件,相当于命令sudoedit。
还有一些不常用的参数,在手册页sudo(8)中可以找到。
3.配置sudo
配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。
之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。
所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
visudo默认的是在vi里打开配置文件,用vi来修改文件。
我们可以在编译时修改这个默认项。
visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:
>>>sudoersfile:
syntaxerror,line22<<
此时我们有三种选择:
键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。
如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
现在,我们一起来看一下神秘的配置文件,学一下如何编写它。
让我们从一个简单的例子开始:
让用户sx01可以通过sudo执行所有root可执行的命令。
以root身份用visudo打开配置文件,可以看到类似下面几行:
#Runasaliasspecification
#UserprivilegespecificationrootALL=(ALL)ALL
root有所有权限,只要仿照现有root的例子就行,在下面加一行(最好用tab作为空白):
sx01ALL=(ALL)ALL
保存退出后,切换到sx01用户,我们用它的身份执行命令:
[foobar@localhost~]$ls/root
ls:
/root:
权限不够
[foobar@localhost~]$sudols/root
Password:
显示/root目录内容。
五、与用户账号有关的系统文件
完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd,/etc/shadow,/etc/group等。
下面分别介绍这些文件的内容。
1、/etc/passwd
本文件是用户管理工作涉及的最重要的一个文件。
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。
由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。
只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
2、/etc/shadow
本文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:
”隔开。
3、/etc/group
用户组的所有信息都存放在本文件中。
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
用户组的所有信息都存放在/etc/group文件中。
此文件的格式也类似于/etc/passwd文件,由冒号隔开若干个字段。
文件格式:
组名:
口令:
组标识号:
组内用户列表
1)“组名”是用户组的名称,由字母或数字构成。
与/etc/passwd中的登录名一样,组名不应重复。
2)“口令”字段存放的是用户组加密后的口令字。
一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
3)“组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。
4)“组内用户列表”是属于这个组的所有用户的列表/b,不同用户之间用逗号(,)分隔。
这个用户组可能是用户的主组,也可能是附加组。
实例如下图: