鸟哥的私房菜第三版笔记

/ 根目录
/bin 执行文件
/boot 开机会启动的文件
/dev 设备文件,通过访问这个从而访问连接到电脑上的关盘,硬盘等等。
/etc 系统配置文件。包括账号密码
/home 用户注文件夹。




常用操作
chmod 
SUID(4):仅仅对二进制文件有效,当用户进入该文件的时候,通过使用该文件拥有者身份进入。
SGID(2):用户如果对此目录有r,x权限,该用户能进入此目录。
SBIT(1):如果将目录A加上了SBIT的权限项目时,则甲只能够针对自己创建的文件或者目录进行删除,重命名,移动等操作,而无法删除他人的文件。
chown
chgrp


cp  -a包括所有内容进行复制  默认无参数复制后修改所属组。
-s 软连接,类似于快捷方式。
-d复制连接文件,否则复制链接文件对应的源文件。
rm -r逐个删除,逐个跳出是否需要删除。
chatter +-= i不能删除修改无法写入添加数据。


使用''设置变量的时候会导致$失效。
设定系统文件在/etc/sysconfig/i18n
读取键盘上输入的文字
read -t 等待时间(默认的话是到回车为止) -p  "提示文字" 变量名
删除变量。${path##/*:}  一个井号表示删除最短的,2个井号表示删除最长的,删除的内容是/*:,*表示0-无穷多个任意字符,删除是从前面开始删除的。
从后向前删除用%


替换变量里面的内容。
${需要修改的变量/需要修改的字符/修改后的字符}
第一个/位置如果用的是//那么就是替换所有。


stty设置热键 命令是stty 功能名  对应热键。


数据导向 > 一个就将内容导入到后面的文件中,如果不存在那么创建,如果存在那么覆盖。
如果用>> 那么如果不存在那么创建,如果存在那么累加。


错误和正确同时输入文件中,e.p. find /home -name .bashrc > list 2>&1


在储存的同时同时输出到桌面。tee 但是需要|


cat > filename将内容写到这个文件中。


正则匹配:
找出对应的单词所在的那一行 grep -n 'the' regular_express.txt


cut 用来裁剪有输出的命令。


常用管道命令
sed 对产生内容的行进行处理。 a 添加 d删除 p只显示需要的行数。 '-s/需要替换的内容/新的字符串/g' 但是替换只是显示的替换,不替换内容本身。
在awk中$0代表整行。
将字符通过":"分隔,并显示出UID小于10的内容。
awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'




shell script
#!/bin/bash 来声明语法。
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 设置环境变量,从而使得接下来代码中的某些命令被使用。
export PATH 确定、使用环境变量。


test命令用来测试文件,文件的是否存在、是否为连接文件等等。file命令是测试文件类型。


if语句
if[判断句式]; then
fi


if[判断句式]; then
else
fi


if[判断句式]; then
elif[条件判断式2];then
else
fi
用户管理
groups 查看当前用户的所属用户组。第一个为当前用户组,当touch的时候即以第一个的身份去创建。
newgrp 用户组名,更改用户组名到所需要的用户组。

useradd 添加新用户
useradd -D 显示默认信息,文件保存位置在/etc/default/useradd
useradd 用户名,创建一个没有密码,默认group是user的用户,但是因为没有密码所以无法登陆。
如果需要登录,那么设置密码

usermod 用户名 修改用户的相关信息。
userdel 用户名 删除用户


passwd 账号名      设置密码。不加账号就是修改当前用户的密码。
passwd -S 账户名  显示账户的当前状态
passwd -l 账户名  锁定该用户啊
passwd -u 账户名  解锁用户。

chage -l 账户名,显示用户密码详细信息。
//创建用户后以账号作为密码登陆,并且在用户第一次登陆后强制修改密码。
useradd newaccount
echo "newaccount" -d | passwd --stdin newaccount
chage -d 0 agetest


finger 显示用户信息
chfn 修改用户信息。
chsh 修改shell


groupadd 添加用户组
groupmod 修改用户组
groupdel 删除用户组,该用户组不能有用户存在,否则失败
gpasswd [-A user1,...] groupname 将用户添加到该用户组。若没有参数的话,就设置该用户组管理员密码。




setfacl -m u:用户:权限 文件名 设置权限。
setfacl -m g:用户组:权限 文件名 设置用户组权限。
setfacl -m m:权限 文件名 设置最大权限,也就是就算用户权限和用户组权限大于mask权限,那么他们获得的最大权限只能是mask权限。
setfacl -m d:u:myuser:rx /srv/projecta 让用户myuser在文件/srv/projecta下一直拥有权限。


权限更改
su 直接su修改对应用户为root,但是环境变量还是原来用户的变量,如果需要修改环境变量,则应用su -
sudo 通过自身的用户的密码进行超级用户的操作,但是是否能够修改自身用户到那个用户,则需要由/etc/sudoers决定。
visudo 找到root ALL=(ALL) ALL 这一行,在下面增加一行需要的。4列分别为:用户账号,登录主机来源,各写换的身份,可执行的命令。

/etc/pam.d/login 查看登录用的PAM流程。


当/etc/nonlogin文件存在的时候,一般用户无法登录,并在登录的时候显示其中内容,已登录的一般用户和root权限的用户无关。
主要原因是存在pam_nonlogin.so模块。
详细的登录流程见《鸟哥的私房菜 第三版》P438.


w,who 显示当前服务器上登录的用户。
lastlog 用户最后一次登陆时间。
write username [端口号] 发送信息给相应用户,用ctrl+d来结束输入。
mesg n 用户如果不想接受信息则设置mesg为n,如果想接受信息则为mesg y。默认为y,但是无法拒绝来自root的信息。
wall 发送信息给所有在线用户。
mail username -s "title" 发送邮件给用户,无论用户是否在线。


手动添加用户
pwck 判断是否主文件存在于用户的存在是否一一对应。


手动账号的创建
1、新建所需的用户组 (vi /etc/group)
2、将 /etc/group 与/etc/gshadow 同步(grpconv)
3、新建账号的各个属性(vi /etc/passwd)
4、将/etc/passwd 与 /etc/shadow 同步(pwconv)
5、新建账号的密码(passwd accountname)
6、新建用户的主文件夹(cp -a /etc/skel /home/accountname)
7、更改用户注文件夹的属性(chown -R accountname.group/home/accountname)


磁盘配额
QUOTA 书中的checkquota不兼容xfs格式
checkquota -avug(all,print,user,group)


LVM
VG类似于大磁盘,
LV作为各个分区。
partprobe 更新分区。
设置多个PV
合成一个大的VG
分为多个LV


例行性工作:(需要安装额外的AT包)
batch 时间  需要在服务器负载小于0.8的时候才会进行。
at 时间  设置单条命令
anacron 设置关机期间的命令,当开机后,如果过了设定时间,那么第一时间执行这些命令。
atq 显示所有命令
atm 序列号  删除命令


通过将用户写入/etc/cron.allow /etc/cron.deny来允许 拒绝用户使用crontab
所有cron记录都会记录到/var/spool/cron/username中。
通过crontab -e来写入周期性内容,
写入分6列:分钟,小时,日期,月份,周,命令。
特殊符号:*代表任意,','表示这两个时间段都执行,'-'表示这两个时间点之间都执行,/n每多久执行一次(0-59/5)一个小时内,每5min执行一次。


PID 进程ID
ps -l显示自己的所有进程。
ps aux显示系统中的所有进程。各项参数见《鸟哥的私房菜》P517
进程最后有<defunct>就是僵尸进程。应果断kill掉。


通过使用&来让程序后台进行。e.p. cp file1 file2 &


ctrl+z暂停任务
jobs -l显示所有任务。
fg %jobnumber 将后台的任务放到前台。
kill -9 %jobnumber 强行关闭某个进程。
kill -15 %jobnumber 以正常方式关闭某个进程。
nohup 命令 & 以脱机管理方式运行。


top 程序查看工具。
top -d [秒数] 以多少秒为周期刷新
top -p Pid 查看某个对应进程的参数。


PRI越低,越早被执行。
nice [-n 数字] command 命令运行的时候就修改NICE值,从而影响PRI
renice [number] PID 重新修改nice值。


free 查看内存使用量。
uname 内核属性。
uptime 系统启动时间和工作负载。


netstat 查看网络连接信息。
dmesg 查看内核产生的信息。
vmstat 检测系统资源的变化。


路径 /proc 内容详见《鸟哥的私房菜》p531
fuser 查看该路径或者文件有多少用户打开。
lsof 列出被进程打开的文件名。


SELinux
getecforce 查看是否关闭
sestatus 显示当前策略
如果想修改开关可以通过 vi/etc/selinux/config更改对应参数
P.S.前提是/boot/grub/menu.lst下的
kernal一行最后不能加上selinux = 0
否则因为grub为配置文件,在启动的时候忽略selinux导致无法正常启动。
当SELinux从enforcing到disabled的时候需要重启,反方向同理。


chcon 修改安全上下文
当文件从一个地方复制到另一个地方的时候
他的安全上下文不会修改,从而可能造成web端网页无法打开等等。


通过chkconfig --list setroubleshoot查看setroubleshoot是否启用,只要3、5启动即可。
然后再通过chkconfig setroubleshoot on来使其启动,
开启记录,从而将错误信息写入/var/log/messages中。
还可以使用auditd方法同理。
但是信息量更大,同时因为信息量大,通过audit2why来查找关键信息。


通过seinfo来系那是SELinux的统计状态
用sesearch来查看更加详细的信息。
setsebool 查看条款的布尔值是启动还是关闭。
semanage 修改selinux


各个服务放置的位置,配置文件位置,数据库位置等可见《鸟哥的私房菜》p555
文件名 status查看当前状态。
通过单独的文件名,查看可以用的参数有哪些?


防火墙判断依据:先判断是否在hosts.allow中,如果不在其中,那么在寻找hosts.deny。
设置方法
服务名:地址:deny 或者allow
通过chkconfig -add filename来添加服务。
服务通过shell script来编写


将日志写到对应的日志文件
vi /etc/syslog.conf 打开配置文件
mail.info /var/log/maillog 将mail中info等级以上的文件写入maillog中


需要某种等级的
news.=warn 即获取warn等级的。
不要某种类型的文字。
*.*;news.none;cron.none;
*.*;news,cron.none;


通过chattr来设置隐藏属性,从而设置属性为只可写入,不可删除或者更改。


通过设置/etc/logrotate.conf来配置日志文件的轮替。


系统管理员:
启动流程
1、加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备
2、读取并执行第一个启动设备内MBR的BOOT LOADER(即GRUB,spfdisk等程序)
3、依据boot loader 的设置加载kernel,kernel会开始检测硬件与加载驱动程序。
4、在硬件驱动成功后,kernel会主动调用init进程,而init会去的run-level信息。
5、init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络,时区等)
6、init执行run-level的各个服务的启动(script方式)
7、init执行/etc/rc.d/rc.local文件
8、init执行中端机模拟程序mingetty来启动login进程,最后等待用户登录。


