用户管理
用户管理主要包含着用户的增加、修改和删除,同时能够查看用户的相关信息
查看用户所属的组
我们可以使用groups
命令来查看当前用户所属的组,下面这段代码,就是查看用户 tomcat
所属的组,可以看到该用户属于多个用户组,中间用空格分开。
tomcat@hw-hadoop1-> groups tomcat
tomcat : tomcat szcst dockerroot docker
tomcat@hw-hadoop1->
添加账号
添加一个账号需要我们拥有root
权限,普通用户是没有权限添加新的用户。我们使用useradd
命令来新增一个用户,语法如下:
useradd 选项 用户名
上面语法中包含了用户名和选项,用户名我们都理解什么意思,但是这个选项具体是什么呢!我们在系统中输入useradd
命令,查看下这个命令的详细参数帮助。
-
-d
:指定用户的主目录 ,如果目录不存在的话,使用-m
选项,创建主目录 -
-g
:指定用户所属的用户组,后面可以跟用户组名或者用户组的GID -
-c
:为用户添加一段注释性的描述 -
-G
:指用户所属的附加组 -
-s
:指定用户的登录shell
-
-u
:新增账号的用户ID
-
-o
:允许新增的用户和已经存在的用户拥有重复的用户ID
-
-U
:新增一个和用户名相同的用户组
实例
useradd -d /home/weigs -m -g root -s /bin/bash weigs
修改账号
有些时候我们需要对已经存在的用户进行相关属性的修改,这时候我们可以使用usermod
命令。命令语法余下:
usermod 选项 用户名
我们发现其实语法和新增命令的差不多,查看usermod
的帮助发现参数和useradd
基本相同。
实例
usermod -s /bin/ksh -d /home/wei –g wei weigs
这个实例是将用户weigs
的登录Shell
改为ksh
,用户组改为wei
删除账号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd
等系统文件中的该用户记录删除,必要时还删除用户的主目录。可以使用一下命令删除
userdel 选项 用户名
常用的参数是-r
,表示在删除用的同时删除用户的主目录。
userdel -r weigs
用户密码管理
用户账号刚创建的时候是没有密码的,会被系统锁定,无法登录,所以创建完用户以后需要先指定密码方可登录。
不论是管理员账号为其他账号指定密码还是用户为自己修改密码都是使用 passwd
命令,语法格式如下:
passwd 选项 用户名
在系统中输入 passwd --help
,发现命令的常用参数包括如下几个:
-
-d
:删除用户的密码(仅root用户使用) -
-l
:锁定用户的密码,-u
参数可以解锁密码(root用户使用) -
-f
:强迫用户下次登录时修改口令 -
-S
:显示指定账号的密码状态(root用户使用)
一般我们在新建一个用户的时候,要在root
账号下面为其指定账号的密码。
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
新增用户组
新增用户组我们可以使用groupadd
命令添加。当然,我们也可以在新增用户的使用加上参数-U
,这样就会产生一个和用户名同名的用户组。
groupadd 选项 用户组
常用的groupadd
参数有两个,如下:
-
-g
:GID
指定新用户组的ID -
-o
: 一般与-g
选项同时使用,表示新用户组的GID
可以与系统已有用户组的GID
相同
实例1
groupadd weigs
上面例子中,没有指定新用户组的组ID
,所以新的组ID
会在当前已有的最大组ID
的基础上加1
。
实例2
groupadd -g 101 group2
新增一个组名为group2
的用户组,同时指定组的ID
为101
。
修改用户组
groupmod 选项 用户组
常用的参数和新增差不太多,如下:
-
-g
:为用户组指定新的用户组GID
-
-o
:-o
与-g
选项同时使用,用户组的新GID
可以与系统已有用户组的GID
相同 -
-n
:新用户组名,将用户组的名字更改为新的名字
groupmod –g 10000 -n group3 group2
将用户组group2
的名字改为group3
,标识号GID
改为10000
如果一个用户属于多个用户组,那么用户可以在用户组之间进行切换,以便有其他用户组的权限。可以使用命令newgrp
切换到其他用户组,这个命令的参数就是目的用户组,例如:
newgrp root
系统文件
上面对用户和用户组的操作,其实就是对系统中的某些文件的操作,linux
会把与用户和用户组相关的信息放到文件中,包括/etc/passwd
、/etc/shadow
、/etc/group
等。
etc/passwd文件
每个用户都会在这个文件中有记录,这个文件中记录了用户的一些基本属性,并且这个文件对于所有的用户都是可读的。
下面是这个文件的大致内容:
tomcat@hw-hadoop1-> 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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:496:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ricci:x:140:140:ricci daemon user:/var/lib/ricci:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:497:495:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
hadoop:x:496:492:hadoop User:/home/hadoop:/bin/bash
文件中每行记录对应着一个用户,每行记录又被冒号分隔,格式和大致的含义如下所示:
用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录Shell
密码一般都会隐藏加密,所以在该文件中看到的都是x
,如果想看到详细的密码,需要到etc/shadow
文件下面查找。
etc/shadow文件
该文件只能由root
账号打开,其他账号没有权限打开。文件的格式和passwd
的相似,由多个字段组成,每个字段之间都是用冒号隔开。
登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
etc/group文件
该文件下面的内容比较简单,存储了用户组的所有信息,文件的格式和前两个比较类似,但是字段相对比较少。
组名:口令:组标识号:组内用户列表
口令
是存放用户组的密码,一般来说linux
的用户组都不设置密码。
组内用户列表
是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。