用户和组的管理笔记

前言

目录

1.用户和组文件

1.1)用户账号文件

1.2)用户影子文件

1.3)组账号文件

1.4)用户组影子文件

1.5)与用户和组管理有关的文件和目录

2.用户账号的管理

2.1)用户账号管理的概念

2.2)用户密码管理

3.用户组的管理

4.赋予普通用户特别权限


1.用户和组文件

普通用户:只能访问自己的文件和其他有权限执行的文件。
超级用户(根用户):一般系统管理员使用的是超级用户的root权限,有了这个权限,管理员可以突破系统的一切限制,方便管理使用及维护系统。
普通用户--su命令-->超级用户
系统用户:系统内置的、执行特定任务的用户,不具有登录系统的能力。

1.1)用户账号文件

/etc/passwd文件用来保存系统所有用户的账号数据等信息,又被称为密码文件。

/etc/passwd文件可由系统管理员编辑修改,普通用户只有查看的权限。

执行cat命令可查看完整的系统账号文件,如下所示:

#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...
zhang:x:1000:1000:zhang:/home/zhang:/bin/bash

 在/etc/passwd文件中,一行代表的是一个用户的信息。每一行有7个字段,表示7种信息。每个字段用“:”号分割,其格式如下:

username:passwd:User ID:Group ID:comment:home directory:shell

 各字段含义如下:

username:用户名。
password:账号密码。
User ID(UID):用户识别码。
Group ID(GID):用户组识别码。
comment:备注字段,给用户账号做注解。
home directory:主目录。
login command:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的命令,即Shell。Shell是用户和Linux系统之间的接口。系统管理员能根据系统情况和用户习惯为用户指定Shell。

1.2)用户影子文件

用户名(登录名):在/etc/shadow中,用户名和/etc/passwd是相同的,这样就把passwd和shadow中的用户记录联系在一起。这个字段是非空的。
密码(已被加密):如果这个段是*,表示这个用户不能登录到系统;这个字段是非空的,带有1个“!”表示账号被锁定,带有2个“!”表示密码被锁定。
上次修改密码的时间:这个时间从1970年1月1日起算到最近一次修改密码的时间间隔(天数),可以通过管理员账号用passwd命令来修改用户的密码,然后查看/etc/shadow中此字段的变化。
两次修改密码间隔最少的天数:如果配置为0,则禁用此功能,也就是说用户必须经过多少天才能修改密码。默认值是通过/etc/login.defs文件中的PASS_MIN_DAYS进行定义。
两次修改密码间隔最多的天数:这个字段可以增强管理员管理用户密码的时效性,也增强了系统的安全性。默认值同上。
提前多少天警告用户密码将过期:如果满足条件,当用户登录系统后,系统登录程序提醒用户密码将要作废。默认值是在添加用户时由/etc/login.defs文件中的PASS_WARN_AGE进行定义。
在密码过期之后多少天禁用此用户:此字段表示用户密码作废多少天后,系统会禁用此用户,也就是说系统不会再让此用户登录,也不会提示用户过期,是完全禁用。
用户过期日期:此字段指定了用户作废的天数(从1970年的1月1日开始的天数)。如果这个字段的值为空,账号长久可用。
保留字段:目前为空,以备将来Linux发展之用。

1.3)组账号文件

具有某种共同特征的用户合集起来就是用户组(group)。用户组的设置主要是为了方便检查、设置文件或目录的访问权限。每个用户组都有唯一的用户组号GID。

/etc/group文件是用户组的配置文件,内容包括用户组名、用户组密码、GID及该用户组所包含的用户4个字段,每行代表一个用户组记录。格式如下:

group_name:passwd:GID:user_list

 第1字段:用户组名称。第2字段:用户组密码。第3字段:GID。第4字段:用户列表,每个用户之间用逗号(,)分隔,本字段可以为空,如果字段为空,表示用户组为GID的全部用户。

/etc/group文件可以由系统管理员编辑修改,普通用户只有查看的权限。执行cat命令可查看完整的文件内容,如下所示:

#cat /etc/group|more
root:x:0:root
bin: x:1:
deamon:*:2:
sys: x:3:
...
zhang: x:1000:

root:x:0:root的含义为:root代表用户组名,x代表已加密的密码,0代表root组GID,最后的root代表用户组(包括root用户)。

GID和UID类似,是一个从0开始的正整数。root用户组的GID为0.系统会预留一些较靠前的GID给系统虚拟用户组用。

对照/etc/passwd和/etc/group两个文件,会发现在/etc/passwd中的每条用户记录中含有用户默认的GID,在/etc/group中的每个用户组中可以有多个用户。在创建目录和文件时会使用默认的用户组。 

1.4)用户组影子文件

