一、登录时忘记root密码怎么办?(进入单用户模式)
世界上最遥远的距离不是我站在你的面前你却不知道我爱你,而是当你打开了电脑,却忘记了密码。没错,我就遇到了这种情况,明明上一秒设置的密码,下一秒就忘记了。于是我就只好求助于万能的度娘,下面是centos7忘记密码的方法,反正我是成功了,以下:
首先重启我们的虚拟机,进入这个页面时,快速的按下e键
然后进入到这个界面,在linux16行中,将ro这一行改为rw init=/sysroot/bin/sh,然后按ctrl+x进入单用户模式,
接下来使用命令系统:"choot /sysroot",重置密码:"passwd root",更新selinux信息:"touch /.autorelabel",最后重启即可,密码修改完成。
二、关于软链接和硬链接的区别
硬链接就是同一个文件使用了多个别名(它们有共同的inode),硬链接可由命令link或ln创建,由于硬链接是有着相同inodo号仅文件名不同的文件,因此删除一个硬链接文件并不影响其他有相同inodo号的文件。硬链接不能对目录进行创建,只可对文件创建。
软链接也叫符号链接,与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名指向。软链接就是一个普通文件,只是数据块内容有点特殊。ln -s表示创建的是软链接。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接就变成的死链接。
三 IO重定向及管理
1. 什么是IO重定向?
linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2;一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。对于任何一条linux 命令执行,它会是这样一个过程:
一个命令执行前,先会准备好所有输入输出,如果这个时候出现错误,命令将终止,不会执行。这些默认的输出,输入都是linux系统内定的,我们在使用过程中,有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了。
2. 可用于输入的设备:文件
键盘设备、文件系统上的常规文件、网卡等;
可用于输出的设备:文件
显示器、文件系统上的常规文件、网卡等;
程序的数据流有三种:
输入的数据流:<-- 标准输入(stdin),键盘;
输出的数据流:--> 标准输出(stdout),显示器;
错误输出流: -->错误输出(stdeer),显示器;
fd: file descriptor ,文件描述符
标准输入:0
标准输出:1
错误输出:2
3. linux shell下常用输入输出操作符是:
1.1. 输出重定向:>
特性:覆盖输出
输出重定向:>>
特性:追加输出
# set -C
禁止覆盖输出重定向至已存在的文件;
此时可使用强制覆盖输出:>|
# set -C
关闭上述特性
错误输出流重定向:2>,2>>
将正确输出和错误输出放入到不同的文件中:
将正确输出转换为错误:1>&2
将错误输出转换为正确:2>&1
合并正常和错误输出流:
&> , &>>
或 COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
特殊设备:/dev/null (黑洞,将不在显示)
():合并多个程序的STDOUT
注意:()的优先级大于>,而>的优先级大于;
2.2. 输入重定向:<
tr命令:转换和删除字符
tr[OPTION]...SET1 [SET2]
把输入的数据当中的字符,凡是在SET1定义范围内出现的通通对位转换为SET2出现的字符。
-c 取字符集的补集
-d 删除所有属于第一字符集的字符
-s 把连续重复的字符以单独一个字符表示
-t 将第一个字符集对应字符转化为第二字符集对应的字符
用法1:
tr SET1 SET2 < /PATH/FROM/SOMEFILE
tr -d SET1 < /PATH/FROM/SOMEFILE
(注意:不改原文件)
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印 )字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
让我们来详细的看一下tr命令:
那么看一下\t和\v
\t
\v
3.3 多行重定向:使用“<<终止词”命令从键盘把多行重导向给STDIN
注意:标准输入的重定向后跟的是一个文件。
4.4 管道
| 将正确结果重定向给下一条命令
2>&1 | 或 |& 全部结果重定向
Linux系统中的命令可以将标准输入读取数据,还能将这些数据送到标准输 出中去,这种功能被系统进一步的利用,从而产生出一种新的特性,称之为管道符“|”,这个符号可以将一个命令的标准输出管道为另外一个命令的标准输入。
需要注意的是管道符的使用有两个条件:
1、管道命令只能处理前一个命令的标准输出,而不能处理标准错误;
2、管道命令右边命令必须能够接收标准输入。
tee 命令:
tee命令的作用像字母T一样,很形象的表示了它的功能:它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中,在输出到文件的同时,也把信息显示到屏幕上输出。
COMMAND | tee/PATH/TO/SOMEFILE (保存且显示)
-a 存在,不覆盖
四、用户组和权限管理
1. linux用户和组管理
安装上下文:进程以发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限。
为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统,因此称为系统用户。
2. groupadd :添加组
-g GID:手动自定GID,默认是上一个组的GID+1
-r :创建系统组
groupmod :修改组属性
-g :修改GID
-n :修改组名
groupdel :删除组
useradd :创建用户
-u :指定UID
-g :指定基本组ID,但此组要事先存在
-G :指明用户的附加组,多个组之间用逗号隔开
-c :指明注释信息
-d :以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件。
-s :指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
-r :创建系统用户
(注意:创建用户时的诸多默认设定设置文件为/etc/login.defs)
useradd -D :显示创建用户的默认设置
useradd -D 选项:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中
usermod命令:修改用户属性
usermod [选项] 登录
-u :修改用户的ID为此处指定的新ID
-g :修改用户所属的基本租
-G :修改用户所属的附加组,原来的附加组会被覆盖
-a :与-G一同使用,用于为用户追加新的附加组
-c :修改注释信息
-d :修改用户的家目录,用户原有的文件不会被转移至新的位置
-m :只能与-d选项一同使用,用于将原来的家目录移动为新的家目录