用户管理
UID
用户id 相当用户身份证号
用户分类
root UID=0
普通用户
虚拟用户(无法直接登录系统)
保证进程/服务正常运行
核心文件或目录
文件
/etc/passwd 用户信息
/etc/shadow 存放用户密码信息
/etc/group 用户组信息
/etc/gshadow用户组密码信息
常用的命令解释器
/bin/bash(/bin/sh 软连接) #CentOS 正常用户
/sbin/nologin #CentOS 虚拟用户/傀儡用户
/bin/dash #ubuntu
/bin/csh /bin/tcsh #unix
目录
/etc/skel 新用户家目录的样子
skel下文件
.bash_logout
.bash_profile 对某个用户生效的环境变量
.bashrc 对某个用户生效的别名
添加新用户的过程
useradd----系统创建家目录----系统修改权限所有者------将/etc/skel下所有内容复制到家目录下
故障
命令行提示符:-bash-4.2$ 或 -bash-4.1$
当前系统bash的版本 bash --version,命令解释器为4.2版本
原因:当前用户的环境变量的配置文件.bash_profile 与 .bashrc 被删除
解决方法:复制/etc/skel下文件到当前用户家目录 cp /etc/skel/.bash* ~
用户管理的命令
操作用户
useradd 添加用户
-u 指定UID
-s 指定用户使用的命令解释器
-M 创建用户时不创建家目录
-c 指定用户的说明信息
-g 指定用户组 主要组(gid)
-G 指定多个用户组(groups)
passwd 设置用户密码
--stdin 非交互式设置密码 从管道获取密码 (只能root用户使用)
echo123456 |passwd --stdin oldboy
userdel 删除用户,默认不会删除用户家目录
-r 删除用户和用户家目录
删除用户替代方法 在/etc/passwd中给用户前加上#
su 切换用户
- (切换用户时更新用户的环境变量)
-c 切换到某个用户执行命令,执行命令后自动退出
su - oldboy -c whoami
usermod 修改用户的信息
-g 指定用户组 主要组(gid)
-G 指定多个用户组,附加组(groups)
-u 指定UID
-s 指定用户使用的命令解释器
用户组 /etc/group 用户组信息文件
groupadd
-g gid:指定组ID号。
-o 允许组ID号,不必惟一。
-r 加入组ID号,低于499系统账号。
-f 加入已经有的组时,发展程序退出。
groupdel
groupmod
-g 修改既有的 GID 数字;
-n 修改既有的组名
查询用户
w 显示谁登录了系统在干什么 查询负载
uptime 查询负载
who 显示登录信息
id 显示uid gid
whoami 当前用户名
last 用户的登录信息 谁什么时候 从哪里登录 什么时候退出
lastlog 显示所有用户最近一次的登录时间
保护用户密码
设置复杂密码“" _ -
记录密码工具 keepass
批量生成多个用户并随机生成密码 (生成命令再测试一个,成功后再交给bash运行)
批量生成stu01-03三个用户并将密码设置为123456
echo stu{01..3}|xargs -n1|sed -r 's#(.*)#useradd \1 ;echo 123456|passwd --stdin \1#g' |bash
echo stu{01..3}|xargs -n1|sed -r 's#useradd & ;echo 123456|passwd --stdin g' |bash
批量生成多个用户并随机生成密码
echo stu{04..6}|xargs -n1 |sed
's#.*#useradd &;p=$(date +%N);echo $p|passwd --stdin &;echo $p &>>/p.txt#g'
useradd stu04;p=$(date +%N);echo $p|passwd --stdin stu04;echo $p stu04 >>/p.txt
useradd stu05;p=$(date +%N);echo $p|passwd --stdin stu05;echo $p stu05 >>/p.txt
useradd stu06;p=$(date +%N);echo $p|passwd --stdin stu06;echo $p stu06 >>/p.txt
最后加上bash执行
bash 命令解释器 |bash 运行管道前的命令
&在sed中s###g里位于第二个#号之间代表第一个#号之间的所有内容
生成随机密码
1. tr+head /dev/urandom
tr -cd 'a-zA-Z0-9'
2.date +md5sum/sha512sum +head
date +%N | md5sum |head -c8
3.echo $((RANDOM+数字)) | head-c5 RANDOM 随机生成数字
4. uuidgen 生成随机的uuidgen
5.mkpasswd
6.openssl rand -base64 8
7. strings 将字符转换为人类可读
string /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c8
8.gpg --gen-random -armor 1 12
suid 对所有用户给查看的命令的权限
sudo 可以让普通用户在执行某个或某几个命令时临时成为root
sudo -l 查看当前用户有什么特权 (需输入密码)(5分钟的记住密码缓存) -k清除缓存
With great power comes greatresponsibility能力越大责任越大
编辑 visodu ==== vi/etc/sudoers
给用户授权
配置 (在100行以下添加) 用户名 ALL=(ALL) 命令(绝对路径多个命令以逗号空格隔开)
给用户组授权
(107行下)组前面加%
使用 sudo +命令 (执行)
常用功能
给用户配置sudo可以查看系统日志文件
/bin/grep
/bin/head
/bin/tail
/bin/less
/bin/more
/bin/cat
给用户配置可以运行/bin下面所有命令但是不能使用vi和su
/bin/*, !/bin/vi, !/bin/su
给用户配置可以运行系统中所有命令并且使用sudo不需要再输入用户的密码
NOPASSWD: ALL
$(())双括号内可计算
column -t 过滤内容显示时对齐
history -c 清空命令的历史纪录