linux用户管理项目作业(代码片段)

liuchenbei liuchenbei     2023-02-19     493

关键词:


前言

用户管理以及文件管理是linux中核心部分,高效和安全的使用会起到事半功倍的效果

一、问题描述

在系统中完成以下用户操作
1.建立用户组Manufacture, Finance, Technology并满足以下要求
Manufacture组id为8000
Finance组id为8001
Technology组id为8002

2.建立westosuser , linux, lee, wes tosadmin等用户完成以下要求:westosuser用户的附加组为Manufac ture和Technology,lee的主组Finance,附加组为Technology, lee的uid和gid必须一致。linux为系统账号不能直接被操作者使用
westosadmin用户不属于以上三个组内,但是可以在系统中自由的管理用户

3.*以上用户密码均为westos ,井要求用户首次登陆时强制修改密码
*设定以上用户密码必须在30天内进行修改,并在过期前2天发出警告

4.建立目录完成以下要求
*新建目录/WESTOS_ Manufacture , /WESTOS_ Finance ,
/WESTOS _Technology, /WESTOS_Public

/WESTOS_Manufacture目录是Manufacture内的数据存储目录。
只能被Manufacture内的人员读写,并且在sc中建立的文件都属于Manufacture内。
/WESTOS_ Finance目录是Finance组的数据存储目录.只能被Finance内的人员读写,并且在Cw中建立的文件都属于Finance组

  • /WESTOS Technology目录是Tec hno logy巾的数据存储目录,只能被Technology内的人员读写,并且在js中建立的文件都属于Technology内
  • WESTOS_Public为公司人员公共目录,可以被公司任何员工读写,但是只能删除自己的文件。
  • westosadmin用户可以对 /WESTOS_Manufacture ,/WESTOS_Finance, /WESTOS_Technology ,/WESTOS_Public做任何操作

二、问题分析

1.创建用户组

我们可使用命令groupadd来建立用户组,使用groupdel来删除组。具体使用方法如下:

ugroupadd  -g id  groupname 	   建立用户组并指定其组id 

groupdel	      groupname		   删除用户组

cat               /etc/group       查看用户组信息 

2.创建用户

这里我们需要一条或几条命令可以实现创建用户的命令以及指定用户的附加组。对应的命令:useradd。其中第三小问:linux为系统账号不能直接被操作者使用,要实现此功能,需要设置该用户shell为/sbin/nologin。第四小问:westosadmin用户不属于以上三个组内,但是可以在系统中自由的管理用户,说明westosadmin是有特权的,要实现此功能,第一时间想到的设计方案是把该用户的uid设为0,因为uid=0的用户是超级用户(root),设置为超级用户后可实现题目中的要求(后面发现不行)。命令具体用法如下:

useradd				username	   ##用户建立
		-u id	    username	   ##uid 2*16==>uid范围0-65535
		-g id		username	   ##主组id
		-G id		username	   ##附加组id
		-d dir		username	   ##指定用户家目录
		-M			username	   #建立用户时不建立家目录
		-C word 	username	   ##指定用户说明
		-s shell 	username	   ##指定用shell
#指定test用户的uid为2021
[root@localhost ~]# useradd -u 2021 test

#使用tail命令查看文件最后十行(默认)
#useradd创建的用户会进入/etc/passwd 保存

[root@localhost ~]# tail /etc/passwd
...
test:x:2021:2021::/home/test:/bin/bash


[root@localhost ~]# id test
uid=2021(test) gid=2021(test) groups=2021(test),1000(jeff)

同时命令 usermod 可以管理用户和用户组的信息我们也会用到


usermod    [options]  username

			-l  			 #更改用户名称
			-u	 	id		 #更改用户id
			-g	 	gid 	 #更改主组id	
			-G		gid		 #更改用户附加组身份
			-aG		gid	 	 #添加用户附加组身份
			-C		word	 #更改用户说明
			-d	 	dir		 #更改家目录指向
			-md		dir		 #更改家目录指向同时更改家目录名称
			-S		shell	 #更改默认shell
			-L 				 #冻结账号
			-∪ 	   		     #解锁



