用户账户
作用: 1.可以登陆操作系统 2.不同的用户具备不同的权限
唯一标识:UID(编号从0开始的编号,默认最大60000)
zhangsan(UID 1200)
管理员root的UID:永远为0
系统用户为 1~999(专为程序运行,服务运行提供的身份 )
普通用户的UID:默认从1000开始
一个用户必须至少属于一个组
组账户的分类:
基本组:系统创建与用户同名
附加组(从属组):由管理员创建,由管理员进行加入
本地账户的数据文件
/etc/passwd /etc/shadow
/etc/group /etc/gshadow
/etc/passwd
保存用户账号的基本信息,每个用户记录一行,分割为个字段
passwd 备份文件 /etc/passwd-
[root@localhost ~]# ls /etc/passwd-
passwd passwd-
root❌0:0:Super User:/root:/bin/bash
root:用户名
x:密码占位符
uid:0
用户组编号(基本组 gid):0
用户描述信息:Super User
该用户的家目录:/root
解释器:/bin/bash
tom❌1002:1002::/home/tom:/bin/bash
tom用户名:x密码站位:1002 UID:1002GID:用户信息描述:/home/tom家目录:/bin/bash 解释器
useradd
命令useradd
– 格式:useradd [选项]… 用户名
• 常用命令选项
– -u:指定 UID 标记号
– -d:指定宿主目录(家目录),缺省为 /home/用户名 --home-dir HOME_DIR dirctory
– -G:指定所属的附加组
– -s:指定用户的登录解释器
useradd nsd03
-u, --uid UID 新账户的用户 ID
useradd nsd03 -u 1300
grep nds04 /etc/passwd
id 查看用户
id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
-d directory
useradd -d /home/oo7oo asdf
-G, --groups GROUPS
[root@localhost ~]# groupadd stugrp
[root@localhost ~]# useradd -G stugrp nsd08
[root@localhost ~]# id nsd08
uid=1304(nsd08) gid=1305(nsd08) 组=1305(nsd08),1304(stugrp)
[root@localhost ~]#
-s, --shell SHELL 新账户的登录 shell
默认解释器 、/bin/bash
用户---->解释器---->内核---->硬件
useradd -s /sbin/nologin nsd10
命令 usermod
– 格式:usermod [选项]… 用户名
• 常用命令选项
– -l:更改用户帐号的登录名称
– -u:用户id
– -d:家目录路径
– -s:登录解释器
– -G:附加组 //重置附加组
-l:更改用户帐号的登录名称
-u:用户id
-s:登录解释器
-l 更改用户帐号的登录名称
–login NEW_LOGIN 新的登录名称
usermod -l stu14 nds14
-s, --shell SHELL 该用户帐号的新登录 shell
usermod -s /sbin/nologin stu13
-d, --home HOME_DIR 用户的新主目录
usermod -d /etc/abc/ nsd15
usermod
usermod -G suygrp nsd16 组重置
gpasswd -a nsd16 tmooc 追加组
[root@localhost ~]# gpasswd -a nsd16 tmooc
正在将用户“nsd16”加入到“tmooc”组中
[root@localhost ~]# id nsd16
uid=1305(nsd16) gid=1306(nsd16) 组=1306(nsd16),1304(stugrp),1307(tmooc)
passwd 设置密码
root 用户
passwd +要修改的用户名
其他用户
passwd
输入密码:
确认密码:
非交互式设置密码:
-S, --status 报告已命名帐号的密码状态(只有 root 用户才能进行此操作)
–stdin 从标准输入读取令牌(只有 root 用户才能进行此操作)
echo 111111 | passwd --stdin admin
[root@localhost ~]# echo 111111 | passwd -S admin
admin PS 2025-06-06 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
/etc/shadow
cat /etc/shadow
admin:$61RZFbn4R9O6Md28c1RZFbn4R9O6Md28c1RZFbn4R9O6Md28cUAbGIofaD9u4.FiYbSjYhU.fHd4hNmBJg5H2PbGh0H4Z6265uuyQ0G7d6vqEqmxu4jM9ORuVsloOm1q9q8AeV.:20245:0:99999:7:::
账号:加密后的密码:密码创建时间:0代表密码最短使用的期限:密码最长使用的期限99999:7 提前7天警告密码过期:::表示用户密码有效
/etc/skel
创建家目录时,跟随创建的默认文件
[root@localhost ~]# ls -A /etc/skel/
.bash_logout .bash_profile .bashrc
在新添加账号时,会复制/etc/skel 下所创建的文件到家目录,在/etc/skel下创建文件后,新的账号也会同步新创建的文件
[root@localhost ~]# ls -A /etc/skel/
.bash_logout .bash_profile .bashrc
[root@localhost ~]# touch /etc/skel/来财来财
[root@localhost ~]# useradd laicai
[root@localhost ~]# ls -a /home/laicai/
. .. 来财来财 .bash_logout .bash_profile .bashrc
/home/root/ 初始文件配置
~/.bash_profile 每次登录系统时执行,定义初始变量值
~/.bashrc 每次进入新的Bash环境时执行(开启新的终端)
# .bashrc
# User specific aliases and functions
echo ·¢²Æ·¢²Æ
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias hn='hostname'
alias haha='echo haha'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
~
/etc/bashrc 全局配置文件 影响全体用户
userdel 删除命令
命令格式:userdel
-r, --remove 删除主目录和信件池
组账户管理
/etc/group,保存组帐号的基本信息
root❌0:admin
root组名字:x组密码占位符:0组id:admin 组成员
gpasswd
-a, --add USER 向组 GROUP 中添加用户 USER
[root@localhost ~]# useradd kaka
[root@localhost ~]# useradd nb
[root@localhost ~]# useradd jack
[root@localhost ~]# useradd kenji
[root@localhost ~]# gpasswd -a kaka tarena
正在将用户“kaka”加入到“tarena”组中
查看用户是否在组里
方法1
[root@localhost ~]# grep kaka /etc/group
tarena:x:1310:kaka
kaka:x:1311:
方法2
[root@localhost ~]# id kaka
uid=1307(kaka) gid=1311(kaka) 组=1311(kaka),1310(tarena)
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:kaka,nb
-M, --members USER,… 设置组 GROUP 的成员列表
[root@localhost ~]# gpasswd -M 'jack,kenji' tarena
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:jack,kenji
之前加的两个用户不见了,所以这条命令是设置组成员列表,不能追加
gpasswd -M 'kaka,nb,jack,kenji' tarena
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:kaka,nb,jack,kenji
-d, --delete USER 从组 GROUP 中添加或删除用户
gpasswd -d kaka tarena
正在将用户“kaka”从“tarena”组中删除
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:nb,jack,kenji
只能一个一个删除太麻烦
组内一次性删除所有成员,定义-M 参数为空
[root@localhost ~]# gpasswd -M '' tarena
[root@localhost ~]# grep tarnea /etc/group
练习
[root@localhost ~]# gpasswd -a kaka tarena
正在将用户“kaka”加入到“tarena”组中
[root@localhost ~]# grep kaka /etc/group
tarena:x:1310:kaka
kaka:x:1311:
[root@localhost ~]# id kaka
uid=1307(kaka) gid=1311(kaka) 组=1311(kaka),1310(tarena)
[root@localhost ~]# gpasswd -a nb tarena
正在将用户“nb”加入到“tarena”组中
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:kaka,nb
[root@localhost ~]# gpasswd -M 'jack,kenji' tarena
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:jack,kenji
[root@localhost ~]# gpasswd -M 'kaka,nb,jack,kenji' tarena
[root@localhost ~]# grep tar* /etc/group
tape:x:33:
printadmin:x:995:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
cockpit-wsinstance:x:987:
natasha:x:1003:
tarena:x:1310:kaka,nb,jack,kenji
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:kaka,nb,jack,kenji
[root@localhost ~]# gpasswd -d kaka tarena
正在将用户“kaka”从“tarena”组中删除
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:nb,jack,kenji
[root@localhost ~]# gpasswd -M '' tarena
[root@localhost ~]# grep tarnea /etc/group
[root@localhost ~]# gpasswd -a kaka tarena
正在将用户“kaka”加入到“tarena”组中
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:kaka
[root@localhost ~]# id kaka
uid=1307(kaka) gid=1311(kaka) 组=1311(kaka),1310(tarena)
[root@localhost ~]# gpasswd -a nb tarena
正在将用户“nb”加入到“tarena”组中
[root@localhost ~]# grep nb /etc/group
unbound:x:990:
tarena:x:1310:kaka,nb
nb:x:1312:
[root@localhost ~]# id nb
uid=1308(nb) gid=1312(nb) 组=1312(nb),1310(tarena)
[root@localhost ~]# gpasswd -M 'jack,kenji' tarena
[root@localhost ~]# grep tarena /etc/group
tarena:x:1310:jack,kenji
[root@localhost ~]# gpasswd -a nb tarena
正在将用户“nb”加入到“tarena”组中
[root@localhost ~]# grep ^tar /etc/group
tarena:x:1310:jack,kenji,nb
[root@localhost ~]# gpasswd -d nb tarena
正在将用户“nb”从“tarena”组中删除
[root@localhost ~]# grep tarena /etc/gr*
/etc/group:tarena:x:1310:jack,kenji
/etc/group-:tarena:x:1310:jack,kenji,nb
grep: /etc/grub.d: Is a directory
[root@localhost ~]# gpasswd -d nb tarena
正在将用户“nb”从“tarena”组中删除
gpasswd:用户“nb”不是“tarena”的成员
[root@localhost ~]# gpasswd -a nb tarena
正在将用户“nb”加入到“tarena”组中
[root@localhost ~]# gpasswd -d nb tarena
正在将用户“nb”从“tarena”组中删除
[root@localhost ~]# grep ^tar /etc/gr*
/etc/group:tarena:x:1310:jack,kenji
/etc/group-:tarena:x:1310:jack,kenji,nb
grep: /etc/grub.d: Is a directory
[root@localhost ~]# grep ^tar /etc/gro*
-A, --administrators ADMIN,… 设置组的管理员列表
普通用户添加组成员,提示没有权限,这是需要设置组管理员
[jack@localhost root]$ gpasswd -a kenji tarena
gpasswd:没有权限。
在root下配置
[root@localhost ~]# gpasswd -A jack tarena
jack再次添加组成员
[jack@localhost root]$ gpasswd -a kenji tarena
正在将用户“kenji”加入到“tarena”组中
那么如何查看组的管理员是谁呢
/etc/gshadow
[root@localhost ~]# grep tarena /etc/gshadow
tarena:!:jack:jack,kenji
tarena 组名:
!:密码加密后的字符串,现在不用了
:jack 组管理员
:jack,kenji 组成员
设置多个组管理员
[root@localhost ~]# gpasswd -A 'jack,nb' tarena
[root@localhost ~]# grep tarena /etc/group[root@localhost ~]# grep tarena /etc/gshadow
tarena:!:jack,nb:jack,kenji
tarena:x:1310:jack,kenji
组删除 groupdel
root@localhost ~]# groupdel tarena
计划任务 crontab
基本命令
命令 | 功能 |
---|---|
crontab -e | 编辑当前用户的 cron 表(首次使用时会提示选择编辑器) |
crontab -l | 列出当前用户的所有计划任务 |
crontab -r | 删除当前用户的所有计划任务(慎用!) |
crontab -u username -e | 管理员编辑其他用户的 cron 表(需 root 权限) |
crontab -u username -l | 查看其他用户的计划任务 |
crontab 文件格式
每个任务一行,格式为:
* * * * * <要执行的命令>
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └─ 星期几 (0-7, 0和7=星期日)
│ │ │ └─── 月份 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 小时 (0-23)
└───────── 分钟 (0-59)
时间字段详解
字段 | 取值范围 | 特殊符号用法 |
---|---|---|
分钟 | 0-59 | */5 每 5 分钟 |
小时 | 0-23 | 8-17 早 8 点到下午 5 点 |
日 | 1-31 | 1,15 每月 1 号和 15 号 |
月 | 1-12 | */3 每 3 个月 |
星期 | 0-7 (0/7=周日) | 1-5 周一到周五 |
常用时间示例
示例 | 说明 |
---|---|
* * * * * | 每分钟执行一次 |
0 * * * * | 每小时整点执行 |
*/15 * * * * | 每 15 分钟执行 |
08-17 * * 1-5 | 工作日早 8 点到晚 5 点每小时执行 |
0 0 1 * * | 每月 1 号 0 点执行 |
@reboot | 系统启动时执行(非标准 cron,需系统支持) |
特殊关键字(部分系统支持)
关键字 | 等价于 | 说明 |
---|---|---|
@yearly | 0 0 1 1 * | 每年 1 月 1 日执行 |
@monthly | 0 0 1 * * | 每月 1 日执行 |
@weekly | 0 0 * * 0 | 每周日执行 |
@daily | 0 0 * * * | 每天 0 点执行 |
@hourly | 0 * * * * | 每小时执行 |
重要注意事项
-
路径问题 cron 的执行环境与用户登录环境不同,脚本中建议使用 绝对路径(如
/home/user/script.sh
而非./script.sh
)。 -
环境变量 cron 默认环境变量简单,关键命令需写全路径(如
/usr/bin/python3
)。建议在脚本中设置环境变量。 -
输出处理 cron 的输出会通过邮件发送给用户。若需忽略输出:
Plaintext * * * * * /path/to/command >/dev/null 2>&1
-
权限控制
- 普通用户只能操作自己的 cron。
- 限制用户使用 cron:将用户名写入
/etc/cron.deny
。
-
日志查看
- cron 日志通常位于
/var/log/syslog
或/var/log/cron
(取决于系统)。 - 使用
grep cron /var/log/syslog
查看记录。
- cron 日志通常位于