概括地讲,系统管理就是计划、安装和维护计算机系统。
UNIX、Linux是多用户多任务操作系统;Windows操作系统是单用户多任务操作系统。Linux下,我们可能使用虚拟终端来使得多个用户同时工作,而windows下,每次只允许一个用户登陆系统。但这并不是说linux就比windows好,从方便性来说,windows是很适合使用的,尤其是对计算机小白来说,给他个linux系统,如果不是带UI,那他都不知道是干嘛用的。
显示用户在线时间的统计信息————ac
ac命令根据系统中wtmp文件里用户的登入/登出时间计算用户总的在线时间
示例1:显示所有用户的登录时间
ac -p
-p 指定用户,如果没有指定用户则表示所有的用户
ac -p root
root 3726.94
total 3726.94
示例2:按日期显示当前用户的登录时间
ac -d
Jun 13 total 59.63
Jun 14 total 110.13
Jun 15 total 193.16
Jun 16 total 131.41
Jun 17 total 186.54
新建用户帐户————adduser
adduser这个命令并不是所有系统都支持的,它实际上是useradd命令的符号链接,指向/usr/sbin/useradd,如果adduser没法使用的话,就直接使用useradd。新建完帐户后,需要使用passwd设置密码后才能使用
示例1:创建一个账号为jack用户
useradd jack
示例2:创建一个指定目录、有效期和归属组的帐户
useradd -d /home/jack -e 2013-07-08 -g jack jack
注意:-d是指定用户登录后的初始目录,可以不存在,但是登录后会报提示,用户目录不存在
-e:是指定用户有效期,早于当前时间创建时候不会报错,但会登录不进去,因为已经失效了
-g:指定用户组,用户组必须是存在的
示例3:建立一个系统账户
useradd -d -r /home/admin/ -g admin admin
查找用户信息————finger
finger命令用于查找、显示指定账户用户的有关信息,包括本地与远端主机的用户,账户名不分大小写。包括账户名、真实姓名、登录终端机、闲置时间、登录时间以及地址及电话信息。
示例1:显示用户root的一般信息
finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Sat Jul 13 18:47 (CST) on pts/4, idle 1 day 21:48, from 192.168.1.11
On since Sat Jul 13 18:44 (CST) on pts/5 from 192.168.1.11
On since Sat Jul 13 18:48 (CST) on pts/6, idle 1 day 21:20, from 192.168.1.11
On since Mon Jul 15 11:04 (CST) on pts/7, idle 0:01, from 192.168.192.56
On since Sat Jul 13 18:50 (CST) on pts/8 from 192.168.1.11
On since Mon Jul 15 09:39 (CST) on pts/9, idle 2:51, from 192.168.192.21
On since Mon Jul 15 11:43 (CST) on pts/10, idle 1:57, from 192.168.192.56
On since Mon Jul 15 14:06 (CST) on pts/11, idle 2:51, from 192.168.192.21
On since Mon Jul 15 16:49 (CST) on pts/15 from 192.168.166.69
No Mail.
No Plan.
示例2:显示用户root的详细信息
finger -s root
finger -s root
Login Name Tty Idle Login Time Where
root root pts/4 1d Sat 18:47 192.168.192.124
root root pts/5 - Sat 18:44 192.168.192.124
root root pts/6 1d Sat 18:48 192.168.192.124
root root pts/7 1 Mon 11:04 192.168.192.56
root root pts/8 2 Sat 18:50 192.168.192.124
root root pts/9 2:57 Mon 09:39 192.168.192.21
root root pts/10 2:03 Mon 11:43 192.168.192.56
root root pts/11 2:57 Mon 14:06 192.168.192.21
root root pts/13 48 Mon 16:03 192.168.189.36
root root pts/15 2 Mon 16:49 192.168.166.69
管理组信息————gpasswd
gpasswd命令用于对系统中/etc/group文件的管理
示例1:将用户jack添加到guest组中
gpasswd -a jack guest
groups jack
就可以显示当前用户所属的群组
示例2:将用户jack从guest组中移除
gpasswd -d jack guest
增加一个新组————groupadd
示例1:新建一个名为test的组
groupadd test
示例2:新建一个指定组ID的名为test888的组
groupadd -g 888 test888
删除组————groupdel
groupdel命令用于修改系统档案,删除不再需要的组。如果指定的组中包含用户,则必须先删除组里面的用户以后,才能删除组。
groupdel test888
修改组的相关信息————groupmod
groupmod命令用来修改指定组的相关信息,包括组识别码和组名
示例1:修改指定组的组名以及组ID
groupmod -g 999 -n test99 test888
将test888的组名及组ID都修改了
示例2:强制系统使用已经存在的组ID
groupmod -g 999 test999
因为已经存在一个组ID为999的组,所以系统会提示错误信息,这时可以加上-o参数,输入命令
groupmod -g 999 -o test999再回车就不会返回错误信息
显示用户所在的组————groups
groups命令在标准输入输出上输出指定用户所在组。每个用户属于/etc/passwd中指定的一个组合在/etc/group中指定的其他组
示例1:显示jack 所在的组
groups jack
输出:groups jack
jack : jack dialout video
表示jack是上面三个组的成员
启动组的影子密码————grpconv
linux系统的用户和组密码分别放在/etc/目录下的passwd和group文件中。任何用户都可以读取,因此很不安全。影子密码将上述两个文件中的密码放在/etc/shadow和gshadow文件中,只允许系统管理员读取,同时把原密码置换为x字符,有效地强化了系统的安全性。grpconv命令将开启组的影子密码功能。
输入这个命令后原本的加密密码都会变成x
关闭组的影子密码————grpunconv
gruunconv命令关闭组的影子密码,把密码从gshadow文件反存到group文件,同时/etc/gshadow文件消失。
显示用户及其所属组的ID号————id
id命令会显示用户以及所属组的实际ID与有效ID(RUID/RGID、EUID/EGID)。如果两个ID相同,则仅显示实际的ID(RUID/RGID)。若仅指定用户名,则显示用户及其所属组的ID,若不指定用户名,则显示当前用户的ID
示例1:显示当前用户的信息
id
uid=30002(hadoop) gid=3001(hadoop) groups=16(dialout),33(video),3001(hadoop)
示例2:只显示指定用户的ID值
id hadoop
uid=30002(hadoop) gid=3001(hadoop) groups=16(dialout),33(video),3001(hadoop)
显示当前和过去登录用户的相关信息————last
last命令可以显示指定账户或终端登录用户的相关信息。不带参数的last命令显示/var/log/wtmp文件中记录的登录用户的清单
示例1:查询过去登录用户的相关信息
last
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:03 - 12:03 (00:00)
示例2:查询最近登录系统的3名用户
last -n 3
last -n 3
root pts/17 192.138.192.56 Tue Jul 16 09:42 still logged in
root pts/10 192.138.192.90 Tue Jul 16 09:13 still logged in
root pts/7 192.138.192.56 Tue Jul 16 08:59 still logged in
wtmp begins Thu Jun 13 11:56:05 2013
示例3:显示截止到指定日期指定时刻之前的所有最近登录信息
last -t 20130701000000
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:06 - 12:06 (00:00)
root pts/0 192.168.1.111 Thu Jun 13 12:03 - 12:03 (00:00)
注意:如果wtmp文件找不到,那么系统就无法记录日志信息,要想这些文件起作用,就需要手动创建wtmp文件即可。
显示登录系统失败用户的相关信息————lastb
lastb命令可以用来显示指定账户或者终端登录系统失败用户的相关信息。不带参数的lastb命令显示/var/log/btmp文件中记录的登录失败的用户清单。
示例1:显示最近10条登录失败信息
lastb -n 10
显示最近登录用户的用户名、登录端口和登录时间————lastlog
lastlog命令显示/var/log/lastlog文件中的内容
示例1:显示用户root最近的登录信息
lastlog -u root
Username Port Latest
root pts/17 Tue Jul 16 09:42:21 +0800 2013
示例2:显示系统所有用户最近3天内的登录信息
lastlog -t 3
示例3:显示所有用户最近的登录信息
last
mail **Never logged in**
man **Never logged in**
messagebus **Never logged in**
mysql **Never logged in**
named **Never logged in**
news **Never logged in**
ntp **Never logged in**
显示当前用户的名称————logname
>>logname
root
注意:logname和whoami是不同的,一个是启动计算机时,登入计算机的账户名,一个是进入系统后,启动终端,终端用户名
hadoop@ubuntu:~> whoami
hadoop
管理日志文件————logrotate
logrotate命令可以自动替换、压缩、删除和邮寄日志文件
示例1:所谓logrotate,就是将旧的log档案更改名称,然后建立一个空的log档案,如此一来,新的log档案将从零开始记录,而旧的log档案也将存在一段时间,从而达到轮替的目的。可以在/etc/logrotate.conf下设置log的轮替属性
示例2:执行日志档案轮替
logrotate -v /etc/logrotate.conf
更改用户所属的组————newgrp
示例1:将当前用户加入到指定组中
newgrp test
比如当前登录的用户是hadoop,执行此命令后,需要超级管理员授权,当前用户就更改属于test组了
设置密码————passwd
示例1:设置当前用户的密码
passwd
示例2:设置指定用户的密码(此功能仅适用于超级用户)
passwd hadoop
示例3:查看用户hadoop的密码状态
passwd -S hadoop
示例4:锁定指定账户
passwd -l hadoop
示例5:给指定用户账户解锁
passwd -u hadoop
将用户密码转成影子密码————pwconv
pwconv命令从passwd文件和当前影子中产生影子文件,将密码从passwd文件中分离出来,从而可以大大提高密码的安全性
示例1:pwconv
组的影子密码功能就被启动,在etc目录下产生一个名为shadow的文件
ps:etc是什么
etc不是什么缩写,是and so on的意思 来源于 法语的 et cetera 翻译成中文就是 等等 的意思. 至于为什么在/etc下面存放配置文件, 按照原始的UNIX的说法(linux文件结构参考UNIX的教学实现MINIX) 这下面放的都是一堆零零碎碎的东西, 就叫etc, 这其实是个历史遗留.
关闭影子密码功能————pwunconv
使用pwconv命令把用户密码和组密码从/etc/passwd和/etc/group中提取出来后,以x的形式存放在只有超级用户才可以读取的/etc/shadow和/etc/gshadow文件中。而pwunconv命令则执行相反的动作,将上述文件中的影子密码重新存放到/etc/passwd和/etc/group文件中
变更用户身份————su
通过su命令进行用户登录身份变更。su改变身份后,默认时并不改变当前作业目录,但会变更HOME、SHELL、USER、LOGNAME等环境变量
示例1:变更用户身份
su root
系统会提示输入root用户的密码,更改成功后,不会变更USER与LOGNAME变量。如果从root用户变为普通用户,则不需要输入密码,更改成功后,会变更HOME、SHELL、USER、LOGNAME等环境变量
示例2:更改当前用户的同时也更改工作目录
su - hadoop
注意:-或-l或--login表示改变身份同时改变工作目录(工作目录就是当前终端的目录路径,注意不是用户目录)、HOME(用户目录)、USER、SHELL、LOGNAME和PATH变量
删除指定的用户帐户————userdel
不带参数的userdel命令只删除用户账号,不删除相关文件;使用带r参数的userdel命令可以删除用户登录目录以及登录目录中的所有文件和子目录。若要删除由该用户在其他位置建立的文件,则需要手动删除。
示例:删除用户及该用户目录下所有文件和子目录
userdel -r hadoop
修改用户账户信息————usermod
usermod -g hadoop jack
显示当前登录到系统的用户————users
users命令根据指定的文件显示当前的登录情况
root root root root root root root root root sagcm
显示当前登录系统用户的信息————w
示例1:显示当前登录用户信息
w
root pts/6 Sat18 2days 10:06 5:09 bash ./stop-hbase.sh
root pts/7 08:59 1:29m 0.20s 0.00s tailf order_interface.log
root pts/8 Sat18 0.00s 0.43s 0.00s w
显示当前登录系统的用户信息————who
who命令显示当前有哪些用户登录系统
示例1:显示用户的发呆时间
who -u
系统将显示当前在线用户的用户名、登录终端、登录时间、发呆时间和登录进程ID,其中"."表示发呆时间小于1分钟
发呆时间就是闲置时间
ptlportal pts/3 2013-07-03 12:25 old 3878 (192.168.171.127)
root pts/4 2013-07-13 18:47 old 8756 (192.168.192.124)
root pts/6 2013-07-13 18:48 old 9889 (192.168.192.124)
root pts/7 2013-07-16 08:59 01:36 27237 (192.168.192.56)
root pts/8 2013-07-13 18:50 . 13376 (192.168.192.124)
root pts/9 2013-07-15 09:39 21:10 8417 (192.168.192.21)
-H表示将显示出的信息,加上说明的标题
NAME LINE TIME IDLE PID COMMENT
ptlportal pts/3 2013-07-03 12:25 old 3878 (192.168.171.127)
root pts/4 2013-07-13 18:47 old 8756 (192.168.192.124)
root pts/6 2013-07-13 18:48 old 9889 (192.168.192.124)
root pts/7 2013-07-16 08:59 01:36 27237 (192.168.192.56)
root pts/8 2013-07-13 18:50 . 13376 (192.168.192.124)
root pts/9 2013-07-15 09:39 21:10 8417 (192.168.192.21)