[root@localhost ~]# tail /etc/group 
jeff:x:1000:test
hello:x:6666;
westos:x:6667:
Manufacture:x:8080:westosuser,lee
Finance:x:8081:westosuser
Technology:x:8082:
westosuser:x:8083:
westosadmin:x:6668:
linux:x:8084:
test:x:2021:

##给用户test添加组名为jeff的附加组

[root@localhost ~]# usermod -aG jeff test
或
[root@localhost ~]# usermod -aG 1000 test
 用id命令查看,发现多了一个jeff的属组
[root@localhost ~]# id test
uid=2021(test) gid=2021(test) groups=2021(test),1000(jeff)

3.密码设定

这里我们需要用到设定及修改用户密码的命令:passwd或chage主要应用方法如下表:

交互式过程
passwd lee				#只有root可以执行"echo 123| passwd --stdin lee"
passwd 					#普通用户改密码
Changing password for user lee.
Current password:		#输入原始密码
New password:			#输入新密码(8位以上无序数字+无序字母组合)
Retype new password:	##重复输入
passwd: all authentication tokens updated successfully.

#冻结认证)
passwd -l lee			##冻结账号认证
passwd -u lee			##解锁账号认证
#密码删除)
passwd -d lee
#密码使用天数
*从1970-1-1算其到今天的时间
passwd -e lee			#修改默认使用时间为0
chage -d 0 lee			##账号必须改密码才能登陆系统
密码最短有效期
passwd -n 1 lee			##lee在1天内不能改密码
chage -m 1 lee

#密码最长有效期
passwd -x 40 lee   		##40天内1 ee用户必须更新密码否则会被冻結
chage -M 30 lee
#密码过期警告
passwd -w 2 lee 		#账号过期前警告时间
chage -W 1 lee
#认证非活跃天数
passwd -i  2 Lee		#账号认证最大时间超过后还能用多久

#账号认证到期时间
chage -E "2020-05-11"  	#到2020-5-11这天账号会被冻结

4.文件存储权限管理

首先理解每个文件都有三个身份管理它,用户,用户组,属组
以file_system.sh文件为例

chmod  控制用户对文件的权限的命令
这里我们对权限位理解一下
r	读	设置为可读权限
w	写	设置为可写权限
x	执行权限	设置为可执行权限
X	特殊执行权限	只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
s	setuid/gid	当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t	粘贴位	设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

此篇主题是作业,chmod命令具体用法可以参考转载的博客

例1:
chmod u-rw /mnt/westos1  #给/mnt/westos1文件(目录)的属主减去读和写的权限
chmod a+r /mnt/test.sh  #给/mnt/test.sh 的属主、属组、附加组添加查看文件的权限
chmod g+s   /root/yongyoulinux #给yongyoulinux.sh文件的属组设置粘贴位,使得目录下创建的所有文件以后都属于此属组


chown 改变文件的属主和属组
用法:
chown   -[option]  	 user.grouper  file
例2:
chown				 westos /mnt/test  #更改此目录属主为westos
chown		 -R		 westos /mnt/test  #更改此目录及目录下所有文件的属主为westos(新写入的文件属主不会变)

chgrp 改变文件属组
用法: 
chgrp 属组  文件  
chgrp westos /mnt/westos  #更改属组为westos

三、问题解答

在求解问题之前,我们需要做一些准备工作以便于能够更直观的感受到用户的变化过程,在这里我们会用到监控命令watch,想要看到用户、用户组、以及用户密码状态以及用户家目录的变化,我们需要对/etc/passwd、/etc/group、/etc/shadow、/home这四个部分的内容进行监控,指令为:

watch -n 1 "tail -n 3 /etc/passwd /etc/group /etc/shadow;ls -l /home"

其中watch所监控的内容默认情况下为两秒钟一次更新,我们在这里设置为1秒:watch -n 1;另外,我们用tail -n 3来显示后面三个指定文件内容的后三行,当然,显示的行数可以自己设置。执行该指令后所显示的内容如下:

由于需要的命令比较多我们这里还是采用脚本来实现项目

vim file_system.sh

(具体代码分散在具体步骤了)

1.创建用户组

#!/bin/sh
groupadd -g 8000 manufacture
groupadd -g 8001 Finance
groupadd -g 8002 Technology
#/etc/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中
cat /etc/group
Manufacture:x:8080:westosuser,lee
Finance:x:8081:westosuser
Technology:x:8082:

2.创建用户及修改用户

# useradd user westosuser  linux lee westosadmin

useradd westosuser
useradd westosadmin
useradd -g Finance -G Manufacture -u 8001 lee
useradd -u 10 -M -s /sbin/nologin linux
usermod -aG 8080,8081 westosuser


尝试给westosadmin用户的uid设置为0(root超级用户)

发现useradd是不行的,接着尝试先创建用户,再usermod修改也是不行的,提示uid已存在。

如果不用脚本的话,我们也可以使用交互式的 visudo命令( #此命会作用是编辑/etc/sudoers并提供语法检测)
这里我们采取往/etc/sudoers里面插入数据完成要求,

这里采用的是通过sed命令往一百行后面加入一行 来达到我们的目的
#add priority for user westosuser
sed -i '100a\\westosuser localhost=NOPASSWD:  /usr/sbin/useradd, /usr/sbin/userdel' /etc/sudoers
#echo "westosuser localhost=NOPASSWD:  /usr/sbin/useradd, /usr/sbin/userdel" >> /etc/sudoers

3.密码设定

这里使用for循环实现westosuser,linux,lee,westosadmin四个用户的密码为westos,并且必须在30天内进行修改密码,并在过期前2天发出警告

# set password for sers
for i in westosuser,linux,lee,westosadmin;
do echo "westos"| passwd --stdin $i;
   passwd -e $i;

   chage -d 0  -M 30 -W 2 $i;

done

4.文件存储权限管理

mkdir /WESTOS_Manufacture /WESTOS_Finance /WESTOS_Technology /WESTOS_Public

#4 only groupers can read and write 
for n in Manufacture,Finance,Technology
        do chgrp -R $n /WESTOS_$n;
           chmod 770 /WESTOS_$n;
           chmod g+s /WESTOS_$n;
   done
#满足了WESTOS_Public为公司人员公共目录,可以被公司任何员工读写,但是只能删除自己的文件
chmod 777 /WESTOS_Public
chmod o+t /WESTOS_Public

#通过setfacl 实现westadmin用户对 /WESTOS_Manufacture等目录可以做任何操作(rwx)

setfacl -m user:westosadmin:rwx /WESTOS_Manufacture /WESTOS_Finance /WESTOS_Technology  /WESTOS_Public

可以通过getfacl来查看是否赋权成功

getfacl   --omit-header /WESTOS_Manufacture /WESTOS_Finance /WESTOS_Technology  /WESTOS_Public

总结

执行后结果:

可以看到执行成功了

以上就是这次项目作业的全部过程了。里面知识点比较多,需要我们多加练习,加油吧干饭人。 另外用户管理十分重要,注意对权限的分配才能为生产环境规避风险。

202302-踏马逐尘实验四软件开发案例团队作业(代码片段)

...擅长的技术3.明确团队分工团队博客链接踏马逐尘任务1:用户综合管理软件开发环境配置(1)创建用户综合管理软件的Javaweb项目,项目名称自拟。(2)在项目中添加mysql的驱动支持包。(3)分别用手工或脚本方式创建mysql数据... 查看详情

软件项目管理作业汇总(代码片段)

...,因为你需要对范围基线做一个变更。B、你正处在指导和管理项目工作过程中,现在可以实现变更。C、这个变更在实现前需要得到批准。D、可交付成果中存在一个缺陷,必须补救。正确答案:C2、你是一个软件项目的项目经理... 查看详情

项目作业2(代码片段)

...看#ps命令的三种执行风格unixbsdGNU#a与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)#x与终端无关相关的进程#u用户信息归类的查看方式#f进程层级关系#o显示指定参数pidcommnicepripcpuppidstat,user,group##-e显示所有进程#-f显... 查看详情

项目分享期末大作业——电商后台管理系统(代码片段)

...天我给大家分享一下近日制作的期末大作业——电商后台管理系统。有需要源代码的小伙伴可以到此篇文章末尾获取!!2.这是一个什么项目? 项目涉及技术栈:layui框架ssm框架(spring+springmvc+mybatisÿ... 查看详情

linux操作系统笔记——进程和作业(代码片段)

...程的概念经过前面的知识点,我们知道Linux是一种多用户、多任务、支持多线程和多CPU的操作系统,即系统可以有多个用户同时工作,且每个用户又可以完成多个任务,这其中通过对进程的管理,来实现对用户... 查看详情

2017-2018-220179225《网络攻防与实践》第8周作业(代码片段)

...**开放源代码与免费跨平台的硬件支持丰富的软件支持多用户多任务可靠的安全性良好的稳定性完善的网络功能2)**Linux系统结构**Linux系统结构包括Linux内核,一些GNU运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环... 查看详情

第一次作业:深入源码分析进程模型(代码片段)

...ell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。    (1)内核  内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序... 查看详情

用户使用调查报告(代码片段)

...业要求在哪里第八次团队作业:Beta冲刺这个作业的目标用户使用调查作业正文如下1.用户调查项目概述项目名称和目标项目名称:氵水滴打卡项目目标:为学生的学习提供打卡的功能并记录数据,为用户提供分享功能。2.调查分... 查看详情

项目分享期末大作业——电商后台管理系统(代码片段)

...9;mysql数据库 按照老师要求主要完成以下几个模块:用户模块(用户的增删改查)收货地址模块(收货地址信息的增删改查)订单模块(订单信息的增删改查)商品模块(商品信息的增删改查)... 查看详情

linux下svn多个项目多用户分配(代码片段)

安装步骤如下:1、yuminstallsubversion2、输入rpm-qlsubversion查看安装位置,如下图:输入svn–help可以查看svn的使用方法需求开发服务器搭建好SVN服务器,不可能只管理一个工程项目,如何做到不在一个项目中的开发人员不能访问其它... 查看详情

python人员信息管理系统(当期末作业)(代码片段)

信息管理源码下载:长按左侧二维码2秒回复「信息」即可获取源码(非本号)1.项目说明本项目用到的模块datetimeosrandomsysPyQt5本项目代码量在500行左右,代码不难,展示一个功能完善的入门级别的PyQt项目,... 查看详情

linux用户和组管理未完成(代码片段)

目录Linux用户和组管理1,用户管理概述2.用户管理配置文件(1)/etc/passwd文件。(2)/etc/shadow文件。(3)/etc/group文件。3.用户和组管理命令1)用户管理Linux用户和组管理Linux系统是一个多用户、多任务的分时操作系统,在Linux中... 查看详情

