添加用户
linux为每一个用户启动一个进程,然后由这个进程接受用户的各种请求,在创建用户时,需限定其权限。把几个用户归在一起,这样的组称为“用户组”。
默认情况下,不带-m参数的useradd命令不会为新用户建立主目录,这类用户可以登录到系统的shell,但是不能登录到图形界面。
Linux所作的一切最终都反应到配置文件中,所有的用户信息登记在/etc/passwd文件中,而/etc/shadow文件则保存着用户的登录密码。etc/group文件保存系统中的组信息。
使用参数-g可以指定用户所属的组,如下建立用户tom,并指定属于tomgrp组,注意需先使用groupadd命令建立用户组。不带-g参数默认建立一个与用户名同名的组。
useradd -s用于指定用户登录所使用的shell。可以在/bin目录下找到特定的shell,常用的有BASH、SH等。如果不指定-s参数,默认使用SH登录系统。以下命令指定tom用户登录后使用bash作为shell。
$useradd -s /bin/bash tom
记录用户操作历史:history
history命令仅在bash中适用,用户操作历史信息存放在用户主目录的.bash_history中,该文件默认可以存储1000条命令记录。
管理员需要查看用户的历史命令的话,可以切换到对应用户目录,然后查看.bash_history文件。
删除用户:userdel
userdel用于删除用户,该命令默认不会删除用户的主目录,除非加上-r选项。
$userdel tom //删除用户但不删除用户主目录
$userdel -r tom //删除用户且删除用户主目录
管理用户账号:usermod
可以使用usermod命令修改已有的用户账户,常用选项如下表所示。
选项 | 含义 |
---|---|
-d | 修改用户主目录 |
-e | 修改账号的有效期限,以MM/DD/YY表示 |
-g | 修改用户所属组 |
-l | 修改用户名称 |
-s | 修改用户登录后所使用的shell |
以下命令将tom改名为mike,主目录改为/home/mike,并设置账号有效期至2018/12/31。
查看用户信息:id
id命令用于查看用户的uid,gid及所属组。不加任何参数id命令显示当前用户的信息。
用户口令文件详解
/etc/shadow存放用户口令,文件每一行代表一个用户,以冒号分隔每个字段。
以上各个字段的含义如下:
- 用户名
- 加密后的口令
- 上次修改口令的日期
- 两次口令之间的天数(最少)
- 两次口令之间的天数(最多)
- 提前多少天提醒用户修改口令
- 在口令过期多少天后禁用该账号
- 账号过期的日期
- 保留
在shadow文件中,绝对日期是从1970年1月1日至今的天数,一般使用usermod -e来设定过期字段。
sudo 和su命令的区别
不带任何参数的su命令会将用户提升至root权限,需提供root口令。通过su所获得特权一直持续到使用exit命令退出为止。Ubuntu不允许使用su。
sudo 命令比 su 命令更安全. su 命令需要其他用户也知道 root 密码, 而 sudo 只需要配置 etc/sudoers 即可, 而且可以随时删除特定用户的权限,sudo命令使用的是当前用户的密码。
sudo 仅仅是提高当前执行命令的权限. 而 su 命令可以执行 root 的所有权限. 所以在一定意义上讲, 使用su 命令是很危险的。
监控进程:ps top
ps aux命令用于显示当前系统上运行的所有进程的信息。ps lax命令提供父进程ID和谦让度,但不会显示进程属主的用户名。
top命令用于即时跟踪当前系统进程的情况,默认情况下每10s更新一次。
查看占用文件的进程:lsof
lsof命令可以查看某个特定的文件被哪些进程使用。
$lsof test.txt
向进程发送信号:kill
kill命令用于向进程发送一个信号,可以使用-l选项显示所有的信号及其编号。
常用的信号有以下几个。
信号编号 | 信号名 | 用途描述 |
---|---|---|
0 | EXIT | 程序退出时收到该信号 |
1 | HUP | 挂起 |
2 | INT | 中断 |
3 | QUIT | 退出 |
9 | KILL | 杀死 |
11 | SEGV | 段错误 |
15 | TERM | 软件终止 |
默认情况下,kill命令向进程发送TERM信号。
$kill 12345
等价于
$kill -TERM 12345
kill发送的部分信号可以被程序捕捉,从而使命令失效,比如一个在一个shell脚本里加入 trap "" TERM ,可以用于忽略TERM信号。
但KILL信号永远不能被程序捕捉,KILL可以在内核级别杀死一个进程。比如杀死id为12345的进程。
$kill -KILL 12345
或者
$kill -9 12345
调整进程优先级:nice renice
通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。进程优先级值的范围从-20到19。值越低,优先级越高。
通过给定的优先值启动一个程序:nice <优先值> <进程名>
renice命令类似nice命令,使用这个命令可以改变正在运行的进程优先值。用户只能改变属于他们自己的进程的优先级。
renice -n -p - 改变指定进程的优先值。
renice -u -g - 通过指定用户和组来改变进程优先值。