与/etc/shadow文件一样,考虑到组信息文件中密码的安全性,引入相应组密码影子文件/etc/gshadow。

/etc/gshadow是/etc/group的加密文件,比如用户组管理密码就存在这个文件中。/etc/gshadow和/etc/group是互补的两个文件。

/etc/gshadow格式如下,每个用户组独占一行:

groupname:passwd:admin1,admin2,...:member1,meber2,...

 第1字段:用户组。第2字段:用户组密码,这个字段可以是空的或“!”。如果是空的或有“!”,表示没有密码。第3字段:用户组管理者。这个字段也可以为空,如果有多个用户组管理者,用“,”号分隔。第4字段:组成员。如果哟剖多个成员,用“,”号分隔。

/etc/gshadow文件只有系统管理员有读取的权限。执行cat命令可查看完整的文件内容,如下所示:

#cat /etc/gshadow |more
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
sys:::root,bin,adm
...
zhang:!::

 daemon:::root,bin,daemon的含义为:用户组名为daemon,没有设置密码。该用户没有用户组管理者,组成员有root、bin和daemon。

1.5)与用户和组管理有关的文件和目录

/etc/skel目录一般存放在用于初始化用户启动文件的目录中,这个目录是由root权限控制。/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境。典型的/etc/skel内容如下:

#ls -a /etc/skel
.   .. .bash_logout   .bash_profile   .bashrc   .mozilia

典型的/etc/login.defs文件主要设置项含义如下:

#cat /etc/login.defs
MAIL_DIR /var/spool/mail      //创建用户时,用户E-mail邮箱所在的目录
PASS_MAX_DAYS 99999           //账号的密码最长有效天数
PASS_MIN_DAYS 0               //账号的密码最短有效天数,允许更改密码的最短天数
PASS_MIN_LEN 5                //密码最小长度
PASS_WARN_AGE 7               //密码过期前提提前警告的天数
UID_MIN 1000                  //创建用户时自动产生的最小的UID值
UID_MAX 60000                 //创建用户时最大的UID值
SYS_UID_MIN 201               //保留给用户自行设置的系统账号最小UID值
SYS_UID_MAX 999               //保留给用户自行设置的系统账号最大UID值
GID_MIN 1000                  //创建用户时自动产生的最小GID值
GID_MAX 60000                 //创建用户时自动产生的最大GID值
SYS_GID_MIN 201               //保留给用户自行设置的系统账号最小GID值
SYS_GID_MAX 999               //保留给用户自行设置的系统账号最大GID值
CREATE_HOME yes               //创建用户时是否创建用户家目录
UMASK 077                     //默认创建文件和目录的权限
USERGROUPS_ENAB yes           //创建用户时是否创建用户主群组
ENCRYPT_METHOD SHA512         //用户的口令使用SHA512加密算法加密

/etc/default/useradd文件是通过useradd命令创建用户时的规则文件。其内容如下:

#more /etc/default/useradd
GROUP=100                          //默认用户组ID,依赖于/etc/login.defs的USE RGRUUPS_
                                     ENA为no或者useradd使用了-N选项时,此参数有效
HOME=/home                         //把用户的家目录创建在/home中
INACTIVE=-1                        //确定是否启用账号过期停权,-1表示不启用
EXPIRE=                            //账号终止日期,不设置表示不启用
SHELL=bin/bash                     //默认登录Shell的类型
SKEL=/etc/skel                     //存放用于初始化用户环境文件的目录
CREATE_MAIL_SPOOL=yes              //确定是否自动创建用户邮件信箱

2.用户账号的管理

用户账号的管理主要涉及用户账号的添加、删除和修改等。

2.1)用户账号管理的概念

添加用户账号就是在系统中创建一个新账号,可以同时为新账号分配用户号、用户组、主目录和登录Shell等资源。如果没有给刚添加的账号设置密码,则该账号是被锁定的,无法使用。

添加新的用户账号使用useradd命令,其语法格式如下:

useradd[选项]用户名

常用选项说明如下:

-c comment:指定一段注释性描述。
-d home_dir:指定用户主目录。目录不存在,则同时使用-m选项。能创建主目录。
-m:若主目录不存在,则创建它。
-M:不创建主目录。
-N:不创建跟用户名同名的组。
-g group:指定用户所属的用户组名或组ID。该组名或组ID在指定时必须已存在。
-G 用户组列表:指定用户所属的附加组,各组之间用逗号隔开。
-s Shell:指定用户的登录Shell,默认为/bin/bash。
-u UID:指定新用户的用户号,该值必须唯一且大于999.如果同时有-o选项,则能重复使用其他用户的标识号。

如果一个用户账号不再使用,要能从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还要删除用户的主目录。删除一个已有的用户 账号使用userdel命令,格式如下:

userdel[选项]用户名

 常用的选项是-r,其作用是删除用户账号同时把该用户的主目录一起删除。

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。修改已有用户的信息使用usermod命令,格式如下:

#usermod[选项]用户名

 常用的选项有-c、-d、-m、-g、-G、-s、-u、-o等,这些选项的含义和useradd命令中的相同,能为用户指定新的属性。

改变用户账号名

格式:

usermod -l 新用户名 原用户名

锁定账号

格式:

usermod -L 用户名

 (Linux锁定账号,也可直接在密码文件shadow的密码字段前加“!”来实现)

解锁账号

格式:

usermod -U 用户名

 将用户加入其它组

格式:

usermod -G 组名或GID用户名

查看用户账号属性

格式:

id[选项][用户]

 此命令是显示指定用户的UID和GID,默认为当前用户的id信息。

常用的选项有:

-g或--group表示只显示用户所属群组的ID。
-G或--groups表示显示用户所属附加群组的ID。
-n或--name表示显示用户所属群组或附加群组的名称,与-u/g/G联用。
-r或--real表示显示实际ID,与-u/g/G联用。
-u或--user表示只显示用户ID。
--help表示显示帮助。
--version表示显示版本信息。

 此外,利用“group[用户]”命令可以显示用户所在的组,默认为当前用户的所属组信息。

2.2)用户密码管理

用户管理的另一项重要内容是用户密码的管理。用户账号刚创建时没有密码,是被系统锁定的,无法使用,必须为其指定密码后才能使用,即使是空密码。

设置和修改用户密码的命令是passwd。超级用户能为自己和其他用户指定密码,普通用户只能修改自己的密码。命令的格式如下:

passwd[选项] 用户名

 常用选项说明如下:

-l:锁定密码,即禁用账号。
-u:密码解锁。
-d:删除账号密码,本选项只有系统管理员才能使用。
-k:设置只有在密码过期失效后才能更新。

 如果passwd命令后不带用户名,则修改当前用户的密码。例如,假设当前用户是wuli,则下面的命令是修改该用户自己的密码:

$passwd
Old password:******
New password:*******
Re-enter new password:*******

 如果是超级用户,能有下列形式指定任意用户的密码:

#passwd wuli
New password:*******
Re-enter new password:*******

删除用户密码

若要为用户指定空密码,则执行下列形式的命令:

passwd -d 用户名

 此命令将用户密码删除,只有超级用户才有权执行。用户密码被删除后,将不能登录系统,除非重新设置新密码。

查询密码状态

要查询指定用户的密码状态,可由root用户执行下列形式的命令:

passwd -s 用户名

若用户密码被锁定,将显示含有Password locked的信息。若用户未加密码,则显示含有“Password set,SHA512 crypt.”的信息。

锁定用户密码

在Linux中,除了用户账号可以被锁定外,用户密码也可以被锁定,任何一方被锁定后,都将导致该用户无法登录系统。只有root用户才有权执行该命令。锁定用户密码可执行下列形式的命令:

passwd -l 用户名

解锁用户密码

用户密码被锁定后,若要解锁,可执行下列形式的命令:

passwd -u 用户名

3.用户组的管理

创建用户组

使用groupadd命令可增加一个新的用户组,其命令格式如下:

groupadd[选项] 用户组名

常用的选项说明如下:

-g GID;指定新用户组的组标识号(GID)。
-o:和-g选项同时使用,表示新建组的GID可与原有组的GID相同。
-r:创建一个系统组。

删除用户组

使用groupdel命令可删除一个已有的用户组。若该用户组中仍包括某些用户,则必须先删除这些用户后,才能删除此组。其命令格式如下:

groupdel 用户名

修改用户组属性

用户组创建后,可用groupmod命令根据需要对用户组的相关属性进行修改,主要是修改用户组的名称和用户组的GID值。

改变用户组名称

对用户组进行重命名,而不改变其GID的值。其命令格式如下:

groupmod -n 新用户组名 旧用户组名

 重设用户组的GID

用户组的GID值可以重新进行设置修改,但不能与已有用户组的GID值重复。对GID进行修改,不会改变用户的名称。其命令格式如下:

groupmod -g 组名

添加用户到指定的组或从指定的组删除用户

可用groupmems命令将用户添加到指定的组,使其成为该组的成员;也可以把用户从指定的组删除,与usermod命令有类似的功能。其命令格式如下:

groupmems[选项]用户名 -g 用户组名

 常用选项说明如下:

-a:把用户添加到指定的组。
-d:从指定的组删除用户。
-p:清除组内的所有用户。
-l:列出群组的成员。
-g:更改为指定的组名(不是GID)。

设置用户组管理员、密码和组成员

