本文共 80995 字,大约阅读时间需要 269 分钟。
第二天重点
bash-4.1$ :修改配置文件 .bashrc 删除.bashrc ,添加就好了[root@centos /home/basher]#ls -a. .bash_logout .bashrc .mozilla.. .bash_profile .gnome2[root@centos /home/basher]# rm /home/basher/.bashrcrm: remove regular file `/home/basher/.bashrc'? y[root@centos /home/basher]#su - basher[basher@centos ~]$bashbash-4.1$ echo $SHELL1、centos6——centos7 相连
ssh @root 172.18.118.243 22screen -S HELPscreen -lsscreen -x HELP2、linux 密码不记得,怎么办第三天重点:
文件名规则:除了斜杠和nul[root@centos7 ~]#rpm -qa |grep man 查看包是否安装
man 中文包安装:mount /dev/cdrom /media 挂载,并安装systemctl start autofssystemctl enable autofsman passwd :进入第五章节 mna -a passwd q ctrl +d[root@centos7 zh_CN]#pwd/usr/share/man/zh_CN[root@centos7 zh_CN]#man -aw ls
/usr/share/man/man1/ls.1.gz
/usr/share/man/zh_CN/man1/ls.1.gz/usr/share/man/man1p/ls.1p.gz[root@centos7 zh_CN]#
centos 7: /etc/man_db.conf
man变量配置文件:MANDATORY_MANPATH /usr/share/man/zh_CN
*****—-------> echo$PAT H: 环境变量
export '$PATH:/app' . /etc/profilecentos 6: /etc/man.conf
-普通文件
d目录文件
[root@centos7 ~]#ll -ld /etc/drwxr-xr-x. 139 root root 8192 May 19 08:57 /etc/b块设备文件
c字符设备文件
[root@centos7 ~]#ll /dev/ttycrw-rw-rw-. 1 root tty 5, 0 May 19 08:47 /dev/tty[root@centos7 ~]#ll /dev/pts/0crw--w----. 1 sun tty 136, 0 May 19 08:50 /dev/pts/0l软链接文件
[root@centos7 ~]#ll /usr/sbin/clocklrwxrwxrwx. 1 root root 7 May 16 13:10 /usr/sbin/clock -> hwclockp管道文件s套接字文件[root@centos7 ~]#ll /run/*.socksrw-rw-rw-. 1 root root 0 May 19 08:47 /run/gssproxy.socksrw-rw-rw-. 1 root root 0 May 19 08:47 /run/rpcbind.sock创建nc -Ul mage.sock 通信加入nc -U mage.sockctrl +d 退出pwd -p :如果是软连接将显示原始目录
[root@centos7 etc]#cd /etc/init.d[root@centos7 init.d]#pwd -P/etc/rc.d/init.d[root@centos7 init.d]#ll /etc/init.dlrwxrwxrwx. 1 root root 11 May 16 13:09 /etc/init.d -> rc.d/init.d相对路径子目录:
[root@centos7 ~]#cd /etc/sysconfig[root@centos7 sysconfig]#cd /etc/sysconfig/network-scripts/^C[root@centos7 sysconfig]#cd network-scripts/[root@centos7 network-scripts]# 路径的切换:上级目录[root@centos7 sysconfig]#cd /etc/sysconfig/network-scripts/mage/[root@centos7 mage]#pwd/etc/sysconfig/network-scripts/mage[root@centos7 mage]#cd ../../**——————>bash /app/txt.sh
****》root/ txt.sh 执行命令[root@centos7 back]#dirname /app/back
/app[root@centos7 back]#basename /app/back back文件名通配符
*:匹配零或多个任意字符?:匹配任意一个单一字符0-9:表示任何数字a-Z:表示所有字母,包括大小写[^linux]:表示不包含l和i和n和u和x[:digit:]:表示任意数字[:lower:]:表示小写字母[:upper:]:表示大写字母[:alpha:]:表示大小写字母[:alnum:]:表示任意字母或数字[:blank:]:表示空格(水平制表符)及TAB[:space:]:表示空格(水平制表符)、回车(垂直制表符)及TAB[:punct:]:表示符号[:print:]:表示可打印字符
-rw-------. 1 root root 1489 May 15 13:25 anaconda-ks.cfg
-/d/l/s/b/c/p 表示文件的类型 rw- --- --- 表示owner,group,other的权限 . 表示该文件有selinux的context标签,可用-Z 详细查看 1 表示硬链接数 root 表示该文件的owner root 表示该文件的group 1495 表示该文件的大小,默认bytes -h以人类可读性显示,则显示具体的单位 May 15 11:23 默认显示为mtime,可使用u或--time=atime来显示atime s 可使用--time=ctime来显示ctime anaconda-ks.cfg 文件名
作业:
1、[root@centos7 app]#ls /app/k[:digit:][:lower:][root@centos7 app]#ls /app/[0-9][0-9][0-9] 2、[root@centos7 app]#ls -d /proc/[0-9][0-9][0-9]3、[root@centos7 app]#ls /app/[[:punct:][:digit:]]/app/8973 /app/987 /app/a+3 /app/a &71qa1 /app/k21a[root@centos7 app]#ls /app/[[:punct:][0-9] /app/8973 /app/987 /app/a+3 /app/a &71qa1 /app/k21a4、[root@centos7 app]#ls m[[:digit:]]xm2x5、[root@centos7 app]#ls [A-Z][0-9][0-9] ls [A-Z][[:digit:]][[:digit:]]A236、[root@centos7 app]#ls [[:lower:]][0-9].confqa13.conf[root@centos7 app]#ls [[:lower:]][[:digit:]].conf qa13.conf7、[root@centos7 ~]#ls [^.]a anaconda-ks.cfg initial-setup-ks.cfg txt.sh8、alias baketc='cp -av /etc/ /app/backupdate +%F
'
10、[root@centos /app]#mkdir -pv /testdir/dir8/{x/{a,b,c},y/{a,b,c}}
[root@centos /app]#mkdir -pv /app/testdir{11,12/dir14,13/dir15} 目录11、[root@centos /app]#mkdir -pv /app/testdir/dir/{9/x/a,10/y/b}mkdir: created directory/app/testdir/dir'<br/>mkdir: created directory
/app/testdir/dir/9'mkdir: created directory /app/testdir/dir/9/x'<br/>mkdir: created directory
/app/testdir/dir/9/x/a'mkdir: created directory /app/testdir/dir/10'<br/>mkdir: created directory
/app/testdir/dir/10/y'mkdir: created directory `/app/testdir/dir/10/y/b' 12、[root@centos /app]#mkdir -pv /app/testdir/dir/{11,12/dir14,13/dir15}
练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录ls /var/l[0-9][[:lower:]]d2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录ls /etc/[0-9][^0-9]3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录ls /etc/[^a-Z][a-Z]4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录ls -d /etc/rc[0-6]5、显示/etc目录下,所有以.d结尾的文件或目录ls -d /etc/.d6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录ls -d /etc/[mnrp].conf7、只显示/root下的隐藏文件和目录ls -d .8、只显示/etc下的非隐藏目录ls -d /etc/*/cp -av /etc/ /app/testdir/backup`date +%F`
实验:
文件改名及备份root@centos7 app]#lsf10.conf.bak f2.conf.bak f4.conf.bak f6.conf.bak f8.conf.bakf1.conf.bak f3.conf.bak f5.conf.bak f7.conf.bak f9.conf.bak[root@centos7 app]#rename conf.bak conf *.bak[root@centos7 app]#lsf10.conf f2.conf f4.conf f6.conf f8.conff1.conf f3.conf f5.conf f7.conf f9.conf[root@centos7 app]#touch f{1..10}.conf
[root@centos7 app]#ls1 f10.conf f2.conf f4.conf f6.conf f8.confbackup2018-05-19 f1.conf f3.conf f5.conf f7.conf f9.conf[root@centos7 app]#rename conf conf.bak f* 批量备份文件2 ls -Z selinux [root@centos ~]#getenforce ^C [root@centos ~]#vim /etc/selinux/config^C[root@centos ~]#3[root@centos ~]#stty -echoctl ————>bashrc 去掉ctrl +c 字符4[root@centos ~]#stat anaconda-ks.cfg File: `anaconda-ks.cfg'Size: 1489 Blocks: 8 IO Block: 4096 regular fileDevice: 802h/2050d Inode: 1051842 Links: 1Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2018-05-19 15:56:07.426235498 +0800 读Modify: 2018-05-15 13:25:14.120999614 +0800 修改Change: 2018-05-15 13:25:20.471999612 +0800 元数据时间4 touch a
stat 刷新时间 ctime touch -a 刷新 a,c 时间 a time touch -c 刷新 a,m 时间mtimeASCII>> utf -8 127位
中国GB2312 16位2^16=65536man 7 ascii 查看 ASCII 表6bc 计算使用obase=2;ibase=1091001 7[root@centos ~]#echo -e "a\n" 换行a[root@centos ~]#echo -e "\007"
7 、? 表示2个字符以上 8、提示符怎么修改原始~/.bashrc 9、[1-36-9] :表示一位数字10、[root@centos ~]#ls [[:blank:]]a b[root@centos ~]#ls [[:space:]]*a b11、
[root@centos ~]#echo -e "aaad d" |tr -d [[:blank:]]aaadd[root@centos ~]#echo -e "aaad d\n" |tr -d [[:blank:]]aaadd[root@centos ~]#echo -e "aaad d\n" |tr -d [[:space:]]
aaadd[root@centos ~]#[root@centos ~]#ls [[:punct:]] 表示包含符号CP 命令软连接[root@centos /app]#mkdir dir2[root@centos /app]#cp /etc/passwd .[root@centos /app]#lsdir2 passwd[root@centos /app]#ln -s passwd mima[root@centos /app]#lltotal 8drwxr-xr-x. 2 root root 4096 May 19 22:21 dir2lrwxrwxrwx. 1 root root 6 May 19 22:22 mima -> passwd-rw-r--r--. 1 root root 1609 May 19 22:21 passwd[root@centos /app]#cp -d mima dir2/[root@centos /app]#cd dir2[root@centos /app/dir2]#lsmima[root@centos /app/dir2]#lltotal 0lrwxrwxrwx. 1 root root 6 May 19 22:23 mima -> passwd 闪烁[root@centos /app/dir2]#touch passwd[root@centos /app/dir2]#lltotal 0lrwxrwxrwx. 1 root root 6 May 19 22:23 mima -> passwd 找到路径-rw-r--r--. 1 root root 0 May 19 22:23 passwd[root@centos /app/dir2]#[root@centos /app]#cp -av * /newapp
dir2' ->
/newapp/dir2'dir2/mima' ->
/newapp/dir2/mima'dir2/passwd' ->
/newapp/dir2/passwd'mima' ->
/newapp/mima'passwd' ->
/newapp/passwd' [root@centos /etc]#du -sh 字节 h
41M 生成一个 bigfile 清空文件[root@centos /app/source]#dd if=/dev/zero of=bigfile bs=1M count=20[root@centos /app/source]#du -sh21Mmkdir source target cp -a source/ target/[root@centos /app/source]#du -sh[root@centos /app/target]# > /app/target/bigfile 清空[root@centos /app/target]#rm -rf 删除cp -f
[sun@centos7 app]$chmod 000 1111
[sun@centos7 app]$lltotal 8----------. 1 sun sun 2234 May 16 14:23 1111-rw-r--r--. 1 sun sun 2234 May 16 14:13 passwd[sun@centos7 app]$cat 1111cat: 1111: Permission denied[sun@centos7 app]$ll -dl /appdrwxrwxrwx. 2 root root 32 May 16 14:23 /app[sun@centos7 app]$cp -f /etc/passwd 1111 [sun@centos7 app]$cat 1111[sun@centos7 app]$ll 1111 -rw-r--r--. 1 sun sun 2234 May 16 14:24 1111[sun@centos7 app]$ll /etc/passwd-rw-r--r--. 1 root root 2234 May 16 13:22 /etc/passwd[sun@centos7 app]$mv 移动并改名
[root@centos7 app]#ls1111 a backup2018-05-16 dir2[root@centos7 app]#mv a dir2/[root@centos7 app]#lltotal 4-rw-r--r--. 1 sun sun 2234 May 16 14:24 1111drwx------. 2 root root 6 May 16 14:34 backup2018-05-16drwxr-xr-x. 2 root root 15 May 16 14:40 dir2[root@centos7 app]#mv dir2/a ./passwd[root@centos7 app]#ls1111 backup2018-05-16 dir2 passwd[root@centos7 app]#删除根下面所有的目录: [root@centos ~]#cd /[root@centos /]# rm-rf *^C[root@centos /]#cd[root@centos ~]#rm -rf /快照:关机快照 内存占用空间硬链接 inode 编号 indoe bitmap block bitmap
[root@centos /app]#ls -i source/fstab 131074 source/fstab[root@centos /app]#ls -i target/1fstab 131074 target/1fstab[root@centos /app]#[root@centos /app]#ln passwd haha 最后一个分区
[root@centos /app]#ls -i 11 haha 11 passwd 131073 source 393217 targetln /etc/passwd /bin/haha
df /etc /dev/sd2
df /bin软链接 :是路径 指针
[root@centos /app]#mkdir source target[root@centos /app]#lssource target[root@centos /app]#cp /etc/passwd source/[root@centos /app]#cd target/[root@centos /app/target]#ln -s ../source/passwd mima[root@centos /app/target]#ll mimalrwxrwxrwx. 1 root root 16 May 16 14:29 mima -> ../source/passwd[root@centos /app/target]#[root@centos ~]#ll -ld /etc/init.d
lrwxrwxrwx. 1 root root 11 May 15 13:14 /etc/init.d -> rc.d/init.d[root@centos ~]#ll -ld /var/maillrwxrwxrwx. 1 root root 10 May 15 13:14 /var/mail -> spool/mail软连接[root@centos /app]#ll /tmp/a/b/c/d/exelrwxrwxrwx. 1 root root 30 May 16 15:23 /tmp/a/b/c/d/exe -> ../../../../../app/1/2/3/4/txt怎么查看软链接真实 路径
[root@centos /var/www]#mkdir /var/www/magetest
[root@centos /var/www]#cd /var/www/magetest[root@centos /var/www/magetest]#vim hello.html[root@centos /var/www/magetest]#ln -s /var/www/magetest/hello.html /var/www/magetest/index.html[root@centos /var/www/mage]#rm -rf index.html [root@centos /var/www/mage]#ln -s hello.html index.html[root@centos /var/www/mage]#lltotal 4-rw-r--r--. 1 root root 9 May 16 15:27 hello.html
lrwxrwxrwx. 1 root root 10 May 16 15:43 index.html -> hello.htmlfile- f 产看文件列表
[root@centos /app]#vim liebiao.txt /etc/grub//etc/passwd/app/txt[root@centos /app]#file -f liebiao.txt /etc/grub/: cannot open `/etc/grub/' (No such file or directory)/etc/passwd: ASCII text/app/txt: ASCII text 查看软连接类型:[root@centos /app]#file -L /etc/system-release
/etc/system-release: ASCII text第4天
3A认证 授权 审计authentication authorization accouting aduitionroot :管理员
Linux 组: groupname gid 管理员组 root otherLinux安全上下文
进程(process) 进程访问资源的权限取决于运行者的身份管理员 (root) /bin/cat (所有用户都能使用) /root/.bashrc判断:1使用工具 2 使用文件 [root@centos ~]#ll /bin/cat-rwxr-xr-x. 1 root root 48568 Mar 23 2017 /bin/cat [root@centos ~]#ll /root/.bashrc-rw-r--r--. 1 root root 206 May 16 16:52 /root/.bashrc zhangsan (1000 uid ,2000gid,3000gid) /bin/cat (rootuid=0,admin=2000) /app/passwd (root,root)组:admin :2000 rw-r--r-- (other) 既不是所有者也不属于组,但是属于other------rwx (zhangsan ,root )/app/passwd 所有者/所有有组---rwxrwx (1000,3000) 所有者没有权限,owner权限生效,组权限没有用!inode 65535 存的inode 对应的id 号Linux组 :有且只能有一个 附加组可以有多个/etc/passwd man 5 passwd/etc/shadow/etc/group/etc/gshadowpasswd :[root@centos7 ~]#openssl rand -base64 30 |head -c30 j+6PERTSQf/tpkuGiHUQS2+5BLgMG3加密算法: sha512位
root uid=0张三 uid=0 通过 /etc/passwd 查看uidroot
[root@centos ~]#useradd -s /sbin/nologin user2 创建系统 /sbin/nologinuseradd: user 'user2' already exists[root@centos ~]#usermod -s /sbin/nologin user2 [root@centos ~]#su - user2This account is currently not available.[root@centos ~]#ls -I "[^.]*" -a 去掉点的文件忽略不带点的文件
. .bash_profile .dbus .gnupg .lesshst .rnd.. .bashrc .esd_auth .gtk-bookmarks .local .ssh.abrt .cache .gconf .gvfs .nautilus .tcshrc.bash_history .config .gnome2 .ICEauthority .pulse .viminfo.bash_logout .cshrc[root@centos ~]#ll /etc/shadow
----------. 1 root root 2046 May 22 10:13 /etc/shadow 修改密码为啥没有读写权限cat /etc/ shadow 1 date +%s 1970 _2018年秒vim /etc/shadow[root@centos ~]#chage -l sun
Last password change : May 15, 2018Password expires : neverPassword inactive : neverAccount expires : neverMinimum number of days between password change : 2Maximum number of days between password change : 99999Number of days of warning before password expires : 7 date -s 设定时间[root@centos ~]#echo centos |passwd --stdin sunhistory 取消minix mum date :
[root@centos ~]#date -s '2018-5-25' 2天时间内不能修改密码
Fri May 25 00:00:00 CST 2018[root@centos ~]#su - sun[sun@centos ~]$passwd 普通用户不能添加user名 超级用户切换密码,不要验证,普通用户切换密码需要验证maximum date :
date -s 设定时间[root@centos ~]#echo centos |passwd --stdin sunhistory 取消HISTCONTROL=ignorespace 取消历史和空格文件echo $HISTCONTROL nano ~/.bash_profile 配置文件 history echo centos |passwd --stdin sun[root@centos ~]#取消时间:
warning 时间[cao@centos ~]$su - sun warning 时间Password: Warning: your password will expire in 6 daysexpires time 过期时间 过了会让你修改密码
[sun@centos ~]$su - sunPassword: You are required to change your password immediately (password aged)Changing password for sun.(current) UNIX password:账户过期时间:Password: Your account has expired; please contact your system administratorsu: incorrect password例如:公司外来一个员工,如果2018年月sun底离职date 显示当前时间:date -s '2018-12-29' 距离1970年时间 -2018-12-29多少天
clock -s 硬件时间设置软件时间 date +%s 2018-12-29时间 S秒 转换成天 《天》[root@centos ~]#chage -l sunLast password change : Dec 30, 2018Password expires : Jan 19, 2019Password inactive : Jan 26, 2019Account expires 账户过期时间 : Dec 29, 2018Minimum number of days between password change : 2Maximum number of days between password change : 20Number of days of warning before password expires : 7Your account has expired; please contact your system administra
passwd sunpasswd: all authentication tokens updated successfully.chage 时间
查找用户:[root@centos ~]#chage sunChanging the aging information for sunEnter the new value, or press ENTER for the defaultMinimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2018-05-22]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
man 5 chage
pwconvpwunconvgrpconvgrpunconv群组信息非常重要
主组:放在/etc/passwd 例如cao 501 主组编号:uid cao :cao 用户主组是:查看主组501,/etc/group cao:x 501:辅助组成员,谁是cao的辅助组,辅助组成员,谁把cao 当成辅助组group cao:x:501:root,sun (把cao 当作辅助组)[root@centos ~]#id caouid=501(cao) gid=501(cao) groups=501(cao)[root@centos ~]#id sunuid=500(sun) gid=500(sun) groups=500(sun),501(cao)[root@centos ~]#[root@centos ~]#iduid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023原因:添加到附加组,必须重新登陆否则,就是上面的结果重新登陆获取最新的消息[root@centos ~]#id rootuid=0(root) gid=0(root) groups=0(root),501(cao)gpasswd :修改组mima
passwd :修改密码 uid添加附加组成员: usermod -G mage root (把马哥当作附加组)usermod -G mage sun添加附加组:[root@centos ~]#usermod -aG cao sun 追加[root@centos ~]#usermod -aG root sun[root@centos ~]#groups sunsun : sun root caonewgroup 切换主组gpasswd opts 设置组mima[sun@centos ~]$newgrp opts
/etc/gshadow 添加组管理员:man gpasswd
gpasswd -A [root@centos ~]#gpasswd -A sun opts 把sun 当作opts 的管理员[root@centos ~]#gpasswd
Usage: gpasswd [option] GROUP外部命令Options:-a, --add USER add USER to GROUP-d, --delete USER remove USER from GROUP-h, --help display this help message and exit-Q, --root CHROOT_DIR directory to chroot into-r, --delete-password remove the GROUP's password-R, --restrict restrict access to GROUP to its members-M, --members USER,... set the list of members of GROUP-A, --administrators ADMIN,...[root@centos ~]#usermod -G opts mage root 管理员
[sun @centos ~]# gpasswd -a mage opts 针对/etc/gshadow admin 管理员用户useradd usermoduserdel[root@centos ~]#groupadd admingroup[root@centos ~]#useradd -u 2000 -g admingroup mage3
[root@centos ~]#id mage3[root@centos /home]#useradd -g cao mage50 主组cao 用户mage50[root@centos /home]#id mage50uid=2006(mage50) gid=501(cao) groups=501(cao)[root@centos ~]#cat /etc/default/useraddGROUP=100
HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes不创建家目录:useradd -M magetest 相当于删除家目录[root@centos ~]#useradd -N a[root@centos ~]#getent passwd aa:x:2007:100::/home/a:/bin/bash不创建家目录:useradd -M magetest 相当于删除家目录
[root@centos /home/magetest]#cp -a /etc/skel/.[^.]* .()当前工作目录 拷贝目录注意王老师: cp -r /etc/skel /home/haha 把skel 目录拷贝病命名成haha目录[root@centos /home]#cd /etc/skel/ 创建用户的配置文件全部在这里[root@centos /etc/skel]#lswelcometomage[root@centos /etc/skel]#ls -a. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla welcometomage[root@centos /home]#chown -R magetest.magetest magetest/ 这是所有者
[root@centos /home]# chmod -R 700 magetest/ 这是权限[root@centos /home]#cd /var/spool/mail root 邮箱
vim /etc/default/useradd[root@centos /var/spool/mail]#useradd -D -s /bin/sch[root@centos /var/spool/mail]#user创建批量用户newusers passwd 格式文件 userdel -r 删除 创建 userlist.tst> newusers userlist.tstchpasswd 批量修改用户命令 chpasswd < piliang,txt vim piliang,txt mage1:cnetos mage2:rehat (用户不创建密码),批量创建不同的密码组
groupaddgroupmodgroupdel密码批量修改mima :没有整理
重点::切忌:端口号
禁止root远程登陆工作不能root登陆提高实力 :客户端的配置文件是/etc/ssh/ssh_config
服务端的配置文件是/etc/ssh/sshd_config[root@centos ~]#vim /etc/ssh/ssh_config第五天:整理重点
文件目录加执行权限
X:目录代表文件可以进入x:代表文件可以执行[root@centos /app]# chmod a-x * 去掉目录下所有的权限[root@centos /app]# chmod a+X * 只给目录添加权限
[root@centos /app]#ll f1
-rw-r--r--. 1 root root 0 May 25 18:10 f1[root@centos /app]#chmod g+wx f1-rw-rwxr--. 1 root root 0 May 25 18:10 f1[root@centos /app]#chmod --reference f1 f2
[root@centos /app]#ll f1 f2-rwxr-xr-x. 1 root root 0 May 25 18:10 f1-rwxr-xr-x. 1 root root 0 May 25 19:50 f2经典案例:1@@@@@@@@@@@@
[liubei@centos /app]$lltotal 4drwxr-x---. 3 liubei shuguo 4096 May 25 20:15 house[liubei@centos /app]$ chmod 000 house/ 所有者可以更改自己文件的权限[liubei@centos /app]$lltotal 4d---------. 3 liubei shuguo 4096 May 25 20:15 house**文件的权限只有所有人和root 可以更改wx当目录有权限w 时候,文件不可读,但是可以删(文件只有读权限)解释,一个笔记本,上了一把锁,你不能用,但是可以删掉3@@@@@@@@@@@@@@@@
guanyu@centos /app/house]$cp /etc/passwd letter.txt cp -f [guanyu@centos /app/house]$cp /etc/passwd letter.txt 覆盖文件要有写权限,所以才可以覆盖cp: cannot create regular file `letter.txt': Permission denied cp -f 就是当文件没有写 权限, CP -f 可以删除也可以创建inode 不变数据删除并重命名替换删除释放 inode c重新释放,并填充当 目录只有X 权限时 ,可以进去,可以访问目录下的文件~/.bashrc 将umask保存起来特殊权限:
[root@centos ~]#stat /usr/bin/passwdFile: `/usr/bin/passwd'Size: 30768 Blocks: 64 IO Block: 4096 regular fileDevice: 802h/2050d Inode: 794284 Links: 1Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2018-05-17 04:31:10.011107221 +0800Modify: 2015-11-24 00:30:08.000000000 +0800Change: 2018-05-17 04:26:19.014106977 +0800suid 特殊权限:
[root@centos /app]#cp /bin/touch .[root@centos /app]#chown liubei touch [root@centos /app]# mv touch liubeituch[root@centos /app]#su - guanyu[guanyu@centos ~]$cd /app[guanyu@centos /app]$touch gyfile1-rw-rw-r--. 1 guanyu guanyu 0 May 25 22:31 gyfile1[guanyu@centos /app]$./liubeitouch gyfile2-rw-rw-r--. 1 guanyu guanyu 0 May 25 22:33 gyfile2[root@centos /app]#chmod u+s /app/liubeituch [root@centos /app]# su - guanyu[guanyu@centos ~]$cd /app[guanyu@centos /app]$./liubeituch gyfile3 -rwsr-xr-x. 1 liubei root 52560 May 25 22:29 liubeituchsuid : 对于可执行的二进制文件作用了suid权限之后,任何人在执行该文件时,可临时拥有其所属人的权限-rwsr-xr-x. 1 liubei root 52560 May 25 22:29 liubeituch
为什么脚本不能suid
脚本随意改脚本是root 里面是rm -rf / 删除跟了漏洞bug [root@centos /app]#vim txt.sh -rwxrwxrwx. 1 root root 47 May 25 22:55 txt.sh[root@centos /app]#chmod u+s txt.sh-rwsrwxrwx. 1 liubei root 47 May 25 22:55 txt.sh[root@centos /app]# su - guanyu [guanyu@centos ~]$cd /app[guanyu@centos /app]$./txt.sh hello world[guanyu@centos /app]$ll file10-rw-rw-r--. 1 guanyu guanyu 0 May 25 22:58 file10对于二进制没有效果:
sgid对于二进制程序可以正常使用[guanyu@centos /app]$which mkdir/bin/mkdir[guanyu@centos /app]$cp /bin/mkdir /app/liubeimkdir[guanyu@centos /app]$ll liubeimkdir
-rwxr-xr-x. 1 guanyu guanyu 50056 May 25 23:14 liubeimkdir[root@centos /app]#chgrp liubei /app/liubeimkdir
[root@centos /app]#ll liubeimkdir -rwxr-xr-x. 1 guanyu liubei 50056 May 25 23:14 liubeimkdir[root@centos /app]#chmod g+s /app/liubeimkdir [root@centos /app]#su - guanyu [guanyu@centos ~]$mkdir guanyundirdrwxrwxr-x. 2 guanyu guanyu 4096 May 25 23:17 guanyundir[guanyu@centos /app]$./liubeimkdir guanyudir2
[guanyu@centos /app]$ll
total 56drwxrwxr-x. 2 guanyu liubei 4096 May 25 23:18 guanyudir2sgid 目录
对与目录作用了sgid权限后,任何人在该目录下创建的文件的所属继承目录的所属组1、创建目录所属组
2、g+s 该目录下所有文件继承了所属组的权限所有人只能改权限
不能改所有人 刘备是所有者 chown cao house/mkdir housechmod 770 house/ 所有者的权限只能root和所有者可以改chgrp shuguo wcchmos g+s wc /cd /wctouch f1 属于所属组sticky
对于目录作用了sticky 之后,该目录下的文件及子目录,仅其所属人和目录的所属人及root才能删除[root@centos /app]#chmod o+t house/[root@centos /app]#lltotal 4drwxrwx--T. 6 liubei shuguo 4096 May 26 08:49 house[root@centos /app]#su guanyu[guanyu@centos /app/house]$ touch guanyufiel[zhangfei@centos /app/house]$rm zhangfeifile 不能删除:只有木有所有人可以删除[liubei@centos /app/house]$rm -f liubeifile
[liubei@centos /app/house]$touch liubeifile[liubei@centos /app]$ll
total 4drwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 house[liubei@centos /app]$mkdir a[liubei@centos /app]$mkdir b[liubei@centos /app]$ lltotal 12drwxrwxr-x. 2 liubei liubei 4096 May 26 10:34 adrwxrwxr-x. 2 liubei liubei 4096 May 26 10:34 bdrwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 house[liubei@centos /app]$chmod a-x a [liubei@centos /app]$chmod u+s a b[liubei@centos /app]$chmod g+s a b[liubei@centos /app]$chmod o+t a b[liubei@centos /app]$lltotal 12drwSrwSr-T. 2 liubei liubei 4096 May 26 10:34 adrwsrwsr-t. 2 liubei liubei 4096 May 26 10:34 bdrwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 housechattr +a 不可修改,可以追加不能删除chattr +i 什么也不能做,只能读acl 生效顺序:所有者,自定义用户,自定义组,其他人
查看ACL 是否挂载[root@centos /app]# tune2fs -l /dev/sda3 |grep aclDefault mount options: user_xattr acl[root@centos /app]#fdisk /dev/sda 创建分区
[root@centos /app]#partx -a /dev/sda 更新,让内核重新读取[root@centos /app]#ls /dev/sda6/dev/sda6[root@centos /app]# tune2fs -l /dev/sda6 |grep acl[root@centos /app]#tune2fs -o acl /dev/sda6
[root@centos /app]#tune2fs -l /dev/sda6 |grep optionacl 挂载
[root@centos /app]# mount /dev/sda6 /mnt/卸载[root@centos /app]#umount /mnt/ 即使root有權限:app cd house/ACl
未來創建:[root@centos /app]#setfacl -m d:u:liubei:rwx house/
當前子目錄[root@centos /app]#setfacl -Rm u:liubei:rwx house/acl 壓縮[root@centos /app]#tar cvf house.tar house/-rw-r--r--. 1 root root 10240 May 27 14:48 house.tar
ACL 備份:tar cvf house.tar house 備份數據getfacl -R house >acl.txt ACL 备份[root@centos /app]#tar -xvf house.tar -C /var/tmp 解压[root@centos /var/tmp]#setfacl --restore acl.txt 恢复数据cp acl.txt /var/tmp f复制[root@centos /app]#cp acl.txt /var/tmp/ 复制[root@centos /app]#mkdir -pv testdir/dir
[root@centos /app]#setfacl -Rm u:liubei:rwx /testdir/dir/[root@centos /app]#setfacl -m d:u:liubei:rwx /testdir/dir/[root@centos /app]#tar -cvf dir.house testdir/dir/ 压缩[root@centos /app]#tar -xvf dir.house testdir/dir/ 解压[root@centos /app]#getfacl -R testdir/dir/ > acl.txt [root@centos /app]#getfacl -b testdir/dir/[root@centos /app]#setfacl --restore dir.house第六天
vim 编辑器 整理重点
vim 没有正常关掉怎么回复[root@centos /app]#vim fstab 打开watch -n 0.1 ls -a 监控
[root@centos /app]#vim -r fstab 恢复 数据或者 R 恢复数据之后删除
[root@centos /app]#rm -f.fstab.s [root@centos /app]#watch -n 0.1 ls -AlEvery 0.1s: ls -Al Sat May 26 20:53:17 2018egrep 正则练习
1、[root@centos ~]#cut -d: -f1,7 < /etc/passwd |egrep "\<root|mage|wang\>" 2、[root@centos ~]#cut -d: -f1,7 < /etc/passwd |egrep -w "\<root|mage|wang\>" 2、[root@centos /app]#cat functions | grep -o "^[[:alpha:]+_].()"3、[root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o "[^/]{1,}/?$"functions[root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o "[^/]{1,}/?" rc.d/init.d/functions4、[root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o '/./'6、0-9 [1-9][0-9] 1[0-9]{2} 2[0-4][0-9] 25[0-5]
7、[root@centos ~]#ifconfig |egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-9])\>"vimyy
1,3y p 粘贴复制可视化模式
vim -b /app/binary 打开二进制:%!xxd打开16进制 %!xxd -rv 选中V行 y d 结合使用 ctrl +vfirst
next打开多个vim vim -o f1 f2 上下vim -O f1 f2 左右wqall 全盘退出ctrl +w +方向键 可以选择vim ~/.vimrc 设置set nu 加行数set nu set nonu vim 搜索 / h jfskjriwj :set ic 大小写:set ai 上行一样:set list ^i $ 显示符号:set fileformat=unxi:set fileformat=dos
file win.txtvim 作业:
脚本
[root@centos /app]#vim py.sh 解释器 #!/usr/bin/python print "hello world" sha #bang !头文件执行自己:#!/bin/rm -f t.shecho “hello world ”[root@centos /app]# ./t.sh 注释 相当于执行/bin/rm -f t.shecho $SHELL默认就是shell脚本centos 6 默认脚本 :
[root@centos /app]#vim /etc/rc.d/rc.sysinit[root@centos /app]#cat t.sh
#!/bin/rm -f echo "hello world"[root@centos /app]#./t.sh
[root@centos /app/scripts]#vim txt.sh
#!/bin/bashfor n in {1..10};do
if [$n -1e 5];thenuseradd user$nelseuseradd -s /sbin/nologin user$nfidonebash -n 语法
bash -x 调试环境变量
[root@centos /app]#export q=1
[root@centos /app]#env |grep -w ^qq=1set :局部变量 env:全局变量[root@centos /app]#r=1[root@centos /app]#export r=3[root@centos /app]#env |grep -w ^rr=3df 导出磁盘利用率:
[root@centos ~]#df |grep "/dev/sda" |egrep -o "[0-9]{1,3}%"|egrep -o "[0-9]{1,3}"|sort -nr
23151批量处理文件
file-f f1newsgrp passwd (格式)echo u:wang > delacl.txt[root@centos /app]#echo g:opts >>delacl.txt[root@centos /app]#setfacl -X delacl.txt d2[root@centos /app]#echo u:wang:rwx >wang.acl
[root@centos /app]#cat wang.acl u:wang:rwx[root@centos /app]#setfacl -R -M wang.acl d2实验:
root 当Linux没有root了,怎么办!root改成wang 登陆不了了 。从新引导内核删除文件相当于 删除与备份文件rm
mv [OPTION]... -t DIRECTORY SOURCE..alias rm="mv -t /app/bak" 特别重要: [root@centos /app]#rm passwd mv -t /app/bak =rm(定义别名) passwdteels |tee ls.out |tr "\n" " " >ls.txttee 相当于 >重定向 和cat 功能发邮件:群发邮件:练习
1、[root@centos ~]#tr "a-z" "A-Z" < /etc/issue > /tmp/issue.out
2、[root@centos /tmp]#who |tr "a-z" "A-Z" > /tmp/who.out3、[root@centos ~]#mail -s "help" root <<end
发邮件,发脚本邮件给所有人 hellow "wang "4[root@centos ~]#ls -1 | tr "\n" " "5、[root@centos ~]#echo {1..10} |tr " " '+'|bcman 7 ascii6、 tr -d "\015" < win.txt[root@centos ~]#tr -d "\r" < win.txt >linux.txtunix2dos dos2unix 包名:unix2dos 包名7、echo "xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4"|tr -cd '[0-9] ' 8、[root@centos ~]#echo $PATH |tr ":" "\n"9、[root@centos ~]#tr "a-j" "0-9" < txt 替换文本74loo0s3qw123467001234rtw4rt610、[root@centos ~]#cat /etc/centos-release |tr " " "\n" > txt
非常重要::::[root@centos ~]#tr -sc "a-zA-Z" "\n" < /etc/centos-releaseCentOSreleaseFinal除了字母以外全部压缩成换行11、[root@centos ~]#useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gent12、[root@centos ~]#useradd -G admins harry[root@centos ~]#useradd -G admins natasha#useradd -s /sbin/nologin sarah[root@centos ~]#echo centos |passwd --stdin natasha[root@centos ~]#echo centos |passwd --stdin harry
[root@centos ~]#echo centos |passwd --stdin sarah第三周重点内容
脚本:[root@Centos7/app]#./infosystem.sh hello worldThe host is Centos7.4.localdomainThe kernel is 3.10.0-693.el7.x86_64The cpu is Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHzMemTotal: 2031912 kBThe IP is 192.168.137.142[root@Centos7/app]#vim reset.sh
[root@Centos7~]#mkdir bin [root@Centos7~]#mv /app/infosystem.sh ~/bin/ [root@Centos7~]#echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/sun[root@Centos7~/bin]#bash -x infosystem.sh
[root@Centos7~/bin]#bash -n infosystem.sh
变量:
[root@Centos7~]#echo $$ 当前进程:3925[root@Centos7~]#echo $PPID 上级进程:[root@Centos7~]# name=whoami
[root@Centos7~]#echo $name
\S Kernel \r on an \m[root@Centos7~]#cat /etc/issue\S
Kernel \r on an \m[root@Centos7~]#echo "$name"\S
Kernel \r on an \m[root@Centos7/bin]#vim ps.sh
#!/bin/bashname=parentecho "ps.sh:name $name"son.sh[root@Centos7/bin]#vim son.sh
#!/bin/bashname=sonecho "ps.sh:name $name"sleep 100执行结果:[root@Centos7/bin]#chmod +x *[root@Centos7~/bin]# name=test;(echo $name ; name=112;echo $name); echo $name
test112test[root@Centos7/etc]#cd /etc/;pwd
/etc[root@Centos7/etc]#cd [root@Centos7~]#(cd /etc/;pwd)/etc[root@Centos7~]#[root@Centos7~]#(umask 066; touch /app/f1)
[root@Centos7~]#ll /app/f1-rw-------. 1 root root 0 May 27 14:23 /app/f1[root@Centos7/app]#( ls;pwd ) > /app/all.log
[root@Centos7~]#(name=haha;touch /app/$name.bak)
脚本练习
[root@Centos7~/bin]#vim infosystem.sh #Author:sun#Date 2018-5-27 #Description:show system infoecho "hello world"echo "The host ishostname
"echo "The kernel is uname -r
"echo "The cpu is lscpu |grep "Model name:"|tr -s ' ' |cut -d: -f2
"cat /proc/meminfo |head -n1cat /etc/centos-releaseecho "HardWare is lsblk |grep -w sda |tr -s " "|cut -d' ' -f1,4,6
"echo "The IP is ifconfig ens33|grep netmask |tr -s " "|cut -d" " -f3
" [root@Centos7~/bin]#
echo $? 0表示成功[root@centos ~/bin]#i=10
[root@centos ~/bin]#j=10[root@centos ~/bin]#let sum=$i+$j[root@centos ~/bin]#echo $sum20脚本:[root@centos ~/bin]#var=haha;[ -n "$var" ] && echo true ||echo false true[root@centos ~/bin]#unset var[ -n "$var" ] && echo true ||echo false
false[root@centos ~/bin]#var=haha; [[ "$var" =~ ha ]] && echo true || echo false
true=~ 支持正则表达式:[root@centos ~/bin]#var==haha; [[ "$var" =~ h+ ]] && echo true || echo falsetrue[root@centos ~/bin]#var=haha;[[ "$var" =~ h? ]] && echo true || echo falsetrue[root@centos ~/bin]#var=hac;[[ "$var" =~ .. ]] && echo true || echo false
true[root@centos ~/bin]#var=hac;[[ "$var" =~ ^..$ ]] && echo true || echo falsefalse判断文件以sh结尾:执行:[root@centos ~/bin]#filename=f1.sh ;[[ "$filename" =~ .sh$ ]] && echo true ||echo falseIP地址的判断:
[root@centos ~]#ip="172.18.19.11"; [[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ]] && echo true ||echo falseIP地址判断有效性:[root@centos ~]#ip="172.18.19.159" ;[[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo true ||echo false匹配数字全数字:
[root@centos ~]#var=132 ; [[ "$var" =~ ^[0-9]+$ ]] && echo true ||echo false判断正整数:
[root@centos ~]#var=1 ; [[ "$var" =~ ^[1-9][0-9]$ ]] && echo true ||echo falsetrue判断正整数:[root@centos ~]#var=01 ; [[ "$var" =~ ^0[1-9][0-9]*$ ]] && echo true ||echo false判断手机号:
[root@centos ~]#mobile=18512554331; [[ "$mobile" =~ ^1[3456789][0-9]{9} ]] && echo true ||echo falsetrue系统自带的脚本:
[root@centos ~]#vim /etc/rc.d/rc.sysinit 效果如下:echo -en $"\t\tWelcome to "
read -r system_release < /etc/system-releaseif [[ "$system_release" == "Red Hat" ]]; then[ "$BOOTUP" = "color" ] && echo -en "\033[0;31m"echo -en "Red Hat"[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"PRODUCT=$(sed "s/Red Hat (.) release./\1/" /etc/system-release)echo " $PRODUCT"elif [[ "$system_release" == Fedora ]]; then[ "$BOOTUP" = "color" ] && echo -en "\033[0;34m"echo -en "Fedora"[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"PRODUCT=$(sed "s/Fedora (.) \?release./\1/" /etc/system-release)echo " $PRODUCT"elif [[ "$system_release" =~ "CentOS" ]]; then[ "$BOOTUP" = "color" ] && echo -en "\033[0;36m"echo -en "CentOS"[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"判断数字大小:判断是之前是不是数字:
[root@centos ~/bin]#num=10; [ "$num" -eq 10 ] && echo true ||echo false^C[root@centos ~/bin]#[root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo false false[root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo falsefalse[root@centos ~/bin]#num=10; [ "$num" -ne 1 ] && echo true ||echo false true判断变量是否被定义过:
[root@centos ~/bin]#unset var ;[ -v var ] && echo true ||echo false[root@centos ~/bin]#var=" "; [ -v var ] && echo true ||echo false查看颜色:
echo -e "\033[1;5;31;43mHi,dangerous!\033[0m"vim /etc/profile.d/env.sh 配置环境查看目录是否存在
[root@centos ~/bin]$[ -d /app/backa ] ||mkdir /app/backa && cp /etc/passwd /app/查看文件是否存在[root@centos ~/bin]$[ -e /etc/passwd ] && echo true || echo false
true读写权限:
[root@centos ~/bin]$[ -r /etc/passwd -a -w /etc/passwd ] && echo ture
ture[root@centos ~/bin]$[ -r /etc/passwd -o -w /etc/passwd ] && echo ture ture实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见
方法一:#!/bin/bashread -p "Please Enter your username: " nameecho -n "Please Enter the password for $name: " stty -echoread passwordstty echoechouseradd $nameecho $password |passwd --stdin $name &> /dev/nullecho "$name created"方法二:
#!/bin/bashread -p "Please Enter your username: " nameread -sp "Please Enter the password for $name: " passwordechouseradd $nameecho $password |passwd --stdin $name &> /dev/nullecho "$name created"多条件判断
方法一:[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] || [ -w /app/passwd ] && echo true[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] && [ -w /app/passwd ] && echo true方法二:
[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -a -w /app/passwd ] && echo true[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -o -w /app/passwd ] && echo true[liubei@instructor_v7(nanyibo) ~]$ [ ! -e /etc/passwda ] && echo true
true实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见
方法一:#!/bin/bashread -p "Please Enter your username: " nameecho -n "Please Enter the password for $name: " stty -echoread passwordstty echoechouseradd $nameecho $password |passwd --stdin $name &> /dev/nullecho "$name created"方法二:静默输出
#!/bin/bashread -p "Please Enter your username: " nameread -sp "Please Enter the password for $name: " passwordecho> /dev/nullecho "$name created"useradd $nameecho $password |passwd --stdin $name &输入5个数:[root@centos /app]$read -N 5 -p "hello: " name
hello: 12345[root@centos /app]$echo $name12345实验:输入密码小于等于8位数:
第8天:
判断文件
[root@centos ~]$touch a[root@centos ~]$chmod g+s a[root@centos ~]$[ -g a ] && echo truetrue[root@centos ~]$[ -g a ] && echo true^C[root@centos ~]$touch a.txt[root@centos ~]$[ -g a.txt ] && echo true[root@centos ~]$ls /proc/$$/fd0 1 2 255compress 压缩文件:umask:chmod 000 rw权限会 被修改:666-umask=600
gzip :-c; 压缩文件原文件不变,权限会根据uMask 变化-cd 标准输出,umask 会变gzip :可以改变压缩比for n in {1..9};do gzip -$n -c passwd >passwd.gz.$n;donewhile true ;do ;done压缩比:默认是6.数字越小,压缩比越小速度快gzip -$n -c passwd bzip2:bzip2 -k passwd :原文件不丢,权限也在bzip2 -dk passwd :bzip2 -cd passwd : 解压缩文件,预览解压后的文件标准输出文件描述符:打开一个文件有多少个描述符:
[root@centos /app]$ls /proc/$$/fd0 1 2 255[root@centos /app]$ls /proc/$$/fd |wc -l4判断软连接及路径: 先判断是不是软软连接
[root@Centos7~]#[ -d /lib ] &&echo true true[root@Centos7~]#[ -L /lib ] &&echo true true判断所有者和所属组:[root@centos ~]$[ -O /etc/passwd ] && echo true
true[root@centos ~]$[ -G /etc/shadow ] && echo true true[root@centos ~]$a=10;[ $a -eq 10 ] && echo true ||echo false
true判断文件是不是可写,可读:
[root@centos ~]$[ -r /etc/issue ] && [ -w /etc/shadow ] && echo true
true[root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true [root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true判断空文件赋值:vim /etc/rc.d/rc.sysinitif [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; thenHOSTNAME=localhost查看文件系统:类型
[root@centos ~]$[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstabroot也没有执行权限:切记:[root@centos ~]$[ -x /etc/shadow ] && echo true ||echo falsefalse[ ! -r /etc/shadow ] && [ ! -w /etc/shadow ] && echo true摩根定律:[root@centos ~]$ [ ! ( -r /etc/shadow -o -w /etc/shadow ) ] && echo true [root@centos ~]$[ ! -r /etc/shadow -a ! -w /etc/shadow ] && echo true普通用户不能登陆:touch /etc/nologin echo disable common user login > /etc/nologin 静默输入密码:[root@Centos7~/bin]#read -s -p "please input your password: " passwd
输入密码的次数:
[root@Centos7~/bin]#read -n 5 -p "please input you name: " username判断yes /no
[root@Centos7~]#yes=yn;[[ "$yes" =~ ^?$ ]] && echo true ||echo false
false[root@Centos7~]#n=no; [[ "$n" =~ ^[Nn][oO]?$ ]]&& echo true ||echo false
true整体判断:
[root@Centos7~]#n=n; [[ "$n" =~ ^?$|^[Nn][oO]?$ ]]&& echo true ||echo false true判断yes no 脚本:
read -p "Do you agree ? yes or no: " yes[[ "$n" =~ ^?$|^[Nn][oO]?$ ]]&& echo true ||echo false
判断yes no 的脚本
#!/bin/bashread -p "Do you agree ? yes or no: " choicechoice=$(echo "$choice" | tr "[ :upper: ]" "[ :lower: ]")[ "$choice" = "yes" -o "$choice" = "y" ] && echo "you enter yes " && exit 1[ "$choice" = "no" -o "$choice" = "n" ] && echo "you enter no " && exit 2 ||echo "you enter wrong " 最后一行命令结束,自动退出终端,切记:[root@Centos7/app]#echo "your cost : \$5.00"
your cost : $5.00函数库:
/etc/rc.d/init.d/functions查看文件系统:/etc/fstab#cat .bash_profile 更改路劲
PATH=$PATH:$HOME/bin:/home/sunvim ~/.bashrc
source 与bash 的区别
source 影响当前进程:bash 开启子进程:[root@Centos7~/bin]#source procss_bash.sh var=hahavar=xxx[root@Centos7~/bin]#bash procss_bash.sh var=var=xxx[root@Centos7~/bin]#用户退出提示:
echo -e "\033[1;5;31;43m 辛苦了亲!每天好心情,day day up!\033[0m"
$-变量值:[root@Centos7~]#echo $-himBHh hashi 交互式:m:monitor:b: braceexpand 大括号扩张h:history脚本中:
[root@Centos7~/bin]#f1.sh hB数据库查找:
locate[root@Centos7~]#ll /var/lib/mlocate/mlocate.db更新数据库:
[root@Centos7~]#ll /var/lib/mlocate/mlocate.db-rw-r-----. 1 root slocate 3588970 May 31 09:27 /var/lib/mlocate/mlocate.db[root@Centos7~]# updatedb[root@Centos7~]#locate newf1.sh /root/newf1.shlocate 支持正则表达式:[root@Centos7~/bin]# locate -n 3 -r ".conf$"
/app/httpd-2.4.33/docs/doxygen.conf/app/httpd-2.4.33/docs/conf/httpd.conf/app/httpd-2.4.33/docs/conf/extra/httpd-autoindex.conffind 命令:
查找路径:查找条件处理动作查找最大2层,最小2层[root@Centos7~/bin]#find /etc -maxdepth 2 -mindepth 2 -name "network"/etc/sysconfig/network查看链接数:
[root@Centos7/app]#find -samefile a./a./d1/aa查找文件以.sh结尾
[root@Centos7/app]#find /root -regex "..txt$"查看问价以.sh结尾或.txt结尾的文件根据属组查找: -user USERNAME:查找属主为指定用户(UID)的文件-group GRPNAME: 查找属组为指定组(GID)的文件-uid UserID:查找属主为指定的UID号的文件查找所属主 及文件[root@Centos7~]#find /home -user sun -name ".sh"即不是王的文件也不是.sh 结尾的文件[root@Centos7/app]#find /home !( -user sun -o - name "*.sh")find /home -not -user wang -o -not -user bai不是王的,或者不是白的,那就是全部文件ias.txt./d1[root@Centos7/app]#dd if=/dev/zero of=f1 bs=1 count=1024生成文件查看1k 的文件: [root@Centos7/app]#find -size lk查看文件大小来查看;6k6k:(5k,6k]-6k:[0,5k]+6k:(6k,无穷]大于50M 小于100根目录下find / -size +50m -size -101m根据时间查找文件:
-atime+#[#+1,无穷]
-#[0,#)-amin-mmin-cminfind /etc/ -mmin -l 一分钟时间
-mtime-ctime权限查找:权限644,文件类型为 f (精确匹配)[root@Centos7/app]#find -perm 644 -type f./f1并且:[root@Centos7/app]#find -perm -444 -type f[root@Centos7/app]#find -perm -440 -type f ./f1 (0:表示不关心)或[root@Centos7/app]#find -perm /444 -type f./f1任何人都投写权限[root@Centos7/app]#find -perm /222 -type f ./f1全部匹配:表示不关心[root@Centos7/app]#find -perm -000 -type f ./f1find -perm /002 -002 -type f 一样的一位找到文件删掉: [root@Centos7/app]#find -perm -020 -type f -delete文件重定向: 动作:[root@Centos7/app]#find -perm -020 -type f -ls > list.txt文件备份:提示:不提示:[root@Centos7/app]# find -name ".conf" -ok cp {} /root/{}.bak \;不提示:[root@Centos7/app]#find -name ".conf" -exec cp {} /root/{}.bak \;删除查找到的文件:[root@Centos7/app]#find -name "*.conf" -exec rm {} \;批量创建文件:echo test{1..10}|xargs touch 压缩:gzip passwd gzip -d passwd.gzbzip2 passwd
bzip2 -d passwd.bz2 bzip2 -k passwd 保留源文件xz passwd
xz -d passwd.xz 压缩文件: zip -r sysconfig(目标文件) /testdir/sysconfig (源文件)unzip [root@Centos7/app]#cat /var/log/message |zip messages.zip - (代表前面的内容)打包文件:[root@Centos7/app]#tar -cvf /app/sysconfig.tar /etc/sysconfig/ (将/etc/syscinfig 打包)查看文件大小:
[root@Centos7/app]#du -sh /etc/sysconfigtar 工具打包:打包并压缩:[root@Centos7/app]#tar -zcvf /app/sysconfig.tar.gz /etc/sysconfig/[root@Centos7/app]#tar -Jcvf /app/sysconfig.tar.xz /etc/sysconfig/[root@Centos7/app]#tar -jcvf /app/sysconfig.tar.bz2 /etc/sysconfig/查看压缩文件有哪些东西:tar -tvf /app/sysconfig.tar.xz解压缩文件:[root@Centos7/app]#tar -xvf /app/sysconfig.tar.bz2 -C /app批量查看文件类型;[root@Centos7/app]#file -f filelist.txtvim 读取文件:[root@Centos7/app]#:r! ls /root/anacond a-ks.cfg指定打包文件;[root@Centos7/app]#tar -T filelist.txt -Jcvf a.tar.xztar: Removing leading `/' from member names/root/anaconda-ks.cfg/etc/issuesed 脚本:
经典多行编辑:[root@Centos7~]#sed -e '/^#EnableMMAP\ off/s/#//' -e'/^<IfModule mime_magic_module>/,/^<\/IfModule>/ s/#//' /etc/httpd/conf/httpd.conf多点编辑
sed -e [root@Centos7~]#sed -n -e '2p' -e '3p' f123多数行打印:[root@Centos7~]#sed -n -e '2p' -e '6p' f126[root@Centos7~]#sed 'n;D' f1 显示奇数行;n 是覆盖的意思[root@Centos7~]#sed -n '1~2p' f1 显示奇数行:[root@Centos7~]#sed -n 'n;p' f1 显示偶数行;[root@Centos7~]#sed -n '2~2p' f1除了第二行全部删掉:[root@Centos7~]#sed '2!d' f1
2从文件中读取命令到。bashrc 文件文件中:[root@Centos7~]#sed '/User/r /root/bin/sed.txt' .bashrc脚本重定向:cat > /root/bin/sed.txt << endalias p=poweroff alias cdnet="cd /etc/sysconfig/network-scripts" end全局添加东西;[root@Centos7~/bin]#sed -r 's/(.*)/ \1&mage/g' /etc/passwd替换[root@Centos7~]#sed -r 's@/(bin/bash)$@/s\1@g' /etc/passwd
替换:改写网卡名字:/etc/default/grub 影响网卡名字:sed -r 's@(GRUB_CMDLINE_LINUX=".*)"$@\1 4566666xyzzzzz"@' /etc/default/grub偶数行:
[root@Centos7/media/Packages]#seq 1 10 |sed -n 'n;p'[root@Centos7/media/Packages]#sed -n '2~2'rpm架构:[root@Centos7/media/Packages]#ls | egrep -o "[^.]+.rpm"|cut -d. -f1 |sort |uniq -c2、
[root@Centos7/media/Packages]#ls |sed -r 's/..(.).rpm$/\1/' |sort |uniq -c2141 i6863076 noarch1 TRANS.TBL4374 x86_643、[root@Centos7/media/Packages]#ls |rev |cut -d. -f2 |rev |sort |uniq -c
2141 i6863076 noarch1 TRANS4374 x86_644、将文本中的n和n+1行合并为一行,n 为奇数行:cat seq 1 10 |sed "/^$/d;G" 删除空行,然后给每行添加一个空行:
stream editor 行编辑器
sed gnu 工具sed [option].... "script"(地址命令)sed 语法[root@Centos7~]#sed -n 'p' /etc/issue\S
Kernel \r on an \m[root@Centos7~]#ifconfig |sed -n '2p' |tr -s " "|cut -d" " -f3
192.168.137.142sed 支持标准输入:sed -n "2p"[root@Centos7~]#sed -n '2p' abbc d显示文件行号"[root@Centos7~]# nl /etc/fstab地址:[root@Centos7~]#sed -n "8,12p" /etc/fstab[root@Centos7~]#sed -n "8,+3p" /etc/fstab 8行之后3行打印出来
[root@Centos7~]#sed -n "3,/^f/p" /etc/passwd^C[root@Centos7~]#sed -n '/^r/,/^f/p' /etc/passwd奇数偶数:[root@Centos7~]#cat -n /etc/passwd |sed -n '3 ~2p'[root@Centos7~]#sed -n '3~2p' /etc/passwd[root@Centos7~]#sed -n '2~2p' /etc/passwd添加空格:之后添加数字
[root@Centos7~]#cat -n /etc/passwd |sed '3,6a\ ============' 在第几行添加文本:sed '7a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc最后一行添加文本,并且备份:
[root@Centos7/app]# sed -i.bak '$a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc替换:文本添加内荣:[root@Centos7~]#sed '/^# Source/c\xxxxxx x' ~/.bashrc修改配置文件;
[root@Centos7~]#sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config多行添加内容:
[root@Centos7~]#sed '/^# Source/ixxxxxx\nyyyy\nzzzz' ~/.bashrcsed :正则表达式计算[root@Centos7~]#sed -r 's@(/bin/bash)@#\1@g' /etc/passwd
写入到文件中:[root@Centos7~]#sed '/^alias/w /app/alias.txt' .bashrc显示所在的行:
[root@Centos7~]#sed '/^alias/='.bashrc
打印用户以bash结尾的行:[root@Centos7~]#sed -n '/bash$/!p' /etc/passwd 全局替换;[root@Centos7~]#sed 's@/bin/bash$@/sbin/nologin@g' /etc/passwd替换:[root@Centos7~]#sed -i 's@SELINUX=disabled@SELINUX=enforcing@' /etc/selinux/configsed 截取ip 地址:[root@Centos7~]#ifconfig ens33|sed -n '2p'|sed 's@.inet@@g'| sed 's@netmask.@@g' 192.168.137.142[root@Centos7~]#ifconfig ens33|sed -n '2p'|sed -r 's@.inet (.) netmask.@\1@'192.168.137.142 取ip 地址:[root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@(.inet )(.)( net.)@\2@' [root@Centos7~]#ifconfig |sed -r '2!d; s@(.inet )(.)( netmask .*)@\2@' 192.168.137.142[root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@.inet @@' |sed -r 's@ netmask.@@'
192.168.137.142经典:配置文件:
[root@Centos7~]#sed -n '/^b/,/^f/p' /etc/passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin经典去除配置文件前面的#号:ip 后向引用:
[root@Centos7~]#ifconfig ens33|sed -r -n '2s@.inet (.) netmask.*@\1@p' 192.168.137.142取版本号:
[root@Centos7~]#sed -n -r 's@.release ([^.]+).@\1@p' /etc/centos-release 7在后面补文字:sed -r 's@(quiet )@\1i love you @' /etc/default/grub替换双引号:
[root@Centos7~/bin]#sed -r 's/(")$/ \1/p' /etc/default/grub包含:[root@Centos7~/bin]#sed -r '/LINUX/s/(")$/ \1/p' /etc/default/grub取出ip
[root@Centos7~/bin]#ifconfig ens33 |sed -r '2!d ; s/.inet //;s/ netmask.//'192.168.137.142取出基名:
[root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@./(.+)/?@\1@p' network-scripts/ 取目录名:实验效果[root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@(./)(.+)/?@\1@p'
/etc/sysconfig/[root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(./)([^]+/?)@\1@' /etc/sysconfig/[root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(./)([^]+/?)@\2@'network后向引用[root@Centos7/app]#cat mobile.txt |sed -r 's@([0-9]{4})([0-9]{3})([0-9]{3})@\1****\3@'
yum :abi是指:运行在操作系统上,必须遵守操作系统标准:
api: 涉及到库的标准; 不同的操作系统,不同的ABI 静态库:插入一个库到程序中:动态库:调用动态库:ldd /bin/lsseq 1 10 |xargs -n2查找文件:find -name "*.c" |wcsed -i 's///g'cat /etc/httpd/conf/httpd.conf 很重要的配置文件[root@Centos7/app]#sed -r 's/^[^#]|^$/#/g' /etc/fstab
解决软件包的问题:[root@Centos7/misc/cd/Packages]#ls *.rpm |egrep -o "[^.]+.rpm$"|cut -d. -f1 |sort|uniq -c破坏安装包,怎么解决问题 :
[root@Centos7/misc/cd/Packages]#rm /usr/bin/treerm: remove regular file ‘/usr/bin/tree’? y[root@Centos7/misc/cd/Packages]#rpm -i vsftpd-3.0.2-22.el7.x86_64.rpm [root@Centos7/misc/cd/Packages]#rpm -i tree-1.6.0-10.el7.x86_64.rpm package tree-1.6.0-10.el7.x86_64 is already installed解决方案:覆盖安装[root@Centos7/misc/cd/Packages]#rpm -ivh --replacepkgs tree-1.6.0-10.el7.x86_64.rpm查看时间:ll /var/lib/rpm判断安装包名:
[root@Centos7/misc/cd/Packages]#rpm -q vsftpd &> /dev/null && echo true ||rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm &> /dev/nulltrue查看包来源哪个文件:[root@Centos7/misc/cd/Packages]#rpm -qf /etc/passwdsetup-2.8.71-7.el7.noarch:显示包的安装信息
rpm -qi bashrpm -ql bash校验包:rpm -import/run/media/root/centos \7\x86/RPM -GPG-KEY-CENTOS-7rpm -k tree.....rpmcentos6编译安装httpd2.2
准备工作:
1 关闭firwalld centos6: service iptables stop; chkconfig iptables offcentos7: systemctl stop firewalld; systemctl disable firewalld2 关闭SElinux
setenforce 0vim /etc/selinux/config SELINUX=disabled1 yum groupinstall "development tools"
yum install openssl-devel2 download src
tar xvf httpd-2.4.33.tar.bz23 cd httpd-2.2.34
cat READMEcat INSTALL4 ./configure --help
./configure --prefix=/app --sysconfdir=/etc/httpd22 --enable-ssl5 make -j 4 && make install
6 vim /etc/profile.d/env.sh
PATH=/app/bin:$PATH. /etc/profile.d/env.sh
7 apachectl start
yum实验:
ps aux|grep yumkill- 9 2035关闭进程;关闭防火墙:
指定Ip 地址;centos 7systemctl stop firewalldsystemctl disable firewalldcentos 6chkconfig iptables off[root@centos /etc/yum]#service iptables stoprpm -ql vsftpd
rpm -ql httpd 启动共享服务:systemctl start vsftpd查看防火墙:iptables -nvL修改:selinux sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/configsetenforce 0查看selinux 是否更改好了getenforcepermissiveyum 的配置:
[base]name=centos 6.9 basebaseurl=ftp://172.18.119.186/pub/centos/$releasever/os/$basearchgpgkey=ftp://172.18.119.186/pub/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-6查看进程:判断安装包存在不存在:package=tree;rpm -q $package &> /dev/null && echo true|| yum install $package - y & >/dev/null添加光盘: 扫描[root@Centos7/sys/class/scsi_host/host2]#echo '- - -' > /sys/class/scsi_host/host0/scancreaterepo .创建repodata
repodata创建app 包
cp /var/ftp/pub/centos/7/os/x86_64/Packages/lftp-4.4.8-8.el7_3.2.x86_64.rpm .createrepo . 创建元数据:第四周:
track :磁道:1024chsc:柱面:255h:磁头 255s:扇区 :63 (512字节)[root@Centos7/app]#echo 512631024*255 /1024/1024|bc8422686720 =8GLBA : 48位寻址磁盘分区:1分区2创建文件系统3挂载;分配目录名ss -ntl :查看防火墙mbr :master boot record 主分区引导记录2^32=4G
echo 51263255/1024|bc=8m2种分区方式:mbr gpt512:0扇区446 boot loader64: 分区表16:标识一个分区2: 55aambr=[root@Centos7/app]#echo 5122^32/1024/1024/1024 |bc20484个主分区:3个主分区+1扩展分区(N个逻辑分区)一个柱面的方式:[root@Centos7/app]# echo 51263*255/1024|bc 8032[root@Centos7/app]#hexdump -C /dev/sda -n 512
备份:放到网络上: [root@Centos7/app]#dd if=/dev/sda of=/app/mbr-bak bs=1 count=512恢复:mbr dd if=/app/mbr-bak of=/dev/sda bs=1 count=512[root@Centos7/app]#hexdump -C /dev/sda -n 512 -v
如何备份到安全的地方:[root@Centos7/app]#scp /app/mbr-bak 172.18.119.161:/app/dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510 55aa文件系统:df -T[root@centos ~]#ls /lib/modules/uname -r
/kernel/fs [root@centos /lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4]#ls
ext4.koext4 xfs >>>虚拟文件系统ls >>>vfs >>ext4用户 后台cache: 读 从硬盘上读 vfs 虚拟文件系统buffer:写 从内存写入硬盘创建文件系统mkfs centos 6partx -apartx -d --nrblkid /dev/sda1uuidgen 32位16进制;一共128位mkfs -t ext4/dev/sdb1 创建文件系统blkid /dev/sdb1 查看文件系统blkid /dev/sr0blkid[root@centos ~]#mkfs.ext4 /dev/sdb2tune2fs -l /dev/sda1 查看ext4功能有日志功能ext2没有日志功能
tune2fs -o acl/dev/sda1 添加aclfsck /dev/sdb1:修复文件系统簇文件大小一个字节1 4096最小的单位mknod /app/f2 c 1 5 创建快文件非交互式创建分区:[root@Centos7/app]#echo -e "n\np\n\n\n+2G\nw\n" |fdisk /dev/sdc 查看分区;[root@Centos7/app]#fdisk -l /dev/sdc创建分区:多行重定向[root@Centos7~]#fdisk /dev/sdc << endn
p+3G
Wend块的元数据信息放在superblock (超级快)dumpe2fs /dev/sda2mkfs.ext4 /dev/sdb2 -b 1024随机数:tr -cd 'a-zA-Z0-9_' < /dev/random |head -c 16fsck /dev/sdb1 -y 修复数据
mount挂载:
同一个时间只能挂载一个设备 多个只能显示一个 一个设备能挂载多个文件夹更改卷标 [root@centos ~]#e2label /dev/sdb2 /data/sdb2挂载点是空文件逻辑卷:操作
物理卷pvcreate /dev/sda6pvcreate /dev/sdc1创建眷族:vgcreate -s 16M(指定卷组pe16M) vg0 /dev/sd{c1,a6}创建逻辑卷:lvcreate -n lv0 -l l00 vg0 (小l pe块的大小 )lvcreate -n lv1 -l 100%FREE vg0分区之后格式化:mkdir /mnt/lv0mkfs.ext4 /dev/vg0/lv0blkid 写入配置文件mount -a 挂载缩减逻辑卷卸载umount /dev/vg0/lv0 检查逻辑卷的完整性e2fsck -f /dev/vg0/lv0 删除逻辑卷resize2fs /dev/vg0/lv0 10G减少逻辑卷的空间lvreduce -L 10G /dev/vg0/lv0 挂载mount -adf -h删除vg中的pv
创建pvpvcreate /dev/sdc2添加到vg0组里vgextend vg0 /dev/sdc2移动sde -> sdc2(allocated pe 移动空间)pvmove /dev/sde组移走sde:vgreduce vg0 /dev/sde移走 sdepvremove /dev/sde逻辑卷移动到的别的主机上
破坏文件系统:
dd if=/dev/zero /dev/sda 格式化创建riad mdadm -C /dev/md0 -a yes -l5 -32 -n3 -x1 /dev/sd{b,c,d,e}1raid 5实现:
1 分区,磁盘 大小一致2 mdadm -C /dev/md0 -a yes -l5 -n 3 -x1 -c32 /dev/sd{b,c,d,e}13 mkfs.ext4 /dev/md04 vim /etc/fstab5 mdadm -Ds /dev/md0 > /etc/mdadm.conf6 maadm -S /dev/md0 (umount)7 mdadm -A /dev/md0 active8 mdadm /dev/md0 -f /dev/sde1 损坏9 mdadm /dev/md0 -r /dev/sde1 删除10 mdadm /dev/md0 -a /dev/sde1 加raid 1/0mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c}mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e}mdadm -C /dev/md2 -a yes -l0 -n2 /dev/md{0,1} mdadm -C /dev/md0 -a yes -l10 -n4 /dev/sd{b,d,d,e}resize2fs /dev/md0 统一文件系统 centos 6
xfs_growfs /mnt/raid centos7 统一文件系统文件系统:网络文件系统集群文件系统分布式文件系统日志:journal 对文件记录有哪些操作,变化的数据记录在在journal 日志里面读取日志的内容写到硬盘里面:相当于逻辑卷的快照采用有日志的文件系统文件系统要有对应的驱动模块:ext4.ko创建文件系统:
mkfs.blkid /dev/sdb1tune2fs -l /dev/sdb2查看文件系统ext4tune2fs -o/dev/sdb1 :添加acl 权限 文件夹共享权限灵活文件系统的信息超级快和inode tablembr:512字节 446 64(4*16的分区表) 2(55 aa
partition 1 (boot sector启动扇区 ext4 file system文件系统)
文件系统 分成快组 block group 0 (最小使用单位)快组管理磁盘空间block group :超级快,快组从哪到哪分割,分区的重要信息放在超级快里,分区的元数据,属性
位图:标记空间使用还是没有使用
文件的节点表: inode table
文件的节点编号,属性 大小,权限元数据信息 data blocks 数据信息文件系统被破坏:显示 filesystem statae 显示noclean 修复文件系统创建分区:
n \n(分区) p \n(选择分区) \n(扇区)+1G \n(最后扇区 ) w\n (保存)非交互式:echo -e 'n\np\n\n\n+1G\nw\n' |fdisk /dev/sdc创建分区:
[root@Centos7~]#fdiskn
p2+1G
Wend
swap 格式化:
swapon -sdd if=/dev/zero of=/dev/sdb1 :消除一切烦恼 (挂着swap )文件系统管理:bios程序 mbr分区
uefi程序 gpt分区partprobe 柱面: 8m=512631024/1024所有硬盘:8G:51263255*1024/1024/1024文件系统:
它负责为用户建立文件,存入,读出,修改,转储文件,控制文件的存取安全控制,日志,压缩,加密支持文件系统:ls /lib/modules/uname -r
/kernel/fs有快组: dumpe2fs:块分组管理,32768块-h:查看超级块信息,不显示分组指定块的大小mkfs.ext4 /dev/sde1 -b 1024 Block count: 1060256
Reserved block count: 53012 保留的空间5%Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)1t的%5是50G文件系统:mkfs.ext4 /dev/sde1 -b 1024 -m 0.1节点与块[root@centos ~]#mkfs.ext4 /dev/sde1 -b 4096 -i 1024 说明节点数比块的数量还要多i :为数据空间中没多少个字节创建一个inode ;此大小不应小于block的大小[root@centos ~]#mkfs.ext2 /dev/sde1 -b 1024 -m 0.1^C[root@centos ~]#toune2fs -o(大)has_journal /dev/sde1 增加日志文件(修改文件系统)的东西创建文件系统不能该,有的可以该block size卷名tune2fs -o (增加日志)mkfs.ext4 /dev/sde1 -b 2048 -L /data/sde1 卷标dir=swap; blkid -Uegrep $dir < /etc/fstab|cut -d" " -f1 |cut -d"=" -f2
dir=swap; blkid -U egrep $dir < /etc/fstab|sed -r 's/UUID=([^ ]+) .*/\1/'
ext4 修改卷标
/data/sde1[root@centos ~]#(挂载点名)[root@centos ~]#e2label /dev/sde1 (设备名)/app/sde1修改uuidtune2fs -Uuuidgen
/dev/sde1 uuid 是128位 dumpe2fs /dev/sde1
破坏分区:
dd if=/dev/zero of=/dev/sdb1 bs=1M count=20tune2fs -l /dev/sdb1找回数据,修复文件系统:fsck /dev/sde1 fsck /dev/sde1 -y 取消挂载e2fsck -f /dev/sdb1 不要在挂载状态
xfs_repair 修复文件系统mount:umount /dev/sdb2 设备名: 挂载点(/app/sdb2) e2lable /dev/sdb2 /app/sdb2mount LABEL=/app/sde1 /app/sde1卷标名就是设备名mount UUID="a64dd5c5-6f66-4449-aea4-7061571b2520" /app/sde2/dev/sde1 1043460 8198 982250 1% /app/sde1/dev/sde1 1043460 8198 982250 1% /app/sde2挂载不显示:
mount -n /dev/sde1 /app/sde1cat /proc/mountsll /etc/mtab 6ll /etc/mtab /proc/self/mountsDefault mount options: acl 新分区挂载acl卸载:umount /app/sde1 设置ACL:tune2fs -o acl /dev/sde1 挂载:mount /dev/sde1 /app/sde1查看:tune2fs -l acl /dev/sde1 设置:setfacl -m u:sun:0 f1查看:getfacl f1 卸载:umount /app/sde1 tune2fs -o ^acl /dev/sde1 卸载卸载:umount /app/sde1 不成功重新挂载acl,更改挂载选项
mount -o acl /dev/sde1 /app/sde1mount -o noacl,remount /dev/sde1 /app/sde1重新挂载:[root@centos ~]#mount -o remount,ro /app/sde1fuser -v /app/sde1
fuser -km /app/sde1 (使用中强制退出)lsof /app/sde1 (查看谁在使用)取消挂载:广播一下:findmnt /app/sdb1 查看设备有没有挂东西 脚本判断挂载不挂载:[root@centos ~]#findmnt /app/sde1 &>/dev/null ||mount /dev/sde1外来设备有危险可以执行noexecmount -o remount,noexec /app/sde1mount -o exec,remount /dev/sde1 /app/sde1重新挂载设备文件的使用[root@centos ~]#mount -o remount,nodev /app/sde1mknode zero c 1 5dd if=/app/sde1/zero of=/root/f1 bs=1M count=1hexdump -C f1 -n 512 ll f1 -h#mount -o remount,nodev /app/sde1[root@centos ~]#mount -o remount,dev /app/sde1文件模拟分区: 文件模拟分区当u盘使用:快文件:[root@centos /app/sde1]#dd if=/app/sde1/zero of=/root/p1 bs=1M count=100mkfs.ext4 /root/p1/root/p1 95054 1551 88383 2% /mnt拷贝到别的系统盘:umount /mntscp p1 172.18.119.159:/rootmount -o /root/p1 /mnt (-o 支持文件挂载)mount -o loop p1 /mnt写入到etc/fstabls /dev/loop*块设备都可以创建mknod /dev/loop8 b 7 8[root@centos /mnt]#ll /dev/loop99brw-rw----. 1 root disk 7, 99 Jun 10 08:40 /dev/loop99更改内核文件;vim /boot/grub/grub.confmax_loop=100文件夹:-B文件:-o loopdefault:rw,suid,dev设备,exec脚本,auto,nouser,asynctune2fs -o acl /dev/sde1元数据是存到硬盘上面的
硬盘也有元数据:代表系统的完整性:
123mount -a 自动挂载
swap 文件系统管理:[root@Centos7~]#swapon -s Filename Type Size Used Priority/dev/sda5 partition 2097148 0 -1/dev/sda3 partition 20971516 0 -2[root@Centos7~]#blkid /dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sr1: UUID="2017-03-28-13-24-36-00" LABEL="CentOS_6.9_Final" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="3a72b4f4-4d61-4d7f-be09-eb908a334097" TYPE="xfs" /dev/sda2: UUID="7919257a-3c51-41cf-af9d-42ab20ebdeaa" TYPE="xfs" /dev/sda3: UUID="d2218468-49fe-40b5-b0bf-785edd23b2b8" TYPE="swap" /dev/sda5: UUID="741577a4-548e-432f-80be-0e0ff3ff78c9" TYPE="swap" [root@Centos7~]#umount /dev/sda3umount: /dev/sda3: not mountedswap :创建分区:
fdisk -l /dev/sda fdisk /dev/sdbL :82创建文件系统mkswap /dev/sdb -L swap_sdb1blkid挂载cat /etc/fstabmount -a 普通swapon -a swap
free swapon -s 优先级:cat /etc/fstabdefaults ,pri=100 优先级大 就第一个生效swapoff /dev/sdb1 禁用freeswapon -a优先级生效:dd if=/dev/zero of=/dev/null bs=2024M count=1实现swap 的功能超过2个G的数据没有swap 怎么办:创建文件swapdd if=/dev/zero of=/swapfile bs=1024M count=1ll /swapfile创建文件系统mkswap /swapfile挂载:cat /etc/fstab/swapfile swap swap defaults 0 0swapon -a 挂载:swapon -s删除:swapoff /dev/sdb1swapon -svim /etc/fstab删掉:free -hrm -f /swapfilefdisk /dev/sdb 删除分区:外围设备:
eject 弹出制作文件系统:cp /dev/sr0 /data/centos7.isofile /data/centos7.isodd if=/dev/sr0 of=/app/centos.iso将目录打包成镜像文件mkisofs -r -o etc.iso /etc/centos 6ls /misc/cd/Packages/*.rpm |wc -l把2张光盘挂载到同一个系统里面:
创建光盘:centos6mkdir /centos6cp /mnt/cdrom/* /centos6/ -a将2张盘挂到/mnt/cdrom 下,将内容全部考到文件centos6 下mkisofs -r -o /app/centos-6.9-x86_64-Everything.iso /centos6/不能做引导光盘:
下载:mkdvdiso.sh wiki.centos.org制作方法 : centos6 centos-6.9-x86_64-Everything.iso
mkdvdiso.sh source /destination/DVD.isohexdump -C /dev/sda -n 512 -vdd if=/dev/ada of=mbr bs=1 count=512dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446从光盘拷贝iso 镜像dd if=/dev/cdrom of=/root/cd.iso销毁磁盘数据dd if=/dev/urandom of=/dev/sda1修复硬盘:
dd if=/dev/sda of=/dev/sdaraid :实验:raid5搭建分区环境fdisk /dev/sdb dd if=/dev/sdb1 of=/dev/sdc1 bs=1 count=66 skip=446 seek=446partx -a /dev/sdcdd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446partx -a /dev/sddpartx -a /dev/sde创建raid5mdadm -C /dev/md0 -a yes -l5 -c32 -n3 -x1 sd{b,c,d,e}1mdadm -D /dev/md0
blkid
创建文件系统ll /dev/md0mkfs.ext4 /dev/md0 -L raid5 (卷标)查看文件系统blkid /dev/md0挂载:永久保存vim /etc/fstabr! blkid /dev/md0配置raidUUID=8615407b-7860-4a9f-abbc-e7368503367a /mnt/raid ext4 defaults 0 0 自动挂载mount -adf -h创建配置文件:mdadm -Ds /dev/md0 > /etc/mdadm.conf比较速度:原来硬盘;写:raid5:dd if=/dev/zero of=/mnt/raid/f1 bs=1M count=1024 conv=fdatasync硬盘:dd if=/dev/zero of=f1 bs=1M count=1024 dd if=/dev/zero of=/app/f1 bs=1M count=1024 conv=fdatasync读:硬盘:dd if=/mnt/raid/f1 of=/dev/null把数据读到垃圾箱:raid:if=/mnt/raid/f2 of=/dev/null 停用:umount /mnt/raid mdadm -S /dev/md0启用:mdadm -A /dev/md0查看状态:ll /dev/md0挂载:mount -amdadm -D /dev/md0模拟硬盘损坏:mdadm /dev/md0 -f /dev/sdd1 破坏mdadm -D /dev/md0mdadm /dev/md0 -r /dev/sdd1 删除mdadm /dev/md0 -a /dev/sdd1 添加模拟真坏;删除2个硬盘:de 在添加硬盘好的模拟sda创建sd6fdisk /dev/sdb将sdb2加入到md0里面:mdadm /dev/md0 -a /dev/sdb2增加新成员:fdisk /dev/sdb #partx -a /dev/sdb sdb3 raid 是由磁盘组合的可以直接添加mdam -G /dev/md0 -n4 -a /dev/sdb3增加容量,没有文件系统,添加文件了,但是没有文件系统同步文件系统;resize2fs /dev/md0xfs_growfs /mnt/raid (centos7 挂载点)cat /proc/mdstat产看raid
卸载不要raid了umount /mnt/raid配置文件不要了#uuid 注释掉ll /dev/md0查看要删掉哪些raid硬盘mdadm -D /dev/md0rm -f /etc/mdadm.conf mdadm -S /dev/md0mdadm -D /dev/md0 查看还有吗删掉全部硬盘fdisk /dev/sdcfdisk /dev/sdbfdisk /dev/sdefdisk /dev/sdd清空mdadm --zero-superblock /dev/sdb1 fdisk /dev/sdbmdadm --zero-superblock /dev/sdb1 dd if=/dev/zero of=/dev/sdb1 (万能清空)blkid 查看分区情况逻辑卷:
创建分区逻辑卷fdisk /dev/sdbfdisk /dev/sdcdisk -l /dev/sda 6disk -l /dev/sdc 6dd if=/dev/zero of=/dev/sdc1/dev/sdc1: UUID="7398b86a-e346-0bcc-aa0a-4c12267ca553" UUID_SUB="b5eea05e-c8b2-8573-e70c-084d1b083115" LABEL="centos.magedu.com:0" TYPE="linux_raid_member"
pvcreate /dev/sda6pvcreate /dev/sdc1pvdisplay卷组vgcreate -s 16M(pe) vg0 /dev/sd{a6,c1} pvdisplayvgspvcreate /dev/sda6 ()逻辑卷
lvcreate -n lv0 -l 100 vg0 第一个逻辑卷lvdisplayll /dev/vg0/lv0vgdisplay
lvcreate -n lv1 -l 100%FREE vg0 创建第二个逻辑卷
vgsll/dev/mapper/vg0-lv0
ll /dev/vg0/lv1格式化:
device mapper(设备镜像)
lvdispalymkfs.ext4 /dev/vg0/lv1blkid /dev/vg0/lv0 配置文件UUID=728f19cf-8b9b-454d-b7a6-ad8c7a607321 /mnt/lv0 ext4 defaults 0 0mount -a 挂载cp /etc/* /mnt/lv0dd if=/dev/zero of=/mnt/lv0/f1 bs=1M count=1024935 MB/s逻辑卷的速度:[root@centos ~]#dd if=/dev/zero of=/mnt/lv0/f2 bs=1M count=1024 conv=fdatasync1024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 0.809883 s, 1.3 GB/s项目经验小组;卷组的扩展pvcreate /dev/sddvgextend vg0 /dev/sddvgdisplay逻辑卷的扩展lvextend -L +5G /dev/vg0/lv0文件系统要同步#resize2fs /dev/vg0/lv0lvextend -l +100%FREE /dev/vg0/lv0lvextend -r -l +100%FREE /dev/vg0/lv0 (扩张文件系统一步到位)
逻辑卷的缩小:
备份先所见ddtarxfs 只能扩展:ext4 5步骤umount /mnt/lv0 卸载fsck -f /dev/vg0/lv0 检查系统完整性 (强制修复)resize2fs /dev/vg0/lv0 10G 文件系统压缩10Glvreduce -L 10G /dev/vg0/lv0 逻辑卷压缩到10Gmount -a 重新挂载df -H 检查大小lvdisplay 查看逻辑卷的大小resize2fs /dev/vg0/lv0 ext
xfs_growfs /mnt/lv0 xfs卸载逻辑卷将lv sdd硬盘坏掉了要更换:fdisk /dev/sdc2
创建分区备份逻辑卷pvcreate /dev/sdc2vgextend vg0 /dev/sdc2pvmove /dev/sdd 移动sdd-sdc2vgreduce vg0 /dev/sdd vg0里移走sddpvremove /dev/sdd 移走pv里面的sdd把旧电脑里面的逻辑卷移走:pvmove /dev/sda6 移动空间vgreduce vg0 /dev/sda6 从组里移走pvremove /dev/sda6 移动硬盘lsblk /dev/sda6迁移主机centos7 创建逻辑卷:pvcreate /dev/sdb1
vgcreate vg0 /dev/sdb1lvcreate -n lv0 -l 100%FREE vg0mkfs.xfs /dev/vg0/lv0mkdir /mnt/lv0 mount /dev/vg0/lv0 /mnt/lv0 df -hcentos 6vgrename vg0 centos6vg0 lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centos6lv0lvrename /dev/centos6vg0/lv1 /dev/centos6vg0/centos6lv1vgdisplay lvdisplay [root@centos ~]#ll /dev/centos6vg0/centos6lv0lrwxrwxrwx. 1 root root 7 Jun 10 21:02 /dev/centos6vg0/centos6lv0 -> ../dm-0开始:umount /mnt/lv0 vgchage -an centos6vg0 禁用vg 逻辑卷也不能用了vgexport centos6vg0 卷组导出状态centos 7 上的结果:vgimport centos6vg0 导入设置成导出vgchange -ay centos6vg0 激活mkdir /mnt/centos6lv0 mount /dev/cnetos6vg0/centos6lv0 /mnt/centos6lv0创建快照:lvcreate -n centos6lv0-snapshot -s -L 1G /dev/centos6vg0/cnetos6lv0快照和逻辑在一个组里面:mount /dev/cnetos6vg0/centos6lv0 /mnt/centos6lv0lv snapshot statusmkdir /mnt/snap
mount /dev/cnetos6vg0/centos6lv0-snapshot /mnt/snapls/mnt/snapf1 f2 f3ls /mnt/centos6lv0f1 f2 f3创建:lvcreate -n lv0 -L 1G vg0mkfs.sfs /dev/vg0/lv0mount /dev/vg0/lv0 /mnt/lv0cp /etc/group /mnt/lv0/f1cp /etc/group /mnt/lv0/f2cp /etc/group /mnt/lv0/f3 创建快照;lvcreate -n lv0-snapshot -L 500M -s /dev/vg0/lv0mkdir /mnt/snapmount /dev/vg0/lv0-snapshot /mnt/snapmount -o nouuid /dev/vg0/lv0-snapshot /mnt/snap (centos7 -p r)ls /mnt/snap合并消除数据 /mnt/lv0umount /mnt/lv0umount /mnt/snaplvconvert --merge /dev/vg0/lv0-snapshot注意:
ext4 -p r merge mount -o xfs mount -o nouuidmount /dev/vg0/lv0 /mnt/lv0ls /mnt/lv0f1 f2 f3
第五周:网络基础
osi pduPDUPDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位物理层的 PDU是数据位 bit数据链路层的 PDU是数据帧 fram
物理层:pdu 是数据位:数据链路层:是数据帧frame网络层:packet传输层:segment其它更高的层次是messages 网卡:以太网: 数据链路层:data link layerunicastbroadcastmulticast 冲突域:一台机器和另一台机器发送数据冲突网桥:学习源地址:转发目标地址 11111111111111111111....ethtool eht0 双工 Duplex: Full ethernet(以太网、数据链路层) switch (数据链路层)route -n
route -n 一个路由器 一个网段局域网 广播机制广域网:单播机制application :hhtp https ftp nfs dns tftp smtp pop3 imap telnet sshcat /etc/services 查看端口号:qq udP 用户数据包协议 no seq tcp 传输控制协议 有顺序的查看端口号:[root@Centos7~]#cat /proc/sys/net/ipv4/ip_local_port_range32768 60999tcp 包头 0-32A - B序列包:100 1000确认包|101 (希望下次发101个包)101 |1001 确认包1001 |102 tcP 面向可靠链接的选项面向连接ack synfinSYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段tcP 三次握手:
A B打你电话 1 谁啊 2老王 3约吗约好吧\访问外面地址:SYN=1,说明这是一个请求协议 本地地址 外部地址 状态 PID
TCP 127.0.0.1:443 127.0.0.1:56656 ESTABLISHED 1744SYN=1表示第一次握手finsh 结束:2^16=65536映射第四层到应用程序;tcp
ftp 21telnet 23http 80 udp:dns 53tftp:69snmp:161通过端口号:知道上层应用程序的地址通过端口号:知道上层软件:80 httP22 ssh[root@Centos7~]#cat /proc/sys/net/ipv4/tcp_max_orphans 8192[root@Centos7~]#cat /proc/sys/net/ipv4/tcp_fin_timeout60Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:[root@Centos7~]#cat /proc/sys/net/ipv4/tcp_retries1
3[root@Centos7~]#cat /proc/sys/net/ipv4/tcp_retries215window size固定窗口滑动窗口window size ack=2 说明只能接收2个包tcp 报文的第一个字段:源端口 32 位目标端口:序列号确认号6标记位ping 172.18.118.95 -s 65507 -f flood(导致服务器down)ddos ×××arp -n arp 列表arp 基于广播的arp -d 192.18.118.95 删除arp -n 列表重启服务systemctl restart network默认生命周期:[root@centos ~]#cat /proc/sys/net/ipv4/ip_default_ttl 64网络实验:arp;自问自答:问:当主机启动的时候,who has 192.168.30.128 ?tell 0.0.0.0 (刚启动的时候的地址还没有生效没有地址)答: 192.168.30.128 没人用,避免地址冲突的 机制,产生的广播arp:请求响应是广播arp:回应是单播arp -narp -dip aarp 广播,arp 三次握手,数据的传输数据包的构成:ethernet ip tcp udp data fcs (循环校验位)数据链路层 网络层 传输层 数据包 48位macipv6 128位:号称每个沙子都可以分一个ipinet6 fe80::20c:29ff:fe39:4273/64 scope link 一个以太网最大frame 是1500发包:这个3500的这个包是凑出来的[root@Centos7~]#ping 192.168.137.172 -s 3500片便宜就是包被切割的位置ttl 是生命期一个路由器减去一个值#ping www.microsoft.com64 bytes from 210.192.117.42-BJ-CNC (210.192.117.42): icmp_seq=1 ttl=51 time=112 msping ip地址:
[root@centos ~]#ping 192.168.137.172ping 11000000101010001000100110101100IP地址的转化ping 3232270764下面的很重要:A类0.0.0.0是未知地址127.0.0.1 是回环地址,不供网卡使用网络数:0-127 x.x.x1-126.x.x.x00xxxxxxx 0.....01111111 0.....前8位是网络Id0.0.0.0127.0.0.110.0.0.0 网段号10.255.255.255 表示10.0.0.0网段号的广播网段号:2^可变网络id 位数主机数 2^主机id -21.1.1.1 澳大利亚8.8.8.8 谷歌:114.114.114.114 江苏电信B类 10 xxxxxx xxxxxxxx.y.z10 111111128-191.x.x.x16位网络id16位主机id主机数:2^16=65536-2c类:110 xxxxxx xxxxxxxx.xxxxxxxx.y110 00000110 11111192-223. x.x.x24位网络id8位主机id网络数:2^21主机数:2^8=254d:224-239.x.x.x1110xxxx .x.x.x 表示多播地址电脑分配地址只能是多播e:保留:240-254 .x.x.x11110xxx.x.x.x总结:c类地址和主机id 主机数id 有点不一样子网掩码与IP地址相与得到网络id
10.0.0.0/8分成2个小网10.0.0.0/9min;10.0.0.1max: 10.127.255.25510.128.0.0/9
min 10.128.0.0.1max 10.255.255.25410.00 000000.0.0 10.0.0.0/10
10.01 000000.0.0 10.64.0.0/1010.10 000000.0.0 10.128.0.0/1010.11 000000.0.0 10.192.0.0/1010.0.0.0/8划分32个子网给32个公司使用:
子网掩码:8+5=13255.248.0.0新的子网:10.0.0.0/1310.248.0.0/13最大子网IP:10.11111 000 .0.1/13 (248)10.11111 111 .255.254/13 (255)10.248.0.0/13 划分17个子网
2^5=3213+5=18新的子网:255.255.192.010.11111 00000 000000.0 10.248.0.0/18 子网最小10.11111 10000 000000.0 10.252.0.0/18 17 个子网10.11111 11111 000000.0 10.255.192.0/18 最大子网主机数 2^14-2
10.252.0.0/1810.11111 100 .00 000000 .1 10.252.0.110.11111 100 .00 111111.254 10.252.63.254 合成一个网络:超网10.0.0.0/8172.20.0.0/16主机id 向网络id 借位路由表的配置;目标:数据包发送的目标路径192.168.0.0netmaskkinterface;本路由器的出口gateway ;直连;不需要配置非直连:下一个路由器邻近本路由器的接口地址dhcp
自动获取 家里使用备用设置 公司使用虚拟网卡:yum remove libvirt-daemon 查看虚拟网卡yun list libvirt* 产查看包加载网卡
ethtool -i eth0 modprobe -r e1000modprobe e1000cd /etc/udev/rules.d/
vim 70-persistent-net.rulesdmesg |grep -i ethifconfig eth2 downifconfig eth2 upifdown ifupip link配置文件:ls /etc/sysconfig/network-scripts设置网卡地址:ifconfig eth2 1.1.1.1/24 临时使用添加路由表:主机route add -host 7.7.7.7 gw 172.18.0.1 eth2主机路由网段 网关 接口到达网段 网关是 从哪个地方出去网络route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.137.100默认:route add default gw 192.168.137.100 删除默认路由:route del default gw 172.18.3.1route del -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.137.100 删除主机路由:route del -host 6.6.6.6删除网络路由:route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.137.100service network restartroute add 都是内存中临时添加的centos7 eth1:192.168.1.100/24centos6 ens37:192.168.2.100/24添加路由器route add default dev eth1route add default gw 192.168.137.100 route add defautl dev ens37ping 192.168.1.100tcpdump -i eth2 抓包yum install quagga
rpm -ql quagga
rpm -ql quagga
ss -ntlp
DEVICE=eth1 设备名
TYPE=Ethernet UUID=1908c9dc-8431-4df4-8241-d1ce061a9a65ONBOOT=yes 开机的时候网卡启动NM_CONTROLLED=yesBOOTPROTO=dhcp 自动获取 static noneDEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noNAME="System eth1"HWADDR=00:0C:29:35:59:73PEERDNS=yesPEERROUTES=yes~ 配置网卡:DEVICE=eth1BOOTPROTO=staticIPADDR=172.18.0.6PREFIX=16GATEWAY=72.18.0.1DNS=114.114.114.114DNS=1.1.1.1 DNS=8.8.8.8service network restart
service NetworkManager stopA R1 R2 B配置网络段添加3段网络net10 anet11 net10 r1 添加2快网卡net12 net11 r2 添加2块网卡net12 bcat /etc/sysconfig/network 更改主机名
路由器配置
DEVICE=eth1BOOTPROTO=staticIPADDR=172.18.0.6PREFIX=16路由器与电脑的区别就是网关不用配置开启ip 转发;vim /etc/sysctl.confnet.ipv4.ip_forward=1sysctl -piptables -F开启路由转发功能:echo 1> /proc/sys/net/ipv4/ip_forward追踪路由器: traceroute 10.0.0.100mtr 10.0.0.0 动态监控路由器:tracepath 10.0.0.100DNS1 :cat /etc/resolv.conf 配置文件重启服务:service network restart~/.bashr
配置alias 别名更改主机名:vim /etc/sysconfig/networkhostname +主机名exit 退出生效一个网卡多个主机名:临时
ifconfig eth0:1 8.8.8.8/24ip a 查看删除:ifconfig eth0:1 down实验:一个物理网卡八个多个地址:centos6路由器:一个网卡
ifconfig eth0:1 1.1.1.254/24ifconfig eth0:2 2.2.2.254/24aroute add default gw 2.2.2.254 broute add default gw 1.1.1.254echo 1> /proc/sys/net/ipv4/ip_forward
tcpdump -i eth0 icmp
指定网卡ping:ping -I 1.1.1.1 2.2.2.2 (目标)netstart :
netstat -nll /var/run/dbus/system_bus_socket :实现本地通讯socket :连接本地连接,解决封装解包的问题
实现本机通讯:a b ssh socket sshdnetstat -nt tcp
netstat -ntu udpnetstat -ntul netstat -ntulnetstat -ntuanetstat -ntunetstat -ntuap netstat -Ieth0netstat -i rx-ok重点:
多少个包:ss -sip 命令;ip linkip a 添加路由:ip route add 6.6.6.0/24 via 192.168.137.100删除:ip route del 6.6.6.0/24 via 192.168.137.100 dev ens33ip route add default via 172.16.0.1ip route delete查看地址:增加地址:ip addr add 1.1.1.1/24 dev eth0ip addr del 2.2.2.2/24 dev eth0ip aip addr add 1.1.1.1/24 dev eth0:2 (起名字)添加地址:ip addr del 172.16.100.100/16 dev eth0 label etho:0ip addr add 172.16.100.100/16 dev eth0 label etho:0
配置文件:主网卡的地址仍是自动获取
网卡别名:eth1自动获取:eth1 :DEVICE=eth1BOOTPROTO=dhcp手工指定:eht1:2:DEVICE=eth1BOOTPROTO=staticIPADDR=172.18.22.22PREFIX=16GATEWAY=172.18.0.1域名:cat /etc/host查看域名:cat /etc/resolv.confvim /etc/nsswitch.conf网络接口绑定:
d多个网卡绑定一个IP
eth0 1.1.1.1 dbserver
用户:
eth1 bonding 工作模式:mode 1实验bonding mode1 两个网卡都是仅主机模式:
cat /proc/net/bonding/bond0cat > ifcfg-bond0
DEVICE=bond0IPADDR=192.168.137.22bongPREFIX=24BONDING_OPTS="mode=1 miimon=100"cat ifcfg-eth0
DEVICE=eth0MASTER=bond0SLAVE=yescat ifcfg-eth1
DEVICE=eth0MASTER=bond0SLAVE=yesbonding卸载:lsmod 查看所有模块:ifconfig bond0 down :禁用网卡驱动:modprobe -r bonding 卸载网卡ifconfig -a配置eth0配置eth1主机名:cat /etc/sysconfig/network 改名字;启动网卡;ifconfig ens37 up ifconfig ens37 downcentos 7网路配置:
rpm -qi biosdevname 网卡配置信息
cat /etc/default/grub 配置文件按 vim /etc/default/grub直接更改网卡名ll /etc/grub2.cfg
[root@Centos7~]#ll /etc/grub2.cfglrwxrwxrwx. 1 root root 22 Apr 4 10:33 /etc/grub2.cfg -> ../boot/grub2/grub.cfg100 linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=7919257a-3c51-41cf-af9d-42ab20ebdeaa ro rhgb quiet LANG=en_US.UTF-8 net.ifnames=0net.ifnames=0
第二种:
ll /etc/default/grub:zai rhgb quiet net.ifnames=0grub2-mkconfig -o /etc/grub2.cfg\重启:nmcli nmcli device status cli connection show[root@Centos7~]#nmcli connection add con-name office-eth1 ifname eth1 type ethernet ipv4.method auto connection.autoconnect yes
nmcli connection shownmcli connection up office-eth1 nmcli connection modify Wired\ connection\ 2 con-name home-eth1[root@Centos7/etc/sysconfig/network-scripts]#nmcli connection modify home-eth1 ipv4.addresses 172.18.0.22/16 ipv4.gateway 172.18.0.1 ipv4.dns 114.114.114.114 ipv4.manualnmcli connection nmcli connection up home-eth1 nmcli connectionnmcli connection up office-eth1 自动获取:
手动:[root@Centos7~]#nmcli connection modify eth0 con-name eth0 ipv4.method manual ipv4.addresses 192.168.137.22/16nmcli connection up home-eth1 家是指定的Ip
nmcli device disconnect eth1 :取消连接
nmcli device connect eth1 : 连接nmcli connection show eth0 查看信息
配置文件更改了信息,从新加载启动一下
nmcli connection reloadnmcli connection up office-eth1
nmcli connection static-eth1 ipv4.method manual
eth1 加 地址:nmcli connection modify home-eth1 +ipv4.addnmcli connection reload nmcli connection up home-eth1 删除已加地址;nmcli connection modify home-eth1 -ipv4.addresses 8.8.8.8/16nmcli connection up home-eth1 nmtui 字符工具centos6cat /etc/sysconfig/networkcentos7cat /etc/hostname传统配置文件:vim /etc/hostnamecentos7hostname centos7 生效hostnamectl 该文家又生效hostname status 状态:更改主机名:[root@Centos7~]#hostnamectl set-hostname centos7.4.magedu.com[root@centos7~]#hostname
centos7.4.magedu.com[root@centos7~]#cat /etc/hosts加上主机名team 0
rm -f ifc*nmcli connection reloadnmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}' ipv4.method manual ipv4.addresses 192.168.137.22/16
nmcli connection add type team-slave con-name team0-eth0 ifname eth0 master team0nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0
nmcli connection shownmcli connection up team0-eth0
nmcli connection up team0-eth1nmcli connection showteamdctl team0 state删除:nmcli connection delete team0 team0-eth0 team-eth1测试:dns host www.magedu.com
nslookup www.magedu.com进程:
lru :算法 ,存放缓存数据的算法,近期最少使用算法
ps aux 虚拟内存 物理内存USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDfree 内存: 共享 内存 缓存total used free shared buff/cache available同一 主机:signal
不同主机: socket :ip和端口号 远程 kafka mq(消息队列)
daemon 守护进程:进程状态:
运行 running ready 就绪 -睡眠 可中断 interruptable 睡觉 (处于进程最多的状态 ) 不可终端停止 stopped僵尸 zombie 重启机器释放内存T sleep 构建一个状态process
:一个进程拥有多个线程 :一个公司立项,整个资源的集合,一个人,1个线程,干活的人就是线程thread: {这就是线程} sl 表示多个线程:ps
[root@centos7~]#ls /proc/1932/exe -l lrwxrwxrwx. 1 root root 0 Jun 24 09:17 /proc/1932/exe -> /usr/bin/bashps auxf |grep bash 查看进程使用:不连接终端,系统自身的属性[root@centos7~]#ps xo pid,cmd,%cpu,tty,%mem k %mem |tail -11440 /usr/bin/gnome-shell 0.2 ? 10.2df -h 关闭图形界面init 3 字符:init 5 图形ps xo pid,cmd, euser,ruser 3592 passwd suid 有效用户 实际用户 root sun3594 ps xo pid,cmd, euser,ruser root root查看cpu [root@centos7~]#ps -eFUID PID PPID C SZ RSS PSR STIME TTY TIME CMDroot 1 0 0 48425 6844 0 09:14 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21ps 优先级
nice 优先级: -20 19 值越大优先级越低优先级 nice优先级 实时优先级[root@centos7~]#ps xo pid,cmd,pri,ni,rtprio |lessPID CMD PRI NI RTPRIOsystem 0 139
realtime 99 0nice -20 19pri 139 -0ps -C f2.sh 查看运行脚本信息 o pid,cmd,%cpu,%mem
ps -C f2.sh -C ping o pid,cmd,%cpu,%mem 脚本的子进程查看脚本的状态:[root@centos7~]#./f5.sh f1.sh[root@centos7~]#ps -C f5.sh o pid,cmd,%cpu,%memPID CMD %CPU %MEM4221 /bin/bash ./f5.sh 0.0 0.0cpu
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |headps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head每秒钟监控:watch -n 1ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head
pidof bash ,显示进程编号
系统工具uptime 11:28:23 up 2:13, 3 users, load average: 0.00, 0.01, 0.05cpu内核的个数,不大于3,那么系统的性能良好 1 5 10分钟双核cpu load average is 6
if=/dev/zero of=/dev/nulltop -b 显示所有进程
p cpu显示M 内存显示kii 杀掉进程: 15关闭进程: k清空缓存:caches
echo 1 > /proc/sys/vm/drop_cachesvmstat 虚拟内存:vmstat 1bi 从磁盘进内存bo 从内存到磁盘dd if=/dev/sda of=/dev/null 读 bi 涨if=/dev/zero of=/dev/null xie bo 涨内存工具
iostat 1pmp :进程对应的内存映射pmp -x 1脏数据: 进程编号 查看内存情况cat /proc/1/maps监控工具glancess -ntlglances -s -B 192.168.137.22 服务器glances -c 192.168.137.22 客户端模式
系统监控工具:dstat 代替vmstat iostatiotop
监控磁盘io 状况man 7 signal
k字,信号名称以SIG开头 (可省略),不区分大小写 显示当前系统可用信号: kill –l,trap -l 常用信号:man 7 signal 1) SIGHUP: 无须关闭进程而让其重读配置文件 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 3) SIGQUIT:相当于ctrl+\ 9) SIGKILL: 强制杀死正在运行的进程 15) SIGTERM:终止正在运行的进程 18) SIGCONT:继续运行 19) SIGSTOP:后台休眠 指定信号的方法: (1) 信号的数字标识:1, 2, 9 (2) 信号完整名称:SIGHUP (3) 信号的简写名称:HUPkill -1 183 重读配置文件
ping 127.1 pidof ping kill -2 7586kill -3 pidof (ping bc)15 :终止正在运行的进程 ===killallkill -15 $(pidof ping )
echo $$kill 4527 ( 15 :终止正在运行的进程)kill -9 $(pidof ping) 强制杀掉正在运行的进程杀掉别人登陆计算机的pkill -9 -t pts/218) SIGCONT:继续运行 & 后台运行SIGSTOP:后台休ping 127.0.0.1 & 直接放到后台执行
jobs 查看后台运行的个数:作业号fg :前台执行 forntgroundbg :后台执行 backgroundctrl +z 正在运行的放到后台不运行, bg 后天作业号[root@centos7~]#jobs
[1]+ Stopped 开始:bg 1 kill -9 $(pidof ping) ps -au |grep pingkillall -19 ping (后台休眠)
killall -18 ping (后台运行)fg 放到前台运行ctrL +c ping 172.0.0.1 &pkill -t pts/3恢复断网数据screen ping ping 172.0.0.1 &screen -r 恢复nohut.out
ping 127.0.0.1 &disconnect tail -f nohup.out 还可以查看进程 6141进程数同时执行在后台cat all.sh ping 127.0.1 &ping 127.0.2 &ping 127.0.3 &killall ping同步执行{ ping 127.1 & ping 127.2 & ping 127.3 & }任务计划:
rpm -qf /usr/bin/at 来自哪个包rpm -ql at 查看有哪些信息centos 6
service atd statusservice atd startcentos7systemctl status atd确保时间一致:vim /etc/chrony.confserver 172.18.0.1 /etc/chrony.conf同步时间:ntpdate 172.18.0.1
iptables -vnL 查看防火墙systemctl enable chronydsystemctl start chronydsystemctl status chronydcentos 6 同步时间
ntpdate 172.18.0.1vim /etc/ntp.confserver 172.18.0.1 iburstchkconfig ntpd onservice ntpd statusservice ntpd start计划任务
at 17:00at >rm /app/* -rfat >rebootctrl +dat -l at -c 8 (计划任务的数)cat /var/spool/at/a000080184fd7c
echo wall atjob |at now +1min支持输入输出:at -d 6 删除计划任务[root@centos7/app]#echo wall atjob |at now +1 minjob 10 at Thu Jun 21 16:12:00 2018cat /etc/at.allow 白名单 默认不存在
cat /etc/at.deny 黑名单2个文件都不存在只有root可以执行at 命令echo sun >> /etc/at.deny 不可以计划任务
echo sun > /etc/at.allow 白名单可以执行计划任务rm -f /etc/at.allow查看计划任务:at -c 8写一个计划任务关机自己的电脑:
at 18:30 << endrm -rf /app/*haltpoweroffend查看;
which crondrpm -qf /usr/sbin/crond rpm -ql croniesystemctl status crond
systemctl enable crondvim /etc/crontab
root
date 050401592018 绝对路径0 2 1,10,20 * 0,6 root tarjcvf /app/etc.tar.xz /etc/ &>/dev/null@root root touch /app/cron.log :重启创建文件
man 5 crontab
普通用户:crontab -ell /bin/crontab
ll /bin/at创建空文件:echo f{1..10} |xargs -n2 touchfind /home -type d -exec ls {} \;
第七周:
高级进阶编程:[root@centos ~]#df |sed -rn '/^\/dev\/sd/s@.([^ ]+)%.@\1@p' |sort -nr 521写在一起[root@centos ~]#df |sed -rn 's/^\/dev\/sd.([^ ]+)%./\1/p' |sort -nr 521计算100[root@Centos7~]#seq -s + 100 |bc5050[root@centos7~]#id -u root0[root@centos7~]#id -nu rootrootread -n 10 - p 用户长度10个字符:?xargs find 默认递归echo {1..10}
$evalecho {1..$n}给root 发送邮件[root@centos7~]#echo $(df |grep '/dev/sda'|tr -s " "|sort -t " " -k5 -nr |cut -d" " -f1,5 |head -2)|mail -s "diskuse$(date "+%F %T")" root函数:
[root@centos7~]#declare -f funcl
funcl () { echo funcl}path =/data
rm -rf $path/* :如果path没有值就会导致删除跟cmd1 || { cmd2;exit; } 匿名函数
func_ 函数命名方式:
history () { echo history function;}history unset history 取消函数函数当前shell 有效:[root@centos7/etc/init.d]#funcl () { name=mage;echo "funcl:$name";}[root@centos7/app]#versin () { ver=cat /etc/centos-release |sed -r "s/.* ([0-9]+)\..*/\1/"
;return $ver ;}
echo ${url%%:} httpecho ${url##:} 80
第八周 系统启动流程:
ethtool -i ens33modinfo e1000 产看模块信息modprobe e1000加载modprobe -r e1000 卸载模块文件加载这里cd /lib/modules/3.10.0-693.el7.x86_64/kernel
rm -f initramfs-2.6.32-696.el6.x86_64.img 删除cat /etc/inittab init 级别0关机;1单用户模式2没有网络的多用户3完整的多用户4自定义5图形界面模式6reboot 重启模式grub a 空格1mkinitrd initramfs-2.6.32-696.el6.x86_64.img uname -r
创建
rpm2cpio 命令将rpm 软件包转换为cpio格式的文件
rpm2cpio cpio -idv 解包并看过程e2label /dev/sda2
/e2label /dev/sda3 查看卷标 centos 5自启动网卡:
hexdump -C -n 446 -v /dev/sda 查看分区表
安装包实现自动补齐:bash-completion
自启动网卡1.在旧系统中加硬盘
2.使新硬盘在虚拟机中被发现echo '- - -' > /sys/class/scsi_host/host2/scan3.对新硬盘进行分区,分2个区,一个100M,一个20Gfdisk /dev/sdb4.格式化文件系统为ext4,并创建相应目录,挂载mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2[root@instructor_v6(nanyibo) ~]# mkdir /mnt/sysimage[root@instructor_v6(nanyibo) ~]# mount /dev/sdb2 /mnt/sysimage/[root@instructor_v6(nanyibo) ~]# mkdir /mnt/sysimage/boot[root@instructor_v6(nanyibo) ~]# mount /dev/sdb1 /mnt/sysimage/boot/5.安装grub
grub-install --root-directory=/mnt/sysimage /dev/sdb[root@instructor_v6(nanyibo) ~]# cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/sysimage/boot/[root@instructor_v6(nanyibo) ~]# cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/sysimage/boot/[root@instructor_v6(nanyibo) boot]# ls -R.:grub initramfs-2.6.32-696.el6.x86_64.img vmlinuz-2.6.32-696.el6.x86_64./grub:
device.map ffs_stage1_5 minix_stage1_5 stage2 xfs_stage1_5e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5fat_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_56.编写grub.conf
default=0timeout=5title redhatroot (hd0,0)kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=4aa06589-fccb-4acd-b406-219347f5ad2d rhgb quiet selinux=0 init=/bin/bashinitrd /initramfs-2.6.32-696.el6.x86_64.img7.编写拷贝程序和对应库文件的脚本
#!/bin/bashcopy_cmd() { local cmd_destdir=$destdir$(dirname $(which $1))if [ ! -d $cmd_destdir ];thenmkdir -pv $cmd_destdirficp -v $(which $1) $cmd_destdir}copy_libfile() {
ldd $(which $1) |grep -oE "/.* " | while read libfiledolocal lib_destdir=$destdir$(dirname $libfile)local lib_destfile=$destdir$libfileif [ -e $lib_destfile ];thencontinueelif [ -d $lib_destdir ];thencp -v $libfile $lib_destdirelsemkdir -pv $lib_destdircp -v $libfile $lib_destdirfidone}destdir=/mnt/sysimage
if [ ! -d $destdir ];then
mkdir $destdirfiwhile true;doecho -ne "\e[33mPlease input a execute command:\e[0m"read cmdif [ "$cmd" == quit ];thenexitfiwhich $cmd &> /dev/null || { echo $cmd not exist;continue; }copy_cmd $cmdcopy_libfile $cmddone8.执行上述脚本以拷贝命令及所对应的库文件
./copycmd 注意执行前,修改该脚本中的destdir=你所指定的根目录bash ls ifconfig ping hostname cat vi vim mount umount ps pstree mv touch cp insmod modprobe9.拷贝网卡模块文件
cp /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysimage/lib64/10.创建根下的其他目录
mkdir /mnt/sysimage/{etc,dev,proc,sys,home,var,mnt,media,root,tmp,lib}11.尝试chroot,并sync,然后关机
手动网卡获取步骤;
12.启动后配置网卡insmod /lib64/e1000.koifconfig eth0 xxx.xxx.xxx.xxx/16ifconfig -a 查看IP地址自动启动网卡获取步骤:cd /mnt/sysimage/etc/vi /mnt/sysimage/etc/start.sh#!/bin/bashinsmod /lib64/e1000.koifconfig eth0 172.18.118.119/bin/bashchmod +x /mnt/sysimage/etc/start.shvi /mnt/sysimage/boot/grub/grub.confinit=/etc/start.shsemanage fcontext -a -t httpd_sys_content_t "/app/apache22(/.*)?"selinux
[root@centos7/app]#ll -Z /etc/fstab-rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/fstabrestorecon -Rv apache22/vim /etc/init.d/httpdDocumentRoot "/app/apache22/website"semanage port -l |grep httpsemanage port -a -t http_port_t -p tcp 9527semanage port -d -t http_port_t -p tcp 9527yum install setroubleshootawk
计算100
seq -s +100 |bc for((i=1,sum=0;i<=100;i++));do let sum+=i;done;echo $sum awk 'BEGIN{for(i=1;i<=100;i++)sum+=i;print sum}'转载于:https://blog.51cto.com/13718453/2134973