按照惯例,来张图片,其实这图片和我们要写的完全没有关系,仅仅是个装饰品,放上去纯粹是以为以前也放了,强迫症。
今天是老刘的周年庆没课,所以没事干就总结一下过去的基础(感觉好严肃,实际上纯粹是闲的单疼)
以我的风格这么正常的讲话肯定不行啊~太没格调了~(话说格调一词来的就没有格调感)
所以,你看连这格式都那么随便飘逸,东写一下西写一下,完全不管界面的感受,连断句标点符号都只使用 “,”。
好,废话不多说开始行动...................................。
哈哈,你觉得马上要开始了?怎么可能,连奥观海同志都知道先酝酿一下气氛(话说这得底下有人才行,我这是给谁看???)
以下是他的原话:
好吧,让我用更严肃的内容来给今晚收尾。 我想感谢华盛顿媒体团,我要感谢卡罗尔所做的一切。
大家都知道,新闻自由是我们民主的核心,并且.............................
奈~~么有啦,我是逗你们玩的,你们知道我肯定要提川普的!!
拜托~~ 怎么可能就这样结束???拜托!! !
虽然他今晚的缺席让我有些受伤(好萌^-^)
我们上次玩的那么开心
而且这事令人惊讶,你有一屋子的记者,明星,摄像机,他竟然会拒绝??是不是他觉得这晚宴太低档了??
他不来的话能去干什么呢???
他会不会正在家吃着川普牛排??然后在推特上喷默克尔呢?他究竟在干嘛??
共和党建制派不敢相信川普使他们最有希望的党内提名,难以置信 令人震惊。
他们说川普缺少当总统的外交经验,不过老实说,这些年来他一直同各国领导人有接触..............
比如瑞典小姐啊
阿根廷小姐啊
阿塞拜疆小姐啊
(举办世界小姐大赛,比海天盛宴还要牛)
ok,好,不写了,怕过不了毕竟敏感词有点多哈~~。
总之你看,观海同志都那么跳,我...............
我就是普通人,还是别跳了,剑圣死于太跳是教训啊~~。
好,网络稳定了(稳不稳定看我心情),那我们就继续吧。
在Llinux里的命令,有它自己的规则,这里就例句书中有的。
1.命令区分大小写
2.命令 参数 对象 之间有空格
3.短格式和长格式 用- 、-- 用来间隔,但是不是所有的
4.目录是蓝色的,文件是用来看的,目录是用来切换和保存文件的。
5.什么是对象,对象是命令的承受者, wc -l < 0 命令 参数 但0不是对象,他不是命令的承受者。是 操作对象。
6.“”双引号意思是一个整体。如果某个参数里面有空格就可以用。
常用系统工作命令
echo :echo【字符串 | $变量】
把echo后面的内容输出到屏幕上,可以灵活运用。用$提取变量
date :【选项】【+指定的格式】 不需要-、--,用“+ ”
显示系统时间,单敲显示 年 月 星期 { Sun Mar 10 19:11:54 CST 2019} 。
星期天 三月 10号 时区 年
“+%Y”年(y) “+%m”月 “+%d”日 “+%Y-%m-%d”全写在一起。
“+%H”小时 (h显示英文版几月) “+%M”分钟 “+%S”秒 (s全年秒)“+%H:%M:%S”全写在一起。
wget :wget【参数】 下载地址
下载网络文件用的 格式为 wget http://www.baidu.com
wget -d 后台下载,下载到当前所在目录。
wget -p 下载到指定目录
wget -t 最大尝试次数
wget -c 一旦下载中断可以断点续传
wget -P 下载页面所有资源,包括图片、视频等
wget -r 递归下载(?)
ps :ps【参数】
用来显示所有系统进程(静态的)
ps -a显示所有进程,包括其他用户的进程)
ps -u用户以及详细信息
ps -x没有控制终端的进程,系统发起的进程
ps -aux一般这么用
USER进程的所有者 PID进程pid号 %CPU运算器占用率 %MEM内存占用率 VSZ虚拟内存使用量(kb) RSS占用的固定内存量(kb)
TTY所在终端 STAT进程状态 START被启动的时间 TIME实际使用cpu的时间 COMMAND命令名称与参数
top:
动态的显示系统所有进程(动态的)
你觉得下面改写一些东西?你觉得可能吗?那么一大啪啦东西~~自己看书吧。 下一个...
pidof:pidof【参数】【服务进程名称,就是pid号】
用来查看某一个、具体的服务名称
pidof sshd(参数)(不需要-)
kill:kill【参数】【进程pid号】
终止某个指定的pid服务进程
killall:killall【参数】【进程名称】
用来终止一个服务以及对应这个服务的所有进程pid号
killsll sshd
ifconfig:ifconfig【网络设备】【参数】
网卡都没配置些什么???????
uname:uname -a
用来看系统信息、版本等等
Linux localhost 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
平台名称 主机名称 系统内核版本号 系统打包的时间制作系统镜像的时间 架构,x86 64位 协议gun/Linux
uptime:
用来查看系统负载情况,类似top
free:free -h ;free -m(查看内存使用量)
查看内存使用情况
total used free shared buffers cached
Mem: 1.9G 964M 1.0G 9.8M 928K 301M
实际大小 已经使用大小 空余大小 CPU和内存的交互值
who:who【参数】
用来看谁在线,有哪些登录的用户
last:last【参数】
用来查看所有用户的 登录记录,看曾经都谁在线上
history:history -c
用来查看以前执行过的命令,懒人必备
“!数字”就可以执行第 数字号 的命令
sosreport:
收集系统信息,输出诊断文档,给红帽工程师看
pwd:pwd【选项】
用来显示用户当前工作目录,查看你现在在哪,走丢必备技能
cd:cd【目录名称】 “cd / ”
用来切换目录,是切换 目录 不能切换文件!
cd - 返回上一次所在目录。 cd .. 返回上级目录。 cd ~ 回到当前目录的,家目录。 cd ~username 切换到其他用户的,家目录。
ls:ls【选项】【文件】
用来显示当前目录中的文件信息
ls -a参数 查看全部文件。 ls -l参数 查看文件属性、大小等等
“·”号是隐藏文件。 -a 和 -l 都是短格式,所以可以合并:-al
文本文件编辑命令,看文件命令:
cat:cat【选项】【文件】
查看 内容少的 文件
cat -n 可以显示行号
more:more【选项】【文件】
查看 内容多的 文件
head:head【选项】【文件】
看文件前几行
head -n 5(几行) 文件
tail:tail【选项】【文件】
看文件后几行,同时还能实时的刷新文件
tail -n 5 文件 看文件 tail -f 刷新文件
tr:tr【原始字符】【目标字符】
用来替换文本文件中的字符,就像word里的替换功能。但一般和 | 管道符一起用
例子:
cat anaconda-ks.cfg | tr [a-z] [A-Z]
文本文件
翻译: 查看一个 ana文件 通过管道符交给 tr 处理,把a-z替换成A-Z,变大写。
wc:wc【参数】
用来统计文本的行数、字数、字节数
wc -l 只显示行数。 wc -w 只显示单词数。 wc -c 只显示字节数
stat:
用来看 文件的 时间
Access: 2019-03-26 21:22:28.888595843 +0800 最后一次访问的时间
Modify: 2019-03-26 21:22:28.888595843 +0800 最后一次修改 文件内容 的时间
Change: 2019-03-26 21:22:28.888595843 +0800 最后一次变更所有者、文件名称、属性、权限的时间
A time。 M time。 C time。
cut:cut【参数】
用于提取文件里 按列 的文本字符
例子:
提取出passwd文件中以冒号(:)为间隔符号的第1列内容
cut -d: -f1 /etc/passwd
命令 冒号的参数 第几列的参数 目标文件
格式: cut -d: -f1 /etc/passwd
diff:【参数】
比较几个文件一不一样,就是找不同
命令 diff --brief
格式: diff -brief a.txt b.txt 是否一样(也可以不加txt) diff -c a.txt b.txt 具体哪不一样
文件目录管理命令:
touch:touch【选项】【文件】
用来创建文件,和修改文件时间
tuoch -a 仅修改读取时间 就是A time。 touch -m 仅修改修改时间 就是 M time。 touch -d 读取修改一起修改。
mkdir:mkdir【选项】目录
用来创建单个,空白的目录
mkdir -p 创建递归的具有嵌套式的目录
cp:cp【选项】源文件 目标文件
用来复制文件或目录,就是copy
cp -p 保留原始文件的属性。 cp -d若对象为“链接文件”,则保留该“链接文件”的属性。 cp -r 递归持续复制,用于复制目录。 cp -i若目标文件存在则询问是否覆盖。 cp -a 相当于(p、d、r)
mv:mv【选项】源文件 【目标路径|目标文件名】
用来剪切文件,如果是同一个目录那就相当于重命名
如果剪切目录需要加 -r。 mv -r
rm:rm【选项】文件
用来删除文件或目录
rm -f 强制删除不用询问。 如果删除目录需要加 -r 。 rm -r -f
dd:dd【参数】
也是复制,用来复制文本文件一部分,可选择复制
dd的几个参数要一起用,很特殊。
例子:
dd if=00000 of=99999 bs=1 count=1
命令 输入if=文件名字 输出of=文件名字 快的大小 次数,几块
dd if=00000 of=99999 bs=1 count=1
file:
看文件类型,看是什么文件,不用看颜色猜文件
file 文件 目录
打压缩包和搜索命令牌
tar:tar【选项】【文件】
用来压缩文件 或者 解压文件
-c 打包的意思,多个文件打包到一起。 -x 解压缩包。 -z 用Gzip格式压缩或解压。 -j 用bzip2格式压缩或解压。 -v显示压缩解压过程。 -f 压缩过后的文件名称。
-c 指定解压到的目录。 -t 查看压缩包有哪些内容。 -P 保留原始文件的权限与属性。 -p使用绝对路径来压缩。
例子:
tar -czvf 000.tar.gz /home
命令 参数 压缩后的名字 要打包压缩的目录。 tar是用来压缩目录的,压缩不了文件。
tar -czvf 000.tar.gz /home
tar -xzvf 000.tar.gz 解压文件。
grep: grep【选项】【文件】
用来在文本中执行 关键词搜索
grep -b 将可执行的文件(binary)当作文本文件(text)来搜索。 grep -c仅显示找到的行数。 grep -i忽略大小写。 gerp -n显示行号。 grep -v反向选择(仅列出没有关键词的行)。
格式: grep bash(要搜索的关键词) /etc/passwd(所在目录)
因为是短格式所以可以 : grep -vn bash /etc/passed
输入输出重定向
重定向:将我们原先要输出到屏幕上的内容,写到文件里面,这个操作服务,叫重定向服务。
1.输出重定向:
把命令的输出信息(就是输出到屏幕上的字,例如echo就是输出命令)写到文件中去,就叫做 输出重定向。“>”(大于号)
“>”是清空写入,意思就是覆盖,你写一些东西放到文件里会覆盖曾经的内容。
“>>”追加,这个就不会,会连着文件内容接着写。
“2>”报错的清空写入
“2>>”报错的追加写入
“&>”全部输出重定向,无论正确或者错误内容,全部写入文件。
2.输入重定向:
把文件的内容,导入到命令里面,叫做输入重定向。“<”(小于号)
“<”把文件内容,输入到命令里面。
管道符(任意门,消失柜):
把前一个命令,原本要输出到屏幕上的内容,交给后一个命令进行处理,变成后一个命令的头。
例子:
ls | wc -l
解释:查看当前目录,然后把看到的东西 通过管道符 给 wc -l 来查看有多少行。
通配符:
通俗的说就是代替,该通配符符号,后面的一切内容,不管是什么都显示
通配符:* ? [ ]
例子: *
/dev/sda
/dev/sda* 那么不管 * 后面是什么都显示出来 像/dev/sda1 /dev/sda2 /dev/sda3 。
例子: ?
/dev/sda
/dev/sda? 那么不管 ? 后面是什么、有没有字符,都要显示出来,至少显示出来一个,像/dev/sda1 /dev/sda2 /dev/sda3 。
例子: [ ]
/dev/sda
/dev/sda[1,3,5] 意思是我只想看有没有 1、3、5 如果有就显示,没有就不显示,像/dev/sda1 /dev/sda3 /dev/sda5 。
/dev/sda[1-9]
转义符: “\” 是一个反斜杠
转义符的作用是把操作符 转化成一个 纯粹的一个字符而没有更多的功能,一次只能变一个。
\ 是把他后面的符号变成废物。
‘’单引号,是全局转义。把里面的内容全体转义。
`` 反引号,是执行反引号里面的命令,强制执行。
$(命令):执行括号里面的命令 和``类似
环境变量:
就是系统底层怎么运行,这个需要我们进行设置的,怎么设置怎么运行。
1.按照绝对路径来运行: /bin/uprime 例如这个命令,路径 / 加 命令名称,就会直接运行。
2.命令的别名:如果给命令设置了别名,alias a=echo 那么系统会判断是否是别名,如果是就从系统中搜索别名对应的是什么命令,像这个a 就是echo。
3.内部命令:系统自带的命令,不归我们管就占 1%。
4.外部命令:归我们管,占99%,
变量PATH :用来找命令文件位置,以 : 为间隔。 $ 是变量符号
export 可以将后面的变量变成全局变量。
命令也是文件,当我们敲一个命令时是系统从里面找对应的文件,就像厚黑学里讲的,我们脑子里本来就有,而学习就是把本来就有的提取出来。
VIM:
命令模式。 输入模式。 末行模式。
1.默认模式是命令模式
2.进入编辑模式按 a、i、o ; a后一个, i当前, o下一行。
3.进入末行模式按 :
4.退出任意模式按 ESC
VIM命令:
dd:删除(剪切)光标所在整行。
5dd:删除(剪切)光标所处开始第5行。(5是量词,别误会)
yy:复制光标所在整行。
5yy:复制从光标处开始的5行 (5是量词,别误会)
n: 显示搜索命令定位到的下一个字符串
N:显示搜索命令定位到的上一个字符串
u:撤销上一步的操作 (这个类似word的撤销,超好用,我特乐意用)
p:将之前删除(dd)或复制(yy)过的行粘贴到光标后面。(p 是和 dd yy 一起用的,类似Ctrl+C和Ctrl+V)
末行模式命令:
:w 保存
:q 退出
:q! 强制退出
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令
:整行
:s 替换: 替换当前光标所在的行的第一个字母或单词(你想写什么都行)替换成别的。例如: s/0/1 把0换成1但只对第一个0有用。
:s加上 /g :替换当前光标所在的行的所有字母或单词。 例如:s/0/1/g 把这一行所有的0变成1,所有的。
:%s加上 /g:这个牛,将全文中所有的字母或单词全替换。 例如: %s/0/1/g 把所有的0变成1 (好厉害)。
? 加 字符串:在文本中 从下至上 搜索该字符串。 例如:?1
/ 加 字符串:在文本中 从上至下 搜索该字符串。 例如: /1
编写Shell脚本:
1.shell脚本用vim编辑器编写,格式:vim 123.sh 。 vim是编辑器、123是文件名字随便、 .sh 是shell格式,后缀必须是.sh。
2.shell脚本内容格式:(1)脚本声明,一般是 #!/bin/bash 。这是开头。
(2)脚本的注释,#开始。
(3)就是代码了,由纯命令构成。
接收用户的参数: shell脚本里内置的命令:
echo :别忘了变量用echo
$0 :文件名称
$# :参数的个数;$*参数分别是什么。
$1 $2 $3 $4 $5 则是对应位置的参数的值。
判断接受用户的参数:命令,用[ ] 中括号扩起来(这是格式,测试语句的格式),里面每个字符都有 空格。用来测试文件的 0为成功 1或别的为失败
[ -d ] :测试文件是否为目录型号 (看,里面是有空格的)。
[ -e ] :测试文件是否存在。
[ -f ] :判断是否为一般文件。
[ -r ] :测试当前用户是否有权限读取。
[ -w ] :测试当前用户是否有权限写入。
[ -x ] :测试当前用户是否有权限执行。
“&&”这是逻辑的语,意思是:只有前面的语句执行成功了才会执行下一个语句。
“||”这是逻辑的语,意思是:或
也可以理解成 :&&成功了会怎么怎么样。 ||失败了怎么怎么样。
例子:[ -f /etc/fstab ] && echo "ok" || echo "error"
成功则输出ok 失败则输出error
比对时候用这个 “echo $?” 相当于等号,意思是:是吗?是不是?......
变量可以拿来直接用,例如:[ $USER = root ] 意思是:变量USER 是 root 吗? echo $? 一下 结果是0。所以答:是。
以上是测试字母。
一下是测试数字
测试数字用的命令:
[ -eq ] :测试是否等于
[ -ne ] :测试是否不等于
[ -gt ] :测试是否大于
[ -lt ] :测试是否小于
[ -le ] :测试是否小于或等于
[ -ge ] :测试是否大于或等于
例子:
[ 5 -gt 10 ] echo $? 1 。 翻译 5是否大于10啊 测一下 1 答:不大于10
好,做一个能监控内存使用情况的脚本:
free -m | grep Mem | awk '{print $4}'
翻译:首先进入查看内存使用命令,然后通过管道符交给搜索命令,最后通过awk ''大括号print 变量4,变量4是第四列的信息。
完全的脚本:
[ `free -m | grep Mem | awk '{print $4}'` -lt 1024 ] && echo "ok" || echo "stpo"
字符串的比较:
字符串的比较:
[ -z ] :测试判断字符串内容是否被占用。
[ != ] :测试比较字符串内容是否不同。(是不同,不同)
[ = ] :测试字符串内容是否相同。
没什么可说的。
流程控制语句:
1.条件测试语句:就是一条一条,逐一测试,直到失败。
2.循环语句: 需要某个脚本重复完成某个工作。
if: 相当于:如果.....那么......。他有自己相应的格式
then: 可以放后面,但必须加 ; 举例:if [ !-e /media/haha ] ;then
单分支: if
then
fi
举例:if [ !-e /media/haha ] 翻译:如果没有 media/haha 目录 if 开始 fi 结束
then 那么
mkdir -p /media/haha 就创建一个
fi 结束。
双分支:
举例: ping -c 3 -i 0.2 -w 3 $1 &> /dev/null
P3次 间隔0.2秒 每次响应3秒 1号参数 全不进入黑洞
if [ $? -ep 0 ] 如果我们上一条语句结果为0 的话(废话,都进黑洞了)
then 那么
echo "$1 is on-line" 主机在线
else "$1 is off-line" 主机不再线
另外情况
fi 结束
多分支:可以有一万个
举例:
read -p "Enter:" GRADE
用这个命令 读取这个值 给这个变量
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
如果大等于85 和,两边都满足条件 如果小等100
then
那么
echo "Excellent"
输出
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
进行多次判断语句
then
那么
echo "pass"
输出 pass
else
另外,不在以上两种情况。
echo "Fail"
输出
fi
结束
实验时候 输入Enter ,$GRADR是变量它一直在和数字打交道所以不能输入它,read命令的对象是 Enter,读的是这个值。
for条件循环语句:
给一个范围,让它循环,不能给一个或多个,必须是范围不然就失去意义了。
举例:
vim users.txt
文件内容
文件内容
文件内容
read -p "Enter:" PASSWD
用这个命令 读取这个值 给这个变量
for UNAME in `cat users.txt`
开始 用它 来 读取这个值
do
然后
id $UNME &> /dev/null
测试用户是否存在 测试它
if [ $? -ep 0 ]
如果
then
那么
echo "$UNAME is exist"
输出
else
如果不存在
useradd $UNAME &> /dev/null
则创建用户 用户的信息 进入黑洞
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
fi
done
结束。(for循环语句结尾是两个)
例子2:
vim ip.txt
192.168.10.10
192.168.10.20
192.168.10.30
for IP in `cat ip.txt` (这个命令
do 和这个命令的下面必须是范围)
ping -c3 -i0.2 -w3 $IP &> /dev/null
if [ $? -eq 0 ]
echo "$IP is on-line"
else
echo "$IP is off-line"
fi
done
while:条件循环语句:
只要条件允许就会一直循环
例子: 解释:
PRICE=$(expr $RANDOM % 1000) 定义一个变量:PRICE,价格。 expr命令,计算后面数字的意思。 %RANDOM变量它会取随机的一个数字。 % 1000 取1000。
TIMES=0 统计我们猜了多少次
取余数的符号
while true 循环;不会终止
do 然后
read -p "Enter:" INT 读取一个变量,然后复制到 INT变量中
let TIMES++ 猜的次数每次加1
if [ $INT -ep $PRICE ] 如果用户输入的$INT值 等于 我们定义的$RANDOM
then 那么
echo "OKOKOKOKOKOK,$TIMES" 输出 okokokok,猜了多少次
exit 0 强制退出
elif [ $INT -gt $PRICE ] 如果用户输入的$INT值 高于 我们定义的$RANDO
then 那么
echo "big" 输出 big
else 两个都不是
echo "low" 输出低
fi
done
如果输入的不是数字,而是字母,空格,回车的话脚本会崩溃,那如何在输入错误之后不崩溃?
那就用到 case 条件测试语句。
case :条件测试语句:
例子: read -p "Enter:" KEY 读取一个变量,然后复制到 KEY 变量中
case $KEY in 判断用户输入的内容
[ a-z ] | [ A-Z ]) a-z 或 A-Z
echo "Zimu" 用户输入是字母,就输出字母
;; 恩......规矩不用管
[0-9])
echo "Shuzi" 用户输入是数字,就输出数字
;;
*) 用来匹配用户写的数字或字母
echo “ERROR” 用户很贱,瞎写错了就提示这个(这也是为什么for崩溃的原因)
esac 结束
计划任务服务程序:
什么是计划任务,说白了就是自动化,设置好时间到点自动运行。
at :只执行一次任务
at -l:查看只执行一次任务的内容
at -c 1 查看具体内容 1 是编号
atrm 1 删除计划任务
例子: at 20:48
at> reboot
at> <EOT> Ctrl D。
长期计划任务:
crond服务名称 crontab工具名称
格式 : 分 时 日 月 星期 命令
例子: 解释:
crontab -e 进入编辑界面
* * * * * * /bin/tar czvf backup.tar.gz /homge/wwwroot 分 时 日 月 星期 命令(命令必须以路径的形式写)
20 3 15 5 每年的5月 15日 3时 20分 执行任务
20 3 * 5 3 每年的5月 星期3 3时 20分 执行任务
20 1 * * 3 每年的每个星期3 1时 20分 执行任务
20 1 * * 1,3,5 每年的每个星期1,3,5, 1时 20分 执行任务
20 1 1-10 * * 每年的每个月1-10日 1时 20分 执行任务
20 1 1-20 1-3 * 每年1-3月的1-20日 1时 20分 执行任务
20 1 */2 * * 每年每隔两天的 1时 20分 执行任务
20 */2 * * * 每隔两个小时 20分 执行任务
0 */2 * * * 每隔两个小时 整 执行任务
* */2 * * * 每隔两分钟 整 执行任务
用户身份与文件权限:
1.老大 国王 root :管理员 UID号码:0 (rm -rf /*)
2.系统用户 :管理一个个的服务,类似国家里的大臣 UID:1-999 (老系统5/6 1-499)
3.普通用户 :老百姓,总有刁民想害朕 UID:1000---......
useradd :useradd【选项】用户名
用来创建普通用户,就是老百姓
useradd 000 创建用户名000
useradd -u 88888 boss 创建一个UID88888 名字 boss
可以指定UID号码
useradd -g 88888 boss 创建一个用户组88888 名字boss
可以指定用户组 必须存在
useradd -d /home/haha hoho 目录名字叫 haha 用户名叫hoho
可以给一个用户设置自己的家目录
groupadd :groupadd【选项】群组名
划分一定的范围来管理用户,就像硬盘分CDEF盘
groupadd 000 添加创建用户组 000
usermod : usermod【选项】用户名
用来修改用户的属性
用户 组 的信息:基本组: 当你创建用户的时候,会自动创建一个同名组叫: 基本组。(只能有一个)
扩展组: 工作需要会有 很多的 扩展组来完成工作。
usermod -u 66666 000 修改000用户的UID号为66666
usermod -G 000 linuxprobe 把用户linuxprobe添加到000用户组里面
-g 基本组
passwd : passwd 【信息】【用户名】
修改用户密码的、过期时间、认证信息等。
passwd 000 修改密码
New password: 提示你输入新密码:...
echo 123456789 | passwd --stdin linuxprobe
解释:用echo输出一串符 通过管道符 交给后面命令,后面命令是用来重置密码的,linuxprobe是用户名 --stdin是专门用来接收新密码的
*{{ 这种方式虽然简单,但是通过history命令可以查到用户的密码,所以不安全 }}*
userdel : 【信息】用户名
用来删除用户
userdel 000 删除用户000(但是不能删干净)
userdel -r 000 删除用户资料加上个人信息,这个彻底。
文件权限与归属:
-:普通文件,能读懂的文本。 d:目录文件。 l:链接文件。 b:块设备文件。 c:字符设备文件。 p:管道文件。
- rw - - - - - - - . 1 root root 1218 Oct 1 2017 anaconda-ka.cfg
所有者信息 所有组信息 其他用户 所有者信息 所有组信息
文件权限
d r w x r - x r - x . 2 root root 6 Oct 1 2017 Desktop(蓝色字)
所有者信息 所有组信息 其他用户 所有者信息 所有组信息
文件权限
文件所有者 文件所有组 其他用户
读 写 执行 读 写 执行 读 写 执行 所有者 - 所有组 = 其他用户(很简单)
字符 r w x r w x r w x 000禁止任何访问
数字 4 2 1 4 2 1 4 2 1 777所有人都可以访问
在目录上的权限:r,读取目录内文件列表的权限。 w,在一个目录内新建删除重命名文件的权限。 x,进入切换目录的权限。
在文件上的权限:r,读取文件内容的权限。 w,写入修改文件内容的权限。 x,执行文件的权限,例如脚本。
chmod: chmod 【参数】权限 文件或目录名称
用来设置文件或目录的权限
chown:修改用户所有者或组的命令
格式:chown 所有者 : 所有者 文件名称
chmod:修改权限的
格式:chmod 权限 文件名称
例子:chmod 654 anaconda-ks.cfg
特殊权限(一般权限的扩展):
SUID:
将我们文件的执行者,临时 获取所有者的身份。普通用户临时获得管理员权限。
SUID : chmod u+s 文件
SGID:
让我们的用户临时拥有用户组的权限
SGID :chmod g+s 文件
1:先进入普通用户
cd /home
mkdir hahaha
2:给普通用户一个高级权限,好让它进行写入操作
chmod -RF 777 hahaha/
chmod -R g+s hahaha/
3. 这样之后,在这个home组里新建的任何文件的所属组都会变成上一级目录。
SBIT:
保护位(粘滞位)
用来确保只能用户自己删除自己的文件,不让别人删除
suid=4 sgid=2 sbit=1
SBIT: chmod o+t 文件
s 小写 s t
rwx:代表它有suid权限 rwx:代表它有sgid权限 rwx:代表它有sbit权限
4 2 1
S 大写 S T
rwx:代表它之前没有suid权限 rwx:代表它之前没有sgid权限 rwx:代表它之前没有sbit权限
特殊权限是写到 权限前面的 :
例子: 第一步. 5 432 第二步 5 432 为什么是大写,因为第一步里面是-是没有的意思所以第二步是大写
r---wx-w- r-S-wx-wT
例子2:第一步. 5 777 第二步 5 777 因为原先位置有字母,所以是小写。
rwx rwx rwx rws rwx rwt
文件的隐藏权限:
命令: chattr 和 lsattr
chattr + 权限 文件 (增加隐藏权限)
- 权限 文件 (删除隐藏权限)
例子:chattr +a haha 给haha文件加一个隐藏权限
chattr +i haha 给haha文件加一个隐藏权限
lsattr 文件 (查看文件隐藏权限)
例子:lsattr haha 查看haha文件隐藏权限
文件访问控制:facl (file access contorl list)
可以精准的控制谁谁能进不能进
setfacl: setfacl【参数】文件名称
setfacl -Rm 文件 -R对目录操作 -m修改意思
例子:mkdir 111
chmod -R 000 111
setfacl -Rm u: u:对于某个人
好铺垫完了,下一步
useradd zhangsan
useradd lisi
exit
好创建完用户了,下一步
setfacl -Rm u:zhangsan:rwx /111
这样就单独为张三开通绿色通道了而李四就滚蛋了。
getfacl:
如果忘了某个目录内哪些文件有哪些权限就用它查看。
例子:getfacl 111 查看111目录内的文件权限
user:zhangsan:rwx 张三 rwx
还有一个小细节,如果用setfacl精准设置文件权限的话,用ls -ld 111看目录时,权限位置最后面的 . 会变 + 。
su命令和sudo服务
su : 用来切换用户的 退出回到原先位置用 exit
su 用户名 (切换用户但保留当前用户环境变量信息)
su - 用户名 (完全变更身份的作用,包括环境变量信息)
切换到普通用户身份后 #变$ 号
sudo: 把特定命令的执行权限给指定用户
不想给密码,又想让小弟干活,但小弟权限又不足,这个情况就用sudu服务
例子:
首先新建用户
:useradd zhangsan
useradd lisi
exit
visudu 先编辑sudu
:set un 显示行号(这一步没用,但不用不行啊)
98行是:root ALL=(ALL) ALL root是名字;ALL是谁的意思,是指谁过来运行命令还可以写IP地址,ALL的话意思就是所有人都可以;(ALL) 是指以什么身份,可以使root或者普通用户ALL的话意思是所有身份都行;
第三个ALL是可以使用的命令,这个必须限制要不然就凉凉了。
第99行 (第150行是个高危BUG不知道为什么)
zhagnsan ALL=(ALL) /usr/bin/cat , /usr/sbin/reboot zhagnsan 可以是任何人=(以任何的身份) 使用:cat , 使用:reboot
好,设置结束,试验一下。 /etc/shadow : 是放密码的文件
su - zhangsan
ls -l /etc/shadow
cat /etc/shadow
你是看不了 沙豆 文件的,你不是管理员
sudu cat /etc/shadow
你只需要输入 张三 的密码就行了,不用输入管理员密码了
这样 sudu 服务就比较牛X了。让老百姓变国王。
查找命令的路径:对,命令还有路径, 本·拉登还有家呐.....
whereis 命令:查找命令
例子:whereis cat whereis reboot
cat: /usr/bin/cat reboot: /usr/sbin/reboot
以后还会继续更,虽然在这里我只是普通用户不是root,但毕竟作为博主我还是有在编辑的权限的,好,( ^_^ )/~~拜拜祝老刘生意越来越红火!~。