一直为用户提供服务的进程就是守护进程一般以d结尾,如远程的sshd,web服务的httpd,文件传输的vsftpd等。
一、文件系统
文件的系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。
linux下一切皆是文件,一般对象分为文件及目录(类似文件夹用于存放多个文件)两种
linux的所有文件都在/(根)目录下,linux文件系统中所有文件的最顶级目录
切换到根目录下列举所文件
[root@yumserver /]# ls
bin data etc lib lost+found mnt proc sbin srv tmp var
boot dev home lib64 media opt root selinux sys usr
- bin 存放二进制可执行命令,一般是与开机无关的命令如:ls,cat
- sbin 存放的命令一般和开机有关
- boot 存放内核以及启动所需文件如Grub引导文件
- dev 存放硬件设备文件
- etc 存放系统配置文件服务配置文件如网卡配置信息等
- home 普通用户的家目录,类似windows下每个用户的桌面,每个用户有一个独立的用户名目录
- lib 存放必须的运行库文件
- mnt 一般用于挂载
- proc 存放进程及系统信息,虚拟文件系统,如系统内核,进程,外部设备及网络状态等
- root 超级管理员root的家目录
- usr 一般用于第三方安装程序的目录,个人用户安装目录
- tmp 存放临时文件目录,重启后该目录会清空,任何人都可以使用的共享临时目录
- var 存放日志文件,数据库等经常发生变化的文件目录
- media 多媒体一般用于挂载光盘
二、常用的配置文件
- 网卡配置文件,一般位置(centos7以后版本会随机命名为ifcfg-enXXXX)
/etc/sysconfig/network-scripts/ifcfg-eth0
- selinux安全策略配置文件位置
/etc/sysconfig/selinux
- yum源配置文件位置
/etc/yum.repos.d
- DNS服务器地址配置文件
/etc/resolv.conf
- 用户信息配置文件
/etc/passwd
- 用户组信息的配置文件
/etc/group
- 用户密码信息文件
/etc/shadow
三、常用启动服务命令
可以用 service + 服务名 + 动作 进行操作,也可以直接对加入启动项的服务进行操作如:
service network restart|stop|start
/etc/init.d/network restar
四、vi编辑器的常用操作
vim的三种模式:命令行模式、文本输入模式、末行模式
vi编辑时候注意要保持英文输入法,不要和中文输入法混肴,有些时候排错也要考虑输入法问题
正常输入 vi/vim filenames
可以用编辑器打开文件,默认为命令行模式
输入i
,左下角出现INSERT
进入文本输入模式可以对文件内容进行修改
编辑完成后按ESC
退出文本输入模式进入命令行模式,再按:
进入末行模式,此时输入w(write)
保存、q(quit)
退出、q!
强制退出。
vi编辑器的操作
快速定位操作:在命令行模式啊下按/
,屏幕左下角出现·/
后输入查找对象后回车,光标可以快速定位到文件中第一次出现的位置,此时按n(next)
光标会依次定位到后面出现的位置直至结束查找不到为止。
编辑文本时显示和消除行号(末行模式下)
set nu
set nonu
快捷操作:(在命令行模式下)
- dd 快速删除光标所在行
- u 撤销操作,一般文件未保存前可以用来撤销上一步的删除命令,或者不保存文件强退
- number dd 快速删除光标以后的多少行,如2dd
- G 光标跳转到最后一行
- gg 光标跳转到首行
- $ 光标跳转到所在行的行尾
- ^ 光标跳转到所在行的行首
- yy 复制光标所在行的所有内容
- number yy 快速复制光标以后的多少行,如2yy
- yG 复制从光标行到末尾
- ygg 复制从光标行到首行
- yw 复制光标所在的词组不会复制标点符号
- dw 删除光标所在的词组不会复制标点符号
- p 粘贴复制的内容
- dG 删除光标行到末尾
- dgg 删除光标行到行首
- o 光标快速在该行下面插入一个空白行进入文本输入模式
- O 光标快速在该行上面插入一个空白行进入文本输入模式
文字内容替换(在末行模式下,分隔符可以使#
或者/
或者@
)
%s/shanghai/beijing/g 全局替换
4,5s/shanghai/beijing/ 把4、5行的上海换成北京
五、linux系统的用户和组管理
一般分为三类
- 超级管理员root(UID为0)
- 系统用户(UID1-999),终端使用/sbin/nologin,不能登录系统,一般作为某个服务的管理用户
- 普通用户(UID100以上),终端/bin/bash
组(group)的概念是把具有相同特性的用户放在同一个组中,当把一个用户分配给一个组时,用户也会继承该组具有的共同特性
创建用户的时候会自动创建同名的组
用户之间的切换su命令
切换命令su - username
su后面带-号表示完全切换,切换用户的同时变更环境变量
#######sudo提权命令
给普通用户的部分命令授予root权限,sudo是服务,visudo 是配置工具有自动纠错功能,比直接修改配置文件更安全
[root@localhost ~]# visudo
root ALL=(ALL) ALL
linuxprobe ALL=(ALL) /usr/bin/cat,/usr/bin/reboot
#授权的命令必须是绝对路径,用逗号,间隔
[linuxprobe@localhost ~]# sudo reboot
文件权限
使用ll查看文件具体信息时候如下
-rw-r--r-- 1 root root 899 Aug 11 17:21 /etc/passwd
第一位如果是-
表示普通文件,d
表示目录directory
b表示块设备文件,c是字符设备文件,p是管道文件
后面九位分成三组看,分别代表所有者user,所属组group,其他人other对文件具有的权限
r
表示可读 w
表示可写 x
表示可执行,目录必须有x
权限否则无法访问
如果转换成二进制码表示r=4,w=2,x=1,如rwx所有权限可以表示为4+2+1,即7
linux系统规定创建目录的初始权限是777,文件初始权限666,默认掩码022,计算后目录权限就是755,文件就是644
对文件
- r读取文件内容
- w修改文件内容
- x如果是脚本文件则代表能执行脚本的权限
对目录
- r是否有权限查看该目录的文件列表的权限
- w是否有权限在目录中新建、删除及重命名的操作权限
- x是否有切入到该目录的权限
几种特殊权限
- SUID二进制的可执行命令文件
命令格式chmod u+s /user/bin/passwd
以passwd命令为例,在执行权限x位变为s,就代表SUID权限,小写s代表原本有x权限,大写S代表原来无权限-,t权限一样,小写都带表原来有x权限否则大写
SUID权限的意义是让程序的执行者临时获得所有者的权限去完成工作,如普通用户执行passwd命令时就获得超级管理员的权限,就相当于使用root去修改密码
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /usr/bin/passwd
- SGID权限
对二进制可执行命令的文件来说让程序执行者临时获取文件所属组的权限
对目录来说,让该目录下创建的子文件归属于上一级目录所属组的名称
命令格式chmod -R g+s /data/sh
- SBIT权限,也叫粘滞位或者保护位,针对目录设置的权限,在目录中创建的文件只能自己删除,其他用户无权删除
命令chmod -R o+t /data/sh
文件最大的权限是7777,第一个7代表特殊权限,SUID数值4.SGID数值2,SBIT数值1
因此7777就表示为rwsrwsrwt
示例:权限rwsrwSr--等价于6764
6345等价于-wsr-Sr-x
7654等价于rwSr-sr-T - 设置查看隐藏权限,i表示不可修改,a表示只能追加内容不能删除
日志文件建议添加隐藏权限a,防止被篡改
设置隐藏权限chattr
示例chattr +i /data/sh/a.txt
即时root也无法修改文件内容
查看隐藏权限lsattr
[root@localhost sh]# chattr +i /data/sh/a.txt #增加隐藏权限
[root@localhost sh]# lsattr /data/sh/a.txt #查看隐藏权限
----i----------- /data/sh/a.txt
[root@localhost sh]# chattr -i /data/sh/a.txt #删除隐藏权限
- 针对某个文件上的某个用户或用户组的特殊的权限安排,文件权限控制facl(file access control list文件的访问控制列表),设置setfacl,查看getfacl
[root@localhost sh]# setfacl -Rm u:linuxprobe:rwx /data/sh
#R表示递归,m表示修改,u后面跟针对的用户以及给与的权限,g一样跟针对的属组和权限
六、多条命令执行
连续多条执行的命令中间用;
分隔,表示命令依次执行,前面的命令执行结果不影响后面的命令执行
如果是用&&
分隔表示必须前面的执行成功才继续执行后面的命令
一般执行完某条命令后可以通过echo $?
来查看执行结果是否正确如果输出为0
表示正常,其他任何数值都需要检查执行过程查找报错信息erro
单个&
表示在后台运行的意思
七、linux系统软硬链接的区别
链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。
在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件, 链接文件和被链接文件的内容完全相同。如果[链接名]为一个文件,用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数 必须为目录。
如果给ln命令加上- s选项,则建立符号链接。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。
可以理解为硬链接相当于将目标对象复制一份,软链接则是为对象创建一个快捷方式`
- 软链接更类似快捷方式,指向的是旧文件的路径,旧文件删除也就随之失效
- 硬链接单独占用1个文件大小,指向的是硬盘中文件的位置,相当于新建的一个文件的inode