可以使用gpasswd命令将某用户指派为某个用户组的管理员。在实际工作中需要用户组管理员添加用户组或从组中删除某用户,而不是使用root用户执行该操作。当然这个命令还有很多功能。其命令格式如下:

gpasswd[选项][用户名] 组名

 常用选项说明如下:

-a:把用户添加到组。
-d:从组删除用户。
-A:指定某用户为组管理员。
-M:指定某用户为组成员,和-A选项的用途相似。
-r:删除密码。
-R:限制用户登入组,只有组中的成员才可以用newgrp命令加入该组。

改变当前用户的有效组

用newgrp命令可以切换当前登录用户所属的组。如果一个用户同时隶属于多个用户组,有时需要切换到另外的用户组来执行一些操作,这就用到了此命令。其命令格式如下:

newgrp[用户组]

 在用这个命令切换用户组时,当前用户必须是指定组的用户,否则无法登录。另外,只是在这次登录的范围内有效,一旦退出登录,再重新登录时,用户所属的组还是原来默认的用户组。如果想要更改用户默认的用户组,那么需要使用usermod命令。newgrp命令后若不指定组名称,则此指令会登录当用户的预设用户组。

4.赋予普通用户特别权限

sudo的简单配置

sudo的配置文件是/etc/sudoers,它有专门的编辑工具visudo,root用户执行这个命令就可以按照sudo的语法格式编辑。其语法格式如下:

授权用户 主机=[(转换到哪些用户或用户组)][是否需要密码验证]命令1,[(转换到哪些用户或用户组)][是否需要密码验证][命令2],[(转换到哪些用户或用户组)][是否需要密码验证][命令3]...

 执行visudo以后,将打开/etc/sudoers文件,在文件中可以按照上述语法添加相应的内容,例如:

wuli localhost=/sbin/poweroff

 表示用户wuli可以在本机上以root的权限执行sudo/sbin/useradd命令,而不需要root密码(需要wuli的用户密码)。如果加上NOPASSWD,则表示不需要输入任何用户的密码:

wuli localhost=NOPASSWD: /sbin/useradd

别名设置

因特殊需要,可以利用别名来定义一些选项。别名类似组的概念,有用户别名、主机别名和目录别名等。使用前先要在/etc/sudoers中定义User_Alias、Host_Alias、Cmnd_Alias等项,再在其后面加入相应的名称,多个参数之间用逗号分隔开,举例如下:


Host_Alias SERVER=huawei              //定义主机huawei的别名为SERVER
User_Alias ADMINS=liming, gem         //定义用户别名
Cmnd_Alias SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot
                                      //定义命令别名

sudo命令选项

常见选项说明如下:

-k:将会在下一次执行sudo时强制询问密码(不论有没有超过N分钟)。
-l:显示出自己(执行sudo的使用者)的权限。
-v:由于sudo在第一次执行时或是在N分钟内没有执行(N预设为5)会询问密码,这个参数会重新做一次确认。如果超过N分钟,也会询问密码。
-b:将要执行的命令放在后台执行。
-p prompt:更改提示输入密码时的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称。
-u username| #uid:不加此选项,代表要以root的身份执行命令;而加了此选项,能以username的身份执行命令(#uid为该username的UID)。
-s:执行shell环境变量所指定的Shell,或是/etc/passwd里所指定的Shell。
-H:将环境变量中的HOME(主目录)指定为要变更身份的使用者的主目录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 用户用户管理系统权限的重要概念。下面是一些关于 Linux 用户用户的基本知识: 1. 用户:每个 Linux 系统都有多个用户。每个用户都有一个唯一的用户名和用户 ID(UID)。UID 是系统分配给每个用户的数字标识符,用于标识用户用户可以有自己的密码和主目录。 2. 用户Linux 用户可以合成用户用户可以将用户在一起,以便更好地管理和控制权限。每个用户都有一个唯一的 ID(GID)。用户可以拥有自己的权限,这些权限可以分配给用户。 3. 用户用户管理:在 Linux ,可以使用命令行工具来管理用户用户。例如,添加一个新用户可以使用 useradd 命令。添加一个新用户可以使用 groupadd 命令。可以使用 passwd 命令为用户设置密码。 4. 用户用户权限Linux 文件和目录都有所属用户用户用户用户权限可以控制谁可以访问文件和目录以及可以执行哪些操作。例如,可以使用 chmod 命令为用户用户设置文件和目录的权限。 5. 特殊用户用户Linux 有一些特殊的用户用户,例如 root 用户和 wheel 。root 用户系统管理员,可以执行任何操作。wheel 包含用户列表,这些用户可以使用 su 命令切换到 root 用户。 总之,了解 Linux 用户用户的基本知识对于管理 Linux 系统非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值