Linux操作系统基础--(2)输入输出管理、帮助与用户管理

Linux操作系统基础

实验所用系统为Redhat-rhel8.2。

Linux操作系统基础–Linux中的输入输出管理与获得帮助

一、命令行获得帮助

1、whatis

whatis+命令		##查看命令的基本用途

查看过程中出现nothing appropriate表示
1、要查看内容没有帮助
2、系统帮助数据库未更新,在root用户下使用mandb命令更新
在这里插入图片描述

2、help

命令 --help 	##查看命令的基本用法

[] --内容可加可不加
… --内容个数无限制
<> --必须在命令执行时加入的元素
在这里插入图片描述

3、man

man +命令		##命令用法详解 (man是manual的缩写)
man -k passwd	##passwd关键字有多少级别的man
		1	命令
		2	系统调用
		3	函数库调用
		4	特殊文件(设备文件等)
		5	文件
		6	游戏
		7	特殊的包
		8	系统管理命令
		9	内核信息规则

man +命令–进入到该命令的帮助
q --退出
/关键字 --搜索关键字,n 向下匹配,N 向上匹配
G --快速移动到man的最后
g --表示快速移动到man的最前
在这里插入图片描述

二、输入输出

1、字符设备

  • 字符设备:显示字符到屏幕上的设备文件
  • stdin – 标准输入
    标号为0
    键盘 鼠标 打字机
  • stdout – 标准正确输出
    标号为1(存放在/dev/pts/0)
  • stderr – 标准错误输出
    标号为2

2、管理输出

  • 输出重定向
输出重定向  >  ##覆盖原文件内容
find /etc/ -name passwd > file		##将正确输出保存至file
find /etc/ -name passwd 2> file		##将错误输出保存至file
find /etc/ -name passwd &> file		##将所有输出保存至file
  • 追加输出
追加  >>	##不覆盖原文件内容
find /etc/ -name passwd >> file		##正确输出追加保存至file,不覆盖file原内容
find /etc/ -name passwd 2>> file	##将错误输出追加保存至file
find /etc/ -name passwd &>> file	##将所有输出追加保存至file

#find + 目录 + -name + 关键字或文件名
#查找该目录里名字含有该关键字或者该文件名的文件

  • “|”管道符
 “|” 管道符(只能通过正确输出)	 ##将命令隔开,将前一个命令的输出作为后面命令的输入
 ls /bin/ |wc -l					##将一个命令的输出作为第二个命令的输入
ls /bin/ | tee westos |wc -l		##ls命令的输出 被tee复制到westos中然后被wc统计
				##将上一个命令的输出复制保存至下一个文件,将第二条命令的输出作为第三个命令的输入
				##tee 复制输出到指定位置
ls westos hello 2>&1 |wc -l			##使错误输出通过管道符的方法:将其保存至正确输出的文件里	
				##westos存在,hello不存在,则将错误输出保存在正确输出里,通过管道符
				##2>&1 固定格式,将错误输出保存至正确输出的文件里

在这里插入图片描述

3、管理输入

  • 输入重定向
<			##输入重定向
tr ‘a-z’ ‘A-Z‘ < file		##把file文件中的小写字母转换成大写字母,定向到tr程序中

在这里插入图片描述

  • 输入重定向与管道符的区别

输入重定向:加载处理硬盘中的数据,即文件的真实内容
管道符:处理内存中的数据,即命令的输出,较慢

  • 多行录入
<<			##多行录入
tr 'a-z' 'A-Z'  <<  EOF 
test
test1		##此处的test不能表示为文件名,只表示test字符
EOF			##当首字母再次出现表示录入结束

在这里插入图片描述
#vim westos.sh,i编辑,将cat定向到westos.file中,输入内容,保存并退出vim
在这里插入图片描述
#sh westos.sh,建立westos.file文件

4、综合练习

  • 查找/etc/下的passwd文件屏蔽错误输出
find /etc/ -name passwd 2> /tmp/westos (/tmp 系统临时文件存放目录)

find /etc/ -name passwd 2> /dev/null(/dev 设备文件)

在这里插入图片描述

  • 查找/etc/下的passwd文件正确输出保存到westos.out中,错误输出保存到westos.err中
find /etc/ -name passwd > westos.out
find /etc/ -name passwd 2> westos.err
find /etc/ -name passwd > westos.out   2> westos.err

在这里插入图片描述

  • 查找/etc/下的passwd文件保存所有输出到westos.all中并统计输入的行数
find /etc/ -name passwd 2>&1 | tee westos.all | wc -l

