用户简介 组账号管理 计划任务

本文详细介绍了Linux系统中的用户和组管理,包括用户账户创建、属性修改、密码设置以及用户家目录的管理。同时,讲解了计划任务crontab的使用,展示了如何设置周期性任务来执行系统操作。内容涵盖用户 UID、GID 的概念,用户和附加组的关系,以及组管理中的权限控制和任务调度。
摘要由CSDN通过智能技术生成

· 用户管理
· 组账号管理
· 计划任务

用户简介

· 用户账户 : 1 . 可以登陆操作系统 2 . 资源访问控制(不同的人,不同的权限)

· 组账户 : 方便管理众多的用户

唯一标识 :

  • UID(0,1,2,3…来标识用户,并不是用户名),vim /etc/login.defs查看UID范围,默认最大为60000

  • GID(0,1,2,3…来标识组)

管理员root的UID永远为0,普通用户的UID从1000开始
Linux一个用户必须至少属于一个组,可以多个组

· 组账户分类 : 基本组、附加组(从属组)

  • 基本组 : 由系统创建,与用户同名
  • 附加组(从属组) : 由管理员创建,由管理员管理组成员
useradd tom		创建用户tom
	基本组 : tom	# 一般和用户名一样
	附加组 : sg nb
本地账户的数据文件
/etc/passwd		/etc/shadow
/etc/group		/etc/gshadow

/etc/passwd 保存用户基本信息的配置

每个用户记录一行,以:分隔为7个字段
head -1 /etc/passwd
# root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组的GID:用户描述信息:家目录:解释器

用户账号创建

useradd 添加用户
useradd [选项]... 用户名
常用的命令选项
- -u:指定UID标记号(不指定默认从1000开始)
- -d:指定宿主目录(家目录),不指定默认为/home/用户
- -G:指定所属的附加组
- -s:指定用户的登陆解释器,不指定默认为/bin/bash
useradd nsd01		创建用户nsd01
grep nsd01 /etc/passwd		过滤精确查找nsd01是否存在
# nsd01:x:1000:1000::/home/nsd01:/bin/bash

-u: 指定UID标记号
useradd -u 1400 nsd02	创建用户nsd02,指定用户UID为1400
grep nsd02 /etc/passwd
# nsd02:x:1400:1400::/home/nsd02:/bin/bash

id nsd01	查看用户是否存在
存在则显示用户基本信息
不存在则显示no such user

-d: 指定家目录
useradd -d /opt/abc nsd03    创建用户nsd03,指定用户家目录为/opt/adc
grep nsd03 /etc/passwd					
# nsd03:x:1401:1401::/opt/abc:/bin/bash
我们在指定家目录的时候父目录必须是存在的,否则会报错,如下:
useradd -d /opt/aa/bb/cc nsd04		父目录不存在,报错

-G: 指定所属的附加组
groupadd tarena		创建一个组名字为tarena 
useradd -G tarena nsd05		在组tarena组中创建一个用户nsd05
grep nsd05 /etc/passwd
# nsd05:x:1404:1405::/home/nsd05:/bin/bash
id nsd05	查看nsd05的基本信息,groups会显示两个组

-s: 指定用户的登陆解释器
/sbin/nologin    禁止用户登陆系统
useradd -s /sbin/nologin nsd06		创建一个禁止用户登陆的用户
grep nsd06 /etc/passwd 
# nsd06:x:1403:1403::/home/nsd06:/sbin/nologin

用户账户的属性修改

usermod修改用户
usermod [选项]... 用户名
常用命令选项
- -l:更改用户账户的登陆名
- -u:更改用户id
- -s:更改用户的登陆解释器

- -d:家目录路径
- -G:附加组		//重置附加组
-l: 修改用户的名字
usermod -l abc01 nsd01	将用户nsd01的用户名修改成abc01
id abc01

-u -s:修改用户的的id和用户的登陆解释器
grep abc01 /etc/passwd
usermod -u 1500 -s /sbin/nologin abc01	将用户abc01的UID改成1500,登陆解释器修改成/sbin/nologin
grep abc01 /etc/passwd

-d: 修改用户的家目录路径
useradd abc02
grep abc02 /etc/passwd
usermod -d /opt/haha abc02		-d只修改etc/passwd的信息,并没有在opt的目录下创建haha目录
grep abc02 /etc/passwd
ls /opt			/opt目录下并没有创建haha目录			

-G 修改用户,重置附加组
useradd abc03		创建用户abc03
groupadd A			创建组A
usermod -G tarena abc03	  abc03没有附加组,添加附加组tarena
id abc03			查看用户abc03的基本信息

usermod -G A abc03	 将abc03的附加组修改成A
id abc03			查看用户abc03的基本信息

