linux命令-用户管理

本文详细介绍Linux系统中的用户与用户组管理,包括用户和用户组的基本概念、常用的用户管理命令(如useradd、usermod、userdel等)、以及与用户相关的系统文件(如/etc/passwd、/etc/shadow等)。此外,还介绍了如何使用sudo命令允许普通用户执行管理员权限的命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、用户与用户组有关命令

1.useradd

useradd可用来创建用户

语法:useradd [选项] 用户名

增加用户账号其实就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

常用选项:

-d :指定用户的家目录(默认为/home/用户名)
-u :指定用户的默认uid
-g :指定一个初始的用户组(必须已经存在)
-G :指定一个或多个群组
-s  :指定用户的默认Shell解释器

实例:

[root@hollowman ~]# useradd hollowman
[root@hollowman ~]# useradd -s /sbin/nologin hollowman2  #将-s设置为/sbin/nologin表示该用户不能登陆

2.id

查看用户的uid,gid和groups

语法:id [选项] [用户]

[root@hollowman ~]# id root
用户id=0(root) 组id=0(root) 组=0(root)
[root@hollowman ~]# id hollowman
用户id=1000(hollowman) 组id=1000(hollowman) 组=1000(hollowman)
[root@hollowman ~]# id hollowman2
用户id=1001(hollowman2) 组id=1001(hollowman2) 组=1001(hollowman2)

#括号内为分别对应用户名、组名、群组名

3.usermod

修改用户属性

语法:usermod [选项] 用户名

usermod的选项和useradd的选项基本相同,只是将创建改为了修改

[root@hollowman home]# usermod -s /bin/bash hollowman2    #将hollowman2用户修改为可登陆

4.userdel

该命令可以删除linux用户,也就是将系统相关文件中(/etc/passwd, /etc/shadow, /etc/group等文件)该用户的记录删除,必要时还删除用户的主目录。

语法:userdel [选项] 用户名

选项:

-f :强制删除用户
-r :将主目录一起删除

当该用户的用户组被其他用户也设置成用户组时,则只删除用户,不删除用户组,并打印错误提示。

[root@hollowman ~]# ls /home/ #查看删除前的用户主目录
hollowman  hollowman2
[root@hollowman ~]# userdel -r hollowman2  #删除用户及其主目录
[root@hollowman ~]# ls /home/  #查看删除后的用户主目录
hollowman

5.groupadd

groupadd命令用于创建新的用户组

语法:groupadd [选项] 组名

[root@hollowman ~]# groupadd testgroup

6.groupdel

groupdel命令用于删除用户组,当用户组还被其他用户也设置成用户组时,则删除不成功。

[root@hollowman ~]# useradd -g testgroup testuser
[root@hollowman ~]# id testuser
用户id=1001(testuser) 组id=1001(testgroup) 组=1001(testgroup)
[root@hollowman ~]# groupdel testgroup  #因为testuser的用户组为testgroup,故不能删除
groupdel:不能移除用户“testuser”的主组
[root@hollowman ~]# userdel testuser
[root@hollowman ~]# groupdel testgroup

7.passwd

指定和修改用户的密码。新建用户时由于没有指定密码,所以一般用passwd指定或修改密码。
超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。

语法:passwd [选项] [用户名]

选项:

空选项 :  设置密码
-l :     lock,锁定或者说禁用用户。
-u :     unlock,解锁用户。
-d :     使用户无密码。没有密码的用户也是无法登陆的。
-f :     强迫用户下次登录时修改密码。

实例:

[root@hollowman ~]# passwd hollowman
更改用户 hollowman 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

8.visudo

通过修改/etc/sudoers文件来允许非root用户临时获取root身份来执行系统管理权限的命令,如何修改见下文。

二、用户与用户组有关知识

linux系统通过uid,gid,groups来标识一个用户。

1.用户与用户组

1) uid

uid,user identification,用户id,也叫用户标识,就像人的身份证号码一样,不可重复。

  • 0:超级用户,linux系统默认都自动将root创建为超级用户;
  • 1-999:虚拟用户,系统保留的uid范围值(不同的版本,可能有不同的范围,如RHEL8中这个范围是1-999)负责某些服务程序的启动和运行,一般不需要登陆;
  • 1000-n:普通用户,当我们创建第一个普通用户时uid默认从1000开始。