在这里插入图片描述

  • 查找/etc/下的passwd文件统计输出行数并显示输出内容
find /etc/ -name passwd 2>&1 | cat -n
find /etc/ -name passwd 2>&1 | tee /dev/pts/0 | wc -l

在这里插入图片描述

  • 转换/etc/目录中的passwd文件中的所有字母为大写并统计文件行数
find /etc/ -name passwd 2>&1 |tr 'a-z' 'A-Z'| tee /dev/pts/0 | wc -l

在这里插入图片描述

Linux操作系统基础–Linux中的用户管理

一、用户及用户组

1、用户

用户存在的意义
系统资源是有限的,如何合理分配资源
解决这个问题必须要有资源配合

2、用户组

用户组存在的意义
分为初始组(不能由自身决定)和附加组(可由自身决定)
用户组是一个逻辑容器
对用户进行归类和统一授权

二、用户切换

1、用户查看

whoami		##查看当前用户
id		##查看用户id信息
	-u	##查看用户的用户id
	-g	##查看用户主组id
	-G	##查看用户所有的组的id
	-n	##显示名称(必须结合以上参数使用)

用户id范围:0-65535
0: ##linux超级用户id
1-999: ##linux系统自用id
1000-65535: ##用户级id
以上id设定规则都被记录在/etc/login.defs

在这里插入图片描述

2、用户切换

-				##切换用户环境
su - username	##切换用户身份及环境
su username		##切换用户身份,不改变环境

高级用户—>普通用户 不需要密码
[root]su - westos
普通用户—>高级用户 需要密码
[westos]su - root
普通用户—>普通用户 需要密码
[westos]su - linux

[注意] 反复切换会导致环境混乱,打开多个shell,可使用exit退出
避免这种情况,时刻保持当前只有一个shell开启

图形界面切换用户 gnome-session-quit
强制切换:gnome-session-quit --force

在这里插入图片描述

3、用户涉及到的系统配置文件

/etc/passwd					##用户身份信息文件
		##用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录(/home/username):用户默认shell(/bin/bash)

/etc/group					##组身份信息文件
		##组名称:组密码:组id:组的附加成员

/etc/skel/.*				##用户环境配置文件模板

/etc/shadow					##用户认证信息文件
		##用户名称:用户密码的加密字符:用户密码最后一次被修改的时间(从1970年1月1日开始算起):密码最短有效期;密码最长有效期;密码过期前警告期:账号非活跃期(强制改密码):账号到期时间(从1970年1月1日开始算起):用户自定义(未使用)

/home/username				##用户家目录

/var/spool/mail/username	##用户邮箱文件

4、用户和用户组建立及删除

  • 监控命令,用于监控系统内的用户,用户组等。
监控用户建立的命令
watch -n 1 "tail -n 3 /etc/passwd /etc/group;echo ======;ls -l /home"

一秒监控一次“ ”里的命令
“ ”显示用户身份信息文件和组身份信息文件的后三行
;表示另一个命令
echo ======= 显示文字 “======”
ls -l /home 显示目录中内容的属性

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

  • useradd
useradd username		##用户建立
	-u id username		##uid		2*16=0-65535
				##0		表示超级用户
				##1-200		系统预留id
				##201-999	系统用户
				##1000-65535	用户级用户
			##/etc/login.defs	记录用户建立的默认规则

	-g id username		##主组id(此时该主组必须存在)
	-G id username		##附加组id
	-d dir username		##指定用户家目录
	-M    username		##建立用户时不建立家目录
	-c word username	##指定用户说明
	-s shell username	##指定用shell

在这里插入图片描述
#建立用户,建立指定id的用户
在这里插入图片描述
#建立指定id,主组,附加组,用户家目录,说明文字和shell的用户

  • userdel
userdel -r username		##用户删除,删除身份且删除系统配置文件
userdel  username		##用户删除,只删除身份,未删除系统配置文件
	#如果先删除了用户,未删除配置文件,则需要用rm删除/home里的该文件
	#rm -rf /home/username

在这里插入图片描述
#删除用户yun,未删除配置文件
在这里插入图片描述
#删除用户yun的配置文件
在这里插入图片描述
#删除用户ting的身份及配置文件

  • groupadd
groupadd groupname		##建立组
	-g id groupname		##指定组名称

在这里插入图片描述
#建立用户组和指定id的组

  • groupdel
groupdel groupname		##删除组

在这里插入图片描述
#删除用户组

5、用户和用户组的信息管理