设置用户密码

方式一:交互式方式设置
passwd 用户名	# 只有管理员用户才可以用这个格式
重复输入密码两次即可
注意:root账户是可以直接重置密码的,无需知道普通用户的登陆密码

su - abc01	切换普通用户abc01(注意su后面要加上"-",把环境切换过去,否则是以管理员身份登陆abc01)
passwd 
先输入以前的密码
重复输入密码两次即可
exit从普通用户切换到管理员用户

root身份更改普通用户密码
在这里插入图片描述
普通用户身份更改密码
在这里插入图片描述

方式二:非交互式方式设置	(只有管理员可以用这种方式设置密码)
echo 密码 | passwd --stdin 用户名
echo abc | passwd --stdin abc01		将用户abc01的密码设置成abc
echo 123456 | passwd --stdin abc02  	将用户abc02的密码设置成123456

/etc/shadow 保存密码字串/有效期等信息

只有管理员账户才有权限可以查看/etc/shadow,普通用户是没有权限查看该目录的

每产生一个用户,就会有一个用户记录行,以:分隔为9个字段
用户名:密码加密字符串:18694(上一次密码修改的时间):0:99999:7:::

18694:从1970-1-1到达上一次修改密码时间经历的天数
0:下一次可以修改密码时间限制,0代表随时可以修改
99999:表示修改的密码可以用99999天
7:密码到期之前提前7天提醒
:::用户账户永远不过期,可以永久使用
如下图所示:

在这里插入图片描述

用户家目录

touch /etc/skel/haha.txt
mkdir /etc/skel/xixi
ls -A /etc/skel		 /etc/skel里面新增了haha.txt,xixi
useradd nsd15		 创建用户nsd15
ls -A /home/nsd15	/home/nsd15目录里面也新增了haha.txt,xixi
由此可见:新建用户时,根据/etc/skel模板目录复制

· 用户家目录下的配置文件来源

  • 新建用户时,根据/etc/skel模板目录复制

主要的初始配置文件

  • ~/.bash_profile : 每次登陆时执行,定义初始化变量
  • ~/.bashrc : 每次进入新的终端执行,定义永久的别名

给普通用户 定义永久别名

useradd nsd01		创建一个新用户nsd01
vim /home/nsd01/.bashrc		打开家目录下的nsd01用户的初始配置文件,定义永久别名hn="hostname"

在这里插入图片描述

su - nsd01		切换到nsd01用户下

在这里插入图片描述

给root用户 定义永久别名

vim /root/.bashrc		打开管理员身份的起始文件,定义别名nana="echo biubiubiu"

在这里插入图片描述

bash        重启终端

在这里插入图片描述
所有用户都生效 定义永久别名

全局配置文件 : /ect/bashrc       /etc/profile

vim /ect/bashrc		只允许管理员修改,所有用户都生效
打开管理员身份的起始文件,定义别名lala="520"

在这里插入图片描述
在这里插入图片描述

用户家目录的删与查

userdel命令
- 格式: userdel [-r] 用户名
- 添加-r选项,宿主目录(家目录)/用户邮件也一并删除

普通用户的权限,对数据的增删改查只能在自己的家目录下进行操作,所以普通用户的家目录存放了普通用户的所有数据
userdel nsd01
id nsd01   没有nsd01的信息
ls /home/	家目录下依然存在nsd01的信息

useradd nsd02	
userdel -r nsd02	# 一般情况下我们工作中是不会连普通用户的家目录一起删除
ls /home/   家目录下不存在nsd02的信息

查询账号id
- 格式:id [选项]... 用户名
id nsd01	查看用户是否存在
存在则显示用户基本信息
不存在则显示no such user
案例
useradd nsd03
usermod -d /opt/xixi nsd03
grep nsd03 /etc/passwd
ls /opt/xixi		找不到/opt/xixi的目录
userdel -r nsd03	操作系统找不到nsd03的家目录,会有找不到家目录的报错信息,但是还是会把nsd03所有的数据全部删除
# userdel : nsd03 home directory (opt/xixi) not found

组账号的管理

/etc/group 保存组账号的基本信息

/etc/group  保存组账号的基本信息
- 每个组记录一行,以:分割为4个字段
groupadd stugrp
grep stugrp /etc/group	查看组账号基本信息
stugrp:x:1000:
组名:组的密码占位符:组的GID:本组的成员列表

gpasswd 命令管理组成员
- 格式 : gpasswd [选项]...  组名
· 常用命令选项
-  -a:添加组成员,每次只能加一个
-  -d:删除组成员,每次只能删一个
-  -M:重新定义组成员用户列表,可设置多个
-  -A:定义组管理员列表
useradd	nana 
useradd dada
useradd lili
useradd dudu
groupadd stugrp				创建stugrp分组

