超级用户——用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
系统用户(伪用户)——是Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。
普通用户——是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。
基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组。附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。
是一个文本文件,用于定义系统的用户账号,由于所有用户都对passwd有读权限,所以该文件中只定义用户账号,而不保存口令。
如下命令可以查看用户账号文件
[root@node13 ~]# head -1 /etc/passwd head命令显示第一行
root:x:0:0:root:/root:/bin/bash
上面输出的结果是用户的账号信息,以 : 隔离,有7个字段,对于字段的解释如下:
第一个字段:
账号名称:用户登录Linux系统时使用的名称。
第二个:
密码:以前是以加密格式保存密码的位置,此处只是密码占位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。
第三个:
UID:用户的标识,是一个数值,用它来区分不同的用户,每个用户都有一个UID数值:
超级用户的UID——0
系统用户的UID——1~999
普通用户的UID——≥1000
第四个:
GID:用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。
第五个:
个人资料:可以记录用户的完整姓名、地址、办公室电话、家庭电话等个人信息。
第六个:
主目录:类似Windows 的个人目录,通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录。
第七个:
Shell:定义用户登录后激活的Shell,默认是Bash Shell
如下命令查看字段:
[root@node13 ~]# head -1 /etc/shadow
root:$6$3EZ8vA1hgB3VTWb0$IlamoUyDh1RS.wftgz4qj0kmVrka7Yi6SgIo1aM6eu8nbFM9haOVRTtNDDfkix8MCugx8p8lufmItgsOsu1rl1:19083:0:99999:7:::
可以知道有9个字段,含义分别如下:
系统中的每个组,在/etc/group文件中有一行记录,任何用户均可以读取用户组账户信息配置文件。
命令格式: useradd [选项]
常用选项如下:
示例1:新建一个用户zhang3,查看passwd、shadow文件中的变化,并确认该用户的家目录中的初始配置文件。
[root@localhost ~]# useradd zhang3
[root@localhost ~]# tail -1 /etc/passwd
zhang3:x:1001:1001::/home/zhang3:/bin/bash
[root@localhost ~]# tail -1 /etc/shadow
zhang3:!!:16925:0:99999:7::: //注意密码字段的内容为“!!”,表示密码尚未设置
[root@localhost ~]# ls -ld /home/zhang3
drwx------. 3 zhang3 zhang3 74 11月 4 15:58 /home/zhang3
[root@localhost ~]# ls -A /home/zhang3
.bash_logout .bash_profile .bashrc .mozilla
注意密码字段的内容为“!!”,表示密码尚未设置
示例2:新建一个用户wang5,指定其UID为1005、登录Shell为/bin/bash,账号永不过期
命令如下:
[root@localhost ~]# useradd -u 1005 -s /bin/bash -e -1 wang5
命令格式:usermod [选项] username
常用的选项包括 -c,-d,-m,-g,-G,-s,-u 等,
这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
另外,还可以使用如下选项:
-l 新用户名—更改账户的名称,必须在该用户未登录的情况下才能使用。
-L—锁定(暂停)用户账户,使其不能登录使用。
-U—解锁用户账户。
示例:将用户wang5的名称修改为wangwu,并暂停使用该账号。
[root@localhost ~]# usermod -l wangwu -L wang5
Linux的账户必须设置密码后,才能登录系统
命令格式:passwd [账户名]
常用选项:
[root@localhost ~]# passwd wangwu
Changing password for user wangwu.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
命令格式:userdel [-r] 账户名
-r—在删除该账户的同时,一并删除该账户对应的主目录。
例:删除wang5用户:
[root@localhost ~]# userdel -r wangwu
命令格式:su [用户名]
从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的密码且验证成功后才可切换。
su和su -命令区别就是加载的配置文件不一样:
su切换方式加载的文件:~/.bashrc,/etc/bashrc
su -切换方式加载的文件:/etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
使用sudo命令可以提高普通用户的操作权限,不过这个权限需要root用户进行配置/etc/sudoers文件才可使用。
sudo的执行流程如下(默认只有root用户能使用):
当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);若欲切换的身份与执行者身份相同,那也不需要输入密码。若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;若用户具有执行sudo的权限,便开始sudo后续接的命令;
sudo -l:列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的
创建用户组命令格式:
groupadd [-r] 用户组名称
常用选项:
-g GID——指定新用户组的组标识号(GID),默认值是已有的最大的GID加1。
-r——建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID。
示例:向系统中添加一个组ID为1001,组名为group1的新组。
[root@localhost ~]# groupadd -r group1 -g 1001
命令格式:
groupmod 选项 用户组
常用选项:
-g GID——为用户组指定新的组标识号。
-n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值。
示例:将组group1的GID修改为2000,组名修改为group11。
[root@localhost ~]# groupmod -n group11 -g 2000 group1
命令格式:
gpasswd [选项] [用户] [组]
注意:只有root用户和组管理员才能够使用该命令。
选项:
-r 删除组密码
-a——把用户加入组
-d——把用户从组中删除。
-M——可同时添加多个用户
-A——给组指派管理员。
示例:将zhang3、li4用户同时加入group1组,并指派zhang3为管理员。
[root@localhost ~]# gpasswd -M zhang3,li4 group1 -A zhang3
命令格式:
groupdel 用户组名
示例:从系统中删除组group11
被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组。
[root@localhost ~]# groupdel group11
[root@node13 ~]# id 用户名 显示出某个用户的详细信息
[root@node13 ~]# groups 用户名 显示出用户的所属组信息
查询li4信息:
[root@localhost ~]# id li4
uid=1002(li4) gid=1002(li4) groups=1002(li4),2001(group1)
[root@localhost ~]# groups li4
li4 : li4 group1
查看当前登录系统的用户:
[root@localhost ~]# users
redhat root
该命令默认会去读取/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来。
[root@node13 ~]# last -2 显示最近的两条登录信息
[root@node13 ~]# last -f /var/log/wtmp -n 3 显示/var/log/wtmp文件中最近的两条登录信息
3、如果想要知道每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件。
[root@node13 ~]# lastlog
[root@localhost ~]# w
19:03:58 up 6:51, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.107.1 12:12 0.00s 0.30s 0.01s w
redhat pts/1 192.168.107.1 12:33 3:14m 0.06s 0.06s -bash
参数解释:
TTY:表示用户使用的TTY名称
FROM:表示用户从哪里登录进来
idle:表示空闲时间
JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间
PCPU:当前活动进程使用的系统时间
WHAT:表示当前用户执行的进程名称和选项
who通常通过/var/run/utmp文件来获取信息 。
[root@localhost ~]# who
[root@localhost ~]# who -a 所有信息
[root@node13 ~]# who -r 显示当前系统的运行级别
[root@node13 ~]# who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
[root@node13 ~]# who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障