linux用户管理(代码片段)

1、使用root账号登录Linux系统用户组管理1、创建一个名为dev的组groupadddev2、删除dev的组groupdeldev用户管理1、在dev组下创建zhangsan用户useradd-gdevzhangsan2、设置zhangsan的用户密码passwdzhangsan3、删除用户userdel-rzhangsan文件授权1、将/home/stu... 查看详情

团队作业3-需求分析设计(代码片段)

需求分析软件的最终目的是用来解决用户的某些问题,需求分析就是要理解要解决的问题,真正明确用户需求。1.访问软件项目的真实用户(至少10个),确保软件真正体现用户的需求,为软件最终可用奠定基础。如果是原有项... 查看详情

linux用户管理(代码片段)

Linux中的用户管理,是多用户的一个系统为什么要有用户??对系统中的资源做归属为什么对应的用户要设置对应的密码??对用户的身份做认证在Linux中,存在着用户组跟用户,用户是属于用户组的,并且共享这个用户组的权... 查看详情

linux的用户管理(代码片段)

用户管理用户家目录的概念  /home/    目录下有各个创建的用户对应的家目录    当用户登录时,会自动的进入到自己的家目录说明:    linux系统是多用户多任务的操作系统,   任何使用系统资源... 查看详情

小猿圈linux之用户和用户组管理(代码片段)

Linux系统用户组的管理上一节我们讲解了linux系统用户账号的管理,小猿圈加加老师带你学习下一节---Linux系统用户组的管理每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的... 查看详情

linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理jenkins结合ansible(代码片段)

...运维——持续集成与持续交付(下)jenkins节点与用户管理、jenkins结合ansible文章目录Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理、jenkins结合ansible一、jenkins节点管理二、jenkins用户管理三、jen... 查看详情