BIOS通过INT 13中断来读取MBR


Boot Loader 提前加载kernel和initrd。
/boot/initrd是压缩文件,解压后得到的文件initrd-2.X.XX-XX.XXX还是压缩文件,是通过cpio压缩的。
解压后的init文件中都是通过shell script来进行内存的虚拟文件系统的挂载,新建系统所需要的各项设备,加载内核模块,尝试挂载根目录。
如果是IDE+EXT2/EXT3则没有initrd也能顺利进入系统。


/etc/inittab 默认环境配置(Centos 5.x内容放置在其中,Centos7.x的时候这些内容单独放置在相对应的target中,详细查看文件内容内容)
包含内容:init命令的7个指令
ctrl+alt+del的重启
UPS
tty1-tty6.
xwindows决定
命令解释:[设置选项]:[run level]:[init的操作行为]:[命令选项]

同时/etc/rc.d/rc N中 K??(关闭kill某个服务) S??(开启start某个服务。)
但是因为系统版本不同,到Centos7.x的时候,etc下面直接就有rcN.d文件(同时rc.d中也有一份),里面放置的就是对应的各自与其他启动方式不同的内容,相同的方式应该写到rc.d里面了


自动启动的shell script放在/etc/rc.d/rc.local中,即可自动启动。


启动后的一些配置文件,放在/etc/sysconfig/*中


内核模块与依赖性
将文件放到/lib/modules/$(uname -r)/kernel/drivers/中然后执行depmod
内核文件一定是ko结尾。
lsmod 展示所有模块
modinfo modname 显示模块相关信息。
modprobe 通过关系依赖性自动加载、删除模块。
insmod [full/path/module_name] [parameters]不通过分析直接添加模块
rmmod 手动删除模块。


mkinitrd来重新生成Initrd文件


Overcome “Fail to load SELinux policy. Freezing.” error message while booting Linux
1.mind you can choose 'e' to edit the selected boot option
2.once 'e' is pressed,find linux16
3.add 'selinux=0' after 'crashkernel=auto'
4.press 'ctrl+x' to start the linux.


Change your root password,when you forgot your password
1.choose 'e' to edit the selected boot option
2.find line 'linux16'.
3.modify 'ro' to 'rw init=/sysroot/bin/sh' and press 'ctrl+x'
4.chroot your system 'chroot /sysroot'
5.enter 'passwd'
6.enter 'touch /.autorelabel'
7.exit chroot by enter 'exit'
8.reboot your system 'reboot'


常用硬件检测命令
fdisk:显示分区表
hdparm:硬件的读写速度和硬盘的信息
dmesg:内核运行过程中显示的各项信息
vmstat:显示系统(CPU/RAM/IO)状态
lspci:列出整个pc系统的pci接口设备状态
lsusb:列出目前系统中的各个UB端口的状态和连接的USB设备
iostat:与vmstat类似,但是是实时的。


软件开发商在软件中会有个configure或者config文件,用来检测操作环境,同时,在安装完成后,生成Makefile or makefile文件,方便make命令直接进行调用,makefile文件包含了源码如何编译的详细信息。


软件的安装
gcc -c (-Wall产生更详细的编译过程) filename1(源文件.c结尾) filename2
gcc -o 可执行文件名 filename1(目标文件.o结尾) filename2
直接运行的可执行文件。


so 如果后期更新了其中的某一个文件,只要对该文件重新编译下就好了,别的文件无需重新编译。


gcc -lm(l表示加入某个函数库,m表示是libm.so这个函数库,因为默认的libm.so在/lib与/usr/lib中,所以不需要这么写-L/usr/lib)
gcc -I/path 搜索/usr/include 中相关的include的文件。


makefile文件的作用:生成一次编译完成的所有信息。
makefile的基本语法
目标(target):目标文件1 目标文件2
<tab> gcc -o 欲新建的可执行文件 目标文件1 目标文件2
tab必须有,这是按tab键,不是输入tab


常见软件安装
1、解压到/usr/local/src下
2、查看install和readme
3、./configrue --help|more查看参数有哪些
4、./configure --prefix=/usr/local/ntp(软件将来要安装到哪里去。)
5、使用make文件,即make clean/check/install
make的用法
make install/clean(具体内容看makefile里面的类似于函数段的target)


对于软件的升级
常用的命令是diff和patch

patch的语法
patch -p数字 < patch_file
比较的内容都卸载patch_file中,而-p后面的数字n代表着去掉patch_file中第一行路径的n个斜杠。


静态函数库
1、扩展名为.a
2、编译行为,文件会比较大一点
3、独立执行的状态
4、升级方面:只要函数库升级了,所有将此函数库纳入的程序都要重新编译。
动态函数库
1、扩展名为so
2、文件相对较小
3、独立执行的状态
4、升级更加容易。


通过ldconfig与/etc/ld.so.conf来协助将链接库写到内存中。
将需要的动态链接库写入/etc/ld.so.conf中然后执行ldconfig -p即可将内容写到内存。


ldd filename 将该文件的所有动态链接库显示出来。
md5sum来确定md5码


软件管理器的2大主流
DPKG:Debian/Ubuntu,dpkg,APT(apt-get)
RPM:Red Hat/Centos,rpm rpmbuild,YUM(yum)
为了解决PRM的必须在原本默认的环境中安装的问题,产生了SPRM
安装SPRM的时候,先将SPRM,编译成PRM,再进行安装,这样产生了maikefile,config等文件,从而和现在状态的机子更加合适(默认已经编译完的PRM由于已存在固定的config,makefile文件,导致无法更改,从而影响安装。)
SPRM文件格式为***.src.rpm RPM文件的默认格式为***.rpm
默认安装包的名字为:rp-pppoe-3.1-5.i386.rpm 即 软件名-版本号-发布次数-适合硬件平台-扩展名。P.S.常见软件平台见《鸟哥的私房菜》P688


RPM的默认安装路径:/usr/bin:/usr/lib:/usr/share/doc:/usr/share/man
安装方法
rpm -ivh(install|详细信息|安装进度) filename/url
安装前可以通过rpm -ivh filename --test来进行依赖性测试。


更新
rpm -Uvh 后面软件如果没有安装过,那么进行安装,如果有旧版本,那么更新至新版本。
-Fvh 如果没有安装过,那么不进行安装,如果已有,那么进行“升级”


查询
rpm -q(a查询所有) rpmname 查询是否安装。


验证
rpm -V rpmname 验证rpm
左侧8个信息详见p694
数字证书验证,下载证书,如果证书无法对上,那么无法进行安装。


删除
rpm -e rpmname


rpm -rebuilddb 创建rpm数据库


SRPM的使用
安装
rpmbuild(Red Hat7.3以前的用户用rpm) --rebuild (仅仅编译生成***.rpm) --recompile(编译并安装)
如果需要对某些参数进行修改的话,那么寻找对应的*.spec文件,并修改其中的内容(详细参数见P701)


自行生成SPRM文件
1、制作源代码文件tarball
2、新建*.spec的设置文件
3、编译为RPM与SRPM rebuild -ba specname


YUM安装
yum [install][update][remove] filename 安装,更新,删除软件。
修改yum链接的地址等配置信息
/etc/yum.repos.d/CentOS-Base.repo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值