usermod
	-l		##更改用户名称
	-u		##更改用户id
	-g		##更改主组id
	-G		##更改用户附加组身份,会删除此前的所有附加组身份  
		(如果要删除附加组身份,则可以添加“”空符号串)
	-aG		##添加用户附加组身份
	-c		##更改用户说明
		(删除用户说明,则添加“”空符号串)
	-d		##更改家目录指向
		(没有改变家目录名称,此时的家目录指向不一定存在)
	-md		##更改家目录指向和家目录名称
		(使用时保证家目录指向与名称一致)
	-s		##更改默认shell
		(原地址 /bin/bash  改为/sbin/nologin 则变成高级用户里的文件,使用su-username则不能切换用户,需要将shell还原成/bin/bash)
	-L		##冻结账号	(状态为!+密码的加密显示)
	-U		##解锁(解锁时账号必须有密码才能解锁)	(状态为密码的加密显示)

在这里插入图片描述
#建立用户lee
在这里插入图片描述
#将用户lee的名称改为leee
在这里插入图片描述
#将用户leee的id改为2548
在这里插入图片描述
#将用户leee的主组改为70
在这里插入图片描述
#id+名称 — 查看修改后的名称,id,主组,附组,添加的附组
在这里插入图片描述
#修改用户leee的说明文字和家目录指向
在这里插入图片描述
#修改用户leee的shell
在这里插入图片描述
#查看修改后用户leee的说明文字,家目录指向和shell

在这里插入图片描述

#改为/sbin/nologin 则变成高级用户里的文件,使用su-username则不能切换用户,需要将shell还原成/bin/bash

6、用户认证信息管理

#watch -n 1 "tail -n 3 /etc/passwd /etc/shadow"
  • passwd -S
passwd -S lee		##查看密码状态
			(LK---冻结状态,加密方式为SHA512对称加密;PS---解锁状态)
  • 更改密码
passwd lee				##只有root可以执行"echo 123 | passwd --stdin lee"(将123作为用户的密码)
			(root用户修改密码不需输入原密码)

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		##有密码时才能删除
			(删除密码后-S查看状态:NP---没有密码的解锁状态)

在这里插入图片描述
#删除密码
在这里插入图片描述
#用户当前为无密码状态

echo 123 | passwd --stdin leee

在这里插入图片描述
#设置密码

  • 修改密码默认使用时间
passwd -e lee		##修改默认使用时间为0(不可加数字)
chage -d 0 lee		##账号必须改密码才能登录系统

#密码使用天数
#从1970-1-1开始算到今天

  • 密码最短有效期
passwd -n 1 lee		##lee在一天内不能改密码
chage -m 1 lee
  • 密码最长有效期
passwd -x 40 lee	##40天内lee必须更新密码都则会被冻结
chage -M 30 lee	
  • 密码过期警告
passwd -w 2 lee		##账号过期警告时间
chage -W 1 lee	
  • 认证非活跃天数
passwd -i 2 lee		##账号认证最大时间超过后还能用多久(-1天即0)
chage -I 1 lee

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

  • 账号认证到期时间
chage -E '2020-05-22"	##账号到2020-05-22这天账号会被冻结(形式为1970-1-1算起的第n天)

在这里插入图片描述
[注意]

#passwd -l username	##冻结用户(状态为!!+密码的加密显示)///(usermod -L username命令的状态为!+密码的加密显示)
#passwd -u username	##解冻账号(状态为密码的加密显示)

在这里插入图片描述

7、用户权力下放

在系统中普通用户是无法执行系统管理命令的
如果需要普通用户执行系统管理动作,则需要root用户进行授权

普通用户授权方式“sudo”
作用:可以使普通用户使用指定的用户身份执行命令

授权方法:
visudo		#编辑/etc/sudoers并提供语法检测

在代码的100行左右 — 代码规范性

hostname	##查看主机名----westosb.westos.org
which useradd	##查看useradd位置


username hostname = (newusername)   [NOPASSWD:]/command, /command1(注意:","后空格,"/")

#lee用户		在linux.westos.com主机=(用超级用户身份)		执行useradd命令
lee					linux.westos.com=(root)				/usr/sbin/useradd

#westos用户		在linux.westos.com	使用超户			免密			执行useradd和userdel
westos			linux.westos.com   =	(root)		NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel

例:westosadmin用户可以在系统中自由的管理用户
在这里插入图片描述
#建立用户,权力下放,修改文件
在这里插入图片描述
#在100行左右写入
在这里插入图片描述
#通过权力下放,普通用户也可以增删用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本PDF电子书包含上下两册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页面的使用和周转 2.7 物理页面的分配 2.8 页面的定期换出 2.9 页面的换入 2.10 内核缓冲区的管理 2.11 外部设备存储空间的地址映射 2.12 系统调用brk() 2.13 系统调用mmap() 第3章 中断、异常和系统调用 3.1 X86 CPU对中断的硬件支持 3.2 中断向量表IDT的初始化 3.3 中断请求队列的初始化 3.4 中断的响应和服务 3.5 软中断与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟中断 3.8 系统调用 3.9 系统调用号与跳转表 第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性调度 4.8 系统调用nanosleep()和pause() 4.9 内核中的互斥操作 第5章 文件系统 5.1 概述 5.2 从路径名到目标节点 5.3 访问权限与文件安全性 5.4 文件系统的安装和拆卸 5.5 文件的打开与关闭 5.6 文件的写与读 5.7 其他文件操作 5.8 特殊文件系统/proc 第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 7.6函数sys—connect()——请求连接 7.7报文的接收与发送 7.8插口的关闭 7.9其他 第8章设备驱动 8.1概述 8.2系统调用mknod() 8.3可安装模块 8.4PCI总线 8.5块设备的驱动 8.6字符设备驱动概述 8.7终端设备与汉字信息处理 8.8控制台的驱动 8.9通用串行外部总线USB 8.10系统调用select()以及异步输入/输出 8.11设备文件系统devfs 第9章多处理器SMP系统结构 9.1概述 9.2SMP结构中的互斥问题 9.3高速缓存与内存的一致性 9.4SMP结构中的中断机制 9.5SMP结构中的进程调度 9.6SMP系统的引导 第10章系统引导和初始化 10.1系统引导过程概述 10.2系统初始化(第一阶段) 10.3系统初始化(第二阶段) 10.4系统初始化(第三阶段) 10.5系统的关闭和重引导
实验二 进程管理   Windows所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C++ 运行库来说,这一调用发生在应用程序的main() 函数返回之后。 1. 创建进程 CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。表 2-1详细地列出了每个参数的类型和名称。   表2-1 CreateProcess() 函数的参数 参数名称 使用目的 LPCTSTR lpApplivationName 全部或部分地指明包括可执行代码的EXE文件的文件名 LPCTSTR lpCommandLine 向可执行文件发送的参数 LPSECURIITY_ATTRIBUTES lpProcessAttributes 返回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承 LPSECURIITY_ATTRIBUTES lpThreadAttributes 返回进程的主线程的句柄的安全属性 BOOL bInheritHandle 一种标志,告诉系统允许新进程继承创建者进程的句柄 DWORD dwCreationFlage 特殊的创建标志 (如CREATE_SUSPENDED) 的位标记 LPVOID lpEnvironment 向新进程发送的一套环境变量;如为null值则发送调用者环境 LPCTSTR lpCurrentDirectory 新进程的启动目录 STARTUPINFO lpStartupInfo STARTUPINFO结构,包括新进程的输入和输出配置的详情 LPPROCESS_INFORMATION lpProcessInformation 调用的结果块;发送新应用程序的进程和主线程的句柄和ID   可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;lpCommandLine参数允许调用者向新应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。 然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为。经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。当准备好时,应该使用ResumeThread() API来启动进程。另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口。这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。 接着是CreateProcess() 函数调用所需要的三个通常使用缺省值的参数。第一个参数是lpEnvironment参数,指明为新进程提供的环境;第二个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前目录;第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明新应用程序的主窗口的外观。 CreateProcess() 的最后一个参数是用于新进程对象及其主线程的句柄和ID的返回值缓冲区。以PROCESS_INFORMATION结构中返回的句柄调用CloseHandle() API函数是重要的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止之前的任何未释放的资源。 2. 正在运行的进程 如果一个进程拥有至少一个执行线程,则为正在系统中运行的进程。通常,这种进程使用主线程来指示它的存在。当主线程结束时,调用ExitProcess() API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程。当进程正在运行时,可以查看它的许多特性,其中少数特性也允许加以修改。 首先可查看的进程特性是系统进程标识符 (PID) ,可利用GetCurrentProcessId() API函数来查看,与GetCurrentProcess() 相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。其他的可显示当前进程信息的API函数还有GetStartupInfo()和GetProcessShutdownParameters() ,可给出进程存活期内的配置详情。 通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName() 和GetCommandLine() ,可以给出用在CreateProcess() 中的参数以启动应用程序。在创建应用程序时可使用的另一个

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值