gpasswd -a nana stugrp		创建组成员nana至stugrp分组
grep stugrp /etc/group		查看组账号基本信息
# stugrp:X:1000:nana

gpasswd -d nana stugrp		删除stugrp分组中的组成员nana
grep stugrp /etc/group
# stugrp:X:1000:

gpasswd -M dudu,lili stugrp		清空原组成员,重新添加组成员dudu,lili
grep stugrp /etc/group
# stugrp:X:1000:dudu,lili

gpasswd -M "" stugrp		清空组成员列表
grep stugrp /etc/group
# stugrp:X:1000:

gpasswd -A lili stugrp		添加组管理员lili(只有root权限才可以添加管理员)
grep stugrp /etc/gshadow	查看组账号的管理员信息
# stugrp:!:lili: 	 添加了组管理员后普通用户lili对stugrp分组只能行使-a和-d的功能,不能行使其他的功能

/etc/gshadow 保存组账号的管理信息

- 每个组记录一行,以:分隔为4个字段
grep stugrp /etc/gshadow	查看组账号的管理信息	
stugrp:!::
组名:组的密码加密字符串:组的管理员列表:组的成员列表
添加组账号stugrp的管理员,组管理员可以在stugrp组中,也可以不在stugrp的组中。
gpasswd -A nana stugrp		root权限 添加管理员nana
grep stugrp /etc/gshadow	查看stugrp组的管理信息

su - nana					切换至普通用户nana
gpasswd -a dada stugrp		普通用户添加用户dada
grep stugrp /etc/group		查看stugrp组账号的基本信息
gpasswd -d dada stugrp		删除用户dada
exit						切换至管理员用户

gpasswd -A "" stugrp		root权限 清空stugrp组管理员
grep stugrp /etc/gshadow	查看stugrp组的管理信息

gpasswd -A nana,dada stugrp		定义stugrp组管理员
grep stugrp /etc/gshadow	

groupdel删除组

- 格式:groupdel 组名
- 删除的目标组不能是用户的基本组
groupdel stugrp		删除附加组stugrp
grep stugrp /etc/group

groupdel dada		不能删除用户的基本组
# groupdel:cannot remove the primary group of user "dada"

计划任务crontab

· 周期性任务

  • 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
  • 软件包 : cronie crontabs (Linux系统默认自带的)
  • 系统程序 : crond (系统默认开机自启动)
  • 日志文件 :/var/log/cron
· 使用crontab命令
- 编辑计划任务:crontab -e [-u 用户名]
- 查看计划任务:crontab -l [-u 用户名]
- 清除计划任务:crontab -r [-u 用户名]

在这里插入图片描述

· 周期性计划任务书写格式
- 分  时  日  月  周	      任务命令行(绝对路径)
  *   *   *  *   *        *代表任意时间都匹配,写五个*表示每分钟执行一次(第一个*号必须为顶格)
  30  23  *  *   * 		  每天晚上11.23分执行一次
  30  23  *  *   5 		  每周的周五晚上11.23分执行一次  
  30  23  *  *   1-5 	  周一至周五晚上11.23分执行一次   
  30  23  *  *   1,2,5 	  周一,周二,周五晚上11.23分执行一次 
  30  23  1  *   1 	 	  每月的1号或者每周的周一,晚上11.23分执行一次
  */5   *   *  *   *      每隔5分钟执行一次
  1   */2   *  *   *      每隔2个小时执行一次(每两个小时的第一分钟执行)
案例
配置一个cron任务
每分钟记录当前系统的时间,写入/opt/time.txt
date 		查看系统当前时间
crontab -e -u root		以root身份进入周期性计划任务书(vim编辑器)# -u root可以省略不写
* * * * * date >> /opt/time.txt
# 保存退出后
cat /opt/time.txt	查看记录的情况 
crontab每分钟定时执行:
*/1 * * * * systemctl restart nginx //每隔1分钟执行一次
*/10 * * * * systemctl restart nginx //每隔10分钟执行一次
 
crontab每小时定时执行:
0 */1 * * * systemctl restart nginx //每1小时执行一次
0 */2 * * * systemctl restart nginx //每2小时执行一次
 
crontab每天定时执行:
0 10 * * * systemctl restart nginx //每天10点执行
30 19 * * * systemctl restart nginx //每天19点30分执行
 
crontab每周定时执行:
0 10 * * 1 systemctl restart nginx //每周一10点执行
30 17 * * 5 systemctl restart nginx //每周五17点30分执行
 
crontab每年定时执行:
0 10 1 10 * systemctl restart nginx //每年的10月1日10点执行
0 20 8 8 * systemctl restart nginx //每年的8月8日20点执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值