1、06LINUX用户管理LINUX用户管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。 一、相关的基本概念1、用户(user)的概念Linux用户分为三类:超级用户(root)、专有用户、普通用户。超级用户该帐号为系统管理员帐号,对系统有安
2、全的控制权,可以对系统进行任何设置和修改。专有用户创建这类用户可用来完成特定任务的,如以对系统的某些文件进行管理,它们针对某些文件有较高的操作权力。如ftp管理用户等等。普通用户可登陆Linux进行某些使用操作,它们不属于超级用户和专用用户。安装好linux后,系统默认的帐号为root。2、用户组(group)的概念用户组(group)就是具有相同特征的用户(user)的集合体;Linux下,每个文件又属于一个用户组。当创建一个文件或目录时,系统会赋予它一个用户组关系,chgrp命令可以改变文件的组关系。比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要
3、用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的。举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的。3、工作目录与用户主目录 用户在登录到Linux系统中之后,每时每刻都处在某个目录之中,此目录被称做工作目录或当前目录(Working Dire
4、ctory)。工作目录是可以随时改变的。用户初始登录到系统中时,其主目录(Home Directory)就成为其工作目录。工作目录用“.”表示,其父目录用“.”表示。用户主目录是系统管理员增加用户时创建起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。 root用户的主目录是/root,登陆后提示符是root工作目录#。其它用户用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同,登陆后提示符是用户名工作目录$。 二、Linux系统用户账号的管理 用户账号的管理工作主要涉及到用户账号的添加、修改和删除。添加用户账号就是在系统中创建一个新账号,
5、然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。1、添加新的用户账号(useradd命令)语 法: useradd 选项 用户名使用方式: useradd -mMnr-c -d -e -f -g -G -s -u 用户帐号 功能说明:可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码,在建立用户帐号同时默认在/home/下建立了上个同名的用户主目录。使用useradd指令所建立的帐号保存在/etc/passwd文本文件中。参数: -c 加上备注文字。备注文字会保存在passwd的备注栏位中。 -d 指定用户登入时的启始目录。 -D
6、变更预设值 -e 指定帐号的有效期限。 -f 指定在密码过期后多少天即关闭该帐号。 -g 指定用户所属的群组。 -G 指定用户所属的附加群组。 -m 自动建立用户的登入目录。 -M 不要自动建立用户的登入目录。 -n 取消建立以用户名称为名的群组 -r 建立系统帐号。 -s 指定用户登入后所使用的shell。 -u 指定用户ID。 例子说明 代码: # useradd d /usr/sam -m sam 此命令创建了一个用户sam, 如下图: 其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 2、删除帐号userdel命令语法:us
7、erdel 选项 用户名 使用方式: userdel -r用户帐号功能说明: userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。参数: -f 删除用户登入目录以及目录中所有文件。 常用的选项是-r,它的作用是把用户的主目录一起删除。 例如: 代码: # userdel sam 如下图:说明:此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。 3、用户口令的管理passwd命令用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法
8、使用,必须为其指定口令后才可以使用,即使是指定空口令。 语法:passwd 选项 用户名 使用方式:passwd -k -l -u -f -d -S username 功能说明:用来更改使用者的密码 参数: -l 锁定口令,即禁用账号。 -u 口令解锁。 -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用。 -f 强迫用户下次登录时修改口令。 -s 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用。说明:普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令
9、一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。 为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。 4、显示登录用户信息语法: who 选项使用方式: who -husfV user 说明: 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。 参数: -h : 不要显示标题列 -u : 不要显示使用者的动作/工作 -s : 使用简短的格式来显示 -f : 不要显示使用者的上线位置 -V :
10、显示程序版本 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、显示当前终端(或控制
11、台)上的用户名语法:whoami 选项使用方式: whoami -help-version功能说明:显示自身的用户名称,本指令相当于执行id -un指令。参数: -help 在线帮助。 -version 显示版本信息。 三、Linux系统用户组的管理 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。1、增加一个新的用户组语法:groupadd 选项
12、组名使用方式: groupadd g gid o r f groupname功能说明:本命令用于将新组加入系统。 主要参数g gid:指定组ID号。o:允许组ID号,不必惟一。r:加入组ID号,低于499系统账号。f:加入已经有的组时,发展程序退出。应用实例建立一个新组,并设置组ID加入系统:代码: #groupadd g 344 cjh此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 代码: # groupadd group1 此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。 2、删除一个已有的用户组语法:groupd
13、el 群组名称使用方式: groupdel 群组名称功能说明:需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。代码: #groupdel group1 此命令从系统中删除组group1。 3、修改用户组的属性语法:groupmod 选项 用户组 使用方式: groupmod -g -n 群组名称功能说明:更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。主要参数 -g GID 为用户组指定新的组标识号。 -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GI
14、D相同。 -n新用户组将用户组的名字改为新名字 代码:# groupmod -g 102 group2 此命令将组group2的组标识号修改为102。 代码:# groupmod g 10000 -n group3 group2 此命令将组group2的标识号改为10000,组名修改为group3。以上三个命令可由桌面系统完成:第一步:打开“用户管理器窗口如下图:第二步:选择用户并设置属性,如下图:第三步:选择用户组并设置属性,如下图:四、su和sudo命令1、名称:su使用方式:su -fmp -c command -s shell -help -version - USER ARG说明:变
15、更为其他使用者的身份,除 root 外,需要键入该使用者的密码参数: -f 或 -fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh -m -p 或 -preserve-environment 执行 su 时不改变环境变数 -c command 或 -command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者 -s shell 或 -shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell -help 显示说明文
16、件 -version 显示版本资讯 - -l 或 -login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root USER 欲变更的使用者帐号 ARG 传入新的 shell 参数例:su -c ls root 变更帐号为 root 并在执行 ls 指令后退出变回原使用者。 su root -f 变更帐号为 root 并传入 -f 参数给新执行的 shell。 su - clsung 变更帐号为 clsung 并改变工作目录至 clsun
17、g 的家目录(home dir)2、名称:sudo“Sudo” 是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。(1) sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,
18、更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:1. sudo能够限制指定用户在指定主机上运行某些命令。2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入
19、密码。2. sudo命令sudo程序本身就是一个设置了SUID位的二进制文件。我们可以检查一下它的权限: $ls -l /usr/bin/sudo -s-x-x 2 root root 106832 02-12 17:41 /usr/bin/sudo它的所有者是root,所以每个用户都可以像root那样执行该程序。设置了SUID的程序在运行时可以给使用者以所有者的EUID。这也是为什么设置了SUID的程序必须小心编写。但是设置一个命令文件的SUID 和用sudo来运行它是不同的概念,它们起着不同的作用。sudo的配置都记录在/etc/sudoers文件中,我们下面将会详细说明。配置文件指明哪些
20、用户可以执行哪些命令。要使用sudo,用户必须提供一个指定用户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。如果不在sudoers中的用户通过sudo执行命令,sudo会向管理员报告这一事件。用户可以通过sudo -v来查看自己是否是在sudoers 之中。如果是,它还可以更新你的“入场券”上的时间;如果不是,它会提示你,但不会通知管理员。sudo命令格式如下:sudo -K |-L|-V|-h|-k|-l|-vsudo-HPSb-a auth_type-c class|-p prompt-u username|#uid-e file .|-i|-s|comm
21、and下面我们再来看一下sudo其它常用的一些参数:选项含义作用sudo -h Help 列出使用方法,退出。sudo -V Version 显示版本信息,并退出。sudo -l List 列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。sudo -u username|#uid User 以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。sudo -k Kill 清除“入场卷”上的时间,下次再使用sudo时要再输入密码。sudo -K Sure kill 与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。sudo -b
22、command Background 在后台执行指定的命令。sudo -p prompt command Prompt 可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。sudo -e file Edit 不是执行命令,而是修改文件,相当于命令sudoedit。还有一些不常用的参数,在手册页sudo(8)中可以找到。3. 配置sudo配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo 有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,
23、即使只有你一个超级用户,你也最好用visudo来检查一下语法。visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像: sudoers file: syntax error, line 22 此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户sx01可以通过sudo执行所有root可
24、执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行: # Runas alias specification # User privilege specificationroot ALL=(ALL)ALL root有所有权限,只要仿照现有root的例子就行,在下面加一行(最好用tab作为空白):sx01 ALL=(ALL) ALL保存退出后,切换到sx01用户,我们用它的身份执行命令:foobarlocalhost $ ls /root ls: /root: 权限不够foobarlocalhost $ sudo ls /rootPassword: 显示/root目录内容
25、。五、与用户账号有关的系统文件 完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。下面分别介绍这些文件的内容。1、/etc/passwd本文件是用户管理工作涉及的最重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。 由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能
26、够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。2、/etc/shadow本文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。3、/etc/group用户组的所有信息都存放在本文件中。 将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有
27、多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号隔开若干个字段。 文件格式:组名:口令:组标识号:组内用户列表 1)“组名”是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。 2)“口令”字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。 3)“组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。 4)“组内用户列表”是属于这个组的所有用户的列表/b,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。 实例如下图:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1