2) gid

gid,group identification,默认用户组id,也叫默认用户组标识,可以将不同的用户都加入到同一个用户组中,但每个用户也可以加入多个用户组,但只能有1个默认用户组。系统在创建用户时,会自动创建一个与用户同名的默认用户组。

3) groups

groups:用户所加入的用户组集合,linux一个用户可以加入多个用户组,除了一个默认用户组(gid对应的用户组),其他用户组都成为附加用户组。

注意groups与gid是包含与被包含的关系。

2.几个重要文件

linux用户信息可以与以下几个文件相关联

    /etc/passwd:用户账号信息文件。
    /etc/shadow:用户账号信息加密文件。
    /etc/group:组信息文件。
    /etc/sudoers:管理员账户授权文件。
    /etc/default/useradd:定义默认设置文件。
    /etc/login.defs:系统广义设置文件。
    /etc/skel:默认的初始配置文件目录。

1) /etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。它的内容部分显示如下:

[root@hollowman ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:密码:用户id:组id:注释性描述:家目录:登录Shell

1)"用户名"是代表用户账号的字符串。
2)“密码”是这里存放着加密后的用户口令字。
虽然这个字段存放的只是用户密码的加密字符串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如RHEL)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”,上面显示的就是使用shadow技术的结果。
通过pwunconv和pwconv命令可以关闭和开启shadow技术
3)“用户id”也就是uid。
4)“组id”也就是gid。它对应着/etc/group文件中的一条记录。
5)“注释性描述”字段记录着用户的一些个人情况。
6)“家目录”,也就是用户的起始工作目录。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统会指定一个默认的登陆Shell,如RHEL默认指定bash(/bin/bash)。

2) /etc/shadow :

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

[root@hollowman ~]# cat /etc/shadow
root:$6$fpEdvDEN40nAhr5p$HwEMxhScSy4Y0lXHsnUHKzU6.WISy43ty.rU06gv9DbfFDd/9wL4yuNSWA.2ft6KTYa9rDJc1CO5cYl6ty6IE/::0:99999:7:::
bin:*:18604:0:99999:7:::
daemon:*:18604:0:99999:7:::
adm:*:18604:0:99999:7:::
lp:*:18604:0:99999:7:::
sync:*:18604:0:99999:7:::
shutdown:*:18604:0:99999:7:::

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。

登录名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

1)"登录名"是与/etc/passwd文件中的登录名相一致的用户账号
2)"密码"字段存放的是加密后的用户密码。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
3)"最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。
4)"最小时间间隔"指的是两次修改口令之间所需的最小天数。
5)"最大时间间隔"指的是口令保持有效的最大天数。
6)"警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)"不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)"失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

3) /etc/group

用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个用户组中可以有多个用户,一个用户也可以属于不同的用户组。但是
当一个用户同时是多个用户组的成员时,在/etc/passwd文件中只记录该用户的默认用户组,也就是gid。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

[root@hollowman ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:

/etc/group文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段:

用户组名:密码:用户组id:组内用户列表

1)"用户组名"是用户组的名称,由字母或数字构成。
2)"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
3)“用户组id”,用户组唯一的标识号。
4)"组内用户列表"是属于将该用户组名作为附加用户组的的所有用户的集合,不同用户之间用逗号(,)分隔,如果将该用户组作为默认用户组,则不会体现在该集合中,因为在/etc/passwd中体现了。

4) /etc/sudoers

使用sudo命令可以允许普通用户执行管理员账户才能执行的命令。而执行sudo命令权限则是在/etc/sudoers文件中进行配置。

[root@hollowman ~]# cat /etc/sudoers
User_Alias HY =hollowman  # 设置用户别名,必须为大写
HY     ALL=(ALL)       NOPASSWD:ALL   #对用户别名赋权 

关于赋权格式的说明

用户     	允许主机=(以用户权限运行)        	允许执行命令列表
  • 允许主机: 可以是某个(多个)主机、主机别名,ALL表示所有主机
  • 以用户权限运行: 一般为用户名ALL表示系统最高权限
  • 允许执行命令: ALL表示所有命令,也可以为多个命令,并以(,)隔离;当允许执行命令前加(NOPASSWD:)时,表示执行sudo命令不需要输入密码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值