发现自己的linux水平楞个瓜皮,找个视屏教程学习一哈
1 linux系统简介
1.1 UNIX和Linux发展史
unix发展历史:1969年,美国贝尔实验室的肯.汤普森开发出unix系统,1971年丹尼斯·里奇发明C语言,1973年,unix用c重写
硬件平台的概念 也就是cpu架构
PowerPC IBM AIX
PA-RISC HP HP-UX
SPARC Sun Solaris
IA(Intel、AMD、Cyrix、RISE…) Red Hat Linux、Ubuntu… linux
AIX和HP-UX是不能安装在pc中,必须在特定的服务器上,Solaris可以
freebsd 加州大学伯克利分校
mac也是由unix演变来的
linux发展历史:1991年,Linus Torvalds和其他众多爱好者开发完成
Linux是开源软件,源码开放的UNIX
内核官网:www.kernel.org
版本号如 2.6.18
目前最新 4.18.4
次版本是偶数是稳定版奇数是开发版,这种说法在主版本更新到3就没了
发行版:redhat系列(yum)和debian系列(apt-get)
fedora是rhel的实验版本,要收费
centos完全免费 社区维护
gentoo linux不适合初学者
SUSE在欧洲用的多,界面都快赶上unbuntu
KNOPPIX不用安装,类似livecd
ubuntu界面漂亮,桌面用户多点,server端并不多
1.2 开源软件简介
商业软件是收费的
开源软件免费但是可以收服务费
使用、研究、散布及改良的自有
1.3 Linux应用领域
基于Linux的企业服务器
www.netcraft.com 扫描和踩点网站
嵌入式应用
安卓、手机、平板、智能家电、航空、银行、卡拉OK点歌系统、树莓派
1.4 学习方法
善用工具
英文
忘掉windows思维方式
2 Linux系统安装
磁盘分区
分区类型
主分区:最多4个
扩展分区:最多1个,不能写入数据,只能挂载逻辑分区
主分区+扩展分区 最多4个
逻辑分区
格式化(高级格式化)又称为逻辑格式化,是要在硬盘中写入文件系统
ext4 4k 数据块 block
i节点 inode列表
低级格式化是硬盘操作不是操作系统操作
硬件设备文件名:
IDE硬盘 hd[a-d]
SCSI/SATA/USB硬盘 sd[a-p]
光驱 cdrom或sr0
鼠标 mouse
打印机(25针) lp[0-2]
打印机(USB) /dev/usb/lp[0-15]
ide 133MB 最古老, scsi都淘汰了 200MB贵服务器
SATA3 串口硬盘 500MB/s 现在一般都是这个
逻辑分区不能占用1 2 3 4编号 5一定是第一个逻辑分区
挂载:
/ 根分区
swap分区 交换分区 内存1.5-2倍 不超过2G
推荐分区/boot 启动分区 200m即可 太大无用,系统启动都要有空闲空间,防止系统写满导致无法启动,写完之后永远不会往这个分区再写入数据,他永远有空闲空间 boot分区一定是sda1第一个分区
挂载点必须是空目录
安装日志:
/root/install.log:存储了安装在系统中的软件包及其版本信息
/root/install.log.syslog 存储安装过程中留下的事件记录
/root/anaconda-ks.cfg 已Kickstart配置文件的格式记录安装过程的选项设置 作为无人值守安装的模板
linux 严格区分大小写
命令全是小写
文件名区分大小写
tab键自动补全
linux中一切皆文件 设备文件是特殊的文件
永久生效都要写入文件 写入内存的都是临时生效
linux不通过扩展名区分文件类型
linux存储设备都必须挂载后才能使用
目录作用
/bin 存放系统命令,普通用户和root都可以执行
/sbin 保存和系统环境设置相关的命令,只有root能执行
/usr/bin
/usr/sbin
/boot 系统启动目录
/dev 设备文件
/etc 配置文件
/home 宿主目录
/lib 系统函数库
/lost+found/ 当系统崩溃或意外关机而产生的文件碎片。当系统启动过程fsck工具会检查这里,并修复系统 每个分区都有自己的这个目录
/media 挂载目录 多媒体设备 光盘
/mnt 挂载目录 u盘移动硬盘或其他操作系统分区
/misc 挂载目录 系统建议用来挂载nfs服务的共享目录
/opt 第三方软件保存位置 用处不多,现在外部软件一般放/usr/local目录
/proc 虚拟文件系统 放内存中 当前系统的进程和硬件信息
/sys 虚拟文件系统 放内存中 存放内核相关信息
/root root家目录
/srv 服务数据目录
/tmp 临时
/usr 系统软件资源目录
/var 动态数据保存位置。保存缓存、日志及软件运行产生的文件
usr unix system resource
服务器不允许关机,只能重启
重启时应该关闭服务
不要在服务器访问高峰运行高负载命令
远程配置防火墙时不要把自己踢出服务器
合理分配权限
定期备份重要数据和日志
mint 默认不启用root用户,sudo passwd root来启用
mint也默认不启用ssh,sudo apt-get install openssh-server然后修改配置文件vi /etc/ssh/sshd_config 修改PermitRootLogin yes行,来允许root用户ssh远程登陆
3 常用命令
3.1 文件处理命令
命令格式 命令 [-选项] [参数] ls -al /etc 中括号表示可选
个别命令不遵守此格式 多个选项可以写一起 简化选项和完整选项 -a –all
目录处理命令:
ls list /bin/ls -aldh
所有者 所属组 其他人 ugo rwx 读写执行权限 777 软链接 硬链接
-表示文件 d表示文件 l表示link
.开头的文件表示隐藏文件 .当前目录 ..父目录
mkdir /bin 创建目录 -p 表示递归创建 -m=mode 可以同时创建多个目录 空格分割
cd 切换目录 change directory shell内置命令
pwd /bin 显示当前目录
rmdir remove empty directories /bin 删除空目录
cp copy /bin -rp r表示递归 p保留文件属性 可以复制多个文件
mv move /bin 剪切、改名 可以剪切多个
clear ctl+l 清屏
rm 删除文件 remove /bin -rf f表示强制执行
文件处理命令:
touch /bin 创建空文件 文件名如果是有空格 加双引号 不建议
cat 查看文件 /bin -n 显示行号
tac 导致显示
more 分页显示文件内容 /bin 空格或f 翻页 q或Q退出 enter换行
less 同more不过可以向上翻页 pageup 上箭头 还可以搜索 /词儿 高亮显示搜索到的 n显示下个搜索到的
head 查看前几行 -n 默认10行
tail -fn 查看后几行 -f实时监控
链接命令:
ln link /bin ln -s [原文件] [目标文件] -s表示软连接 不加表示硬链接
软连接类似win快捷方式,l标记权限全是777 软连接很小
硬链接和原文件的i节点相同
硬链接删除源文件,目标文件依然可以使用。软链接一旦删除源文件,目标文件不可用
和cp -p的不同处 修改一处后,另外一处也会同时更新。
硬链接不能跨分区 硬链接不能对目录使用
3.2 权限管理命令
chmod root和所有者可以改权限
change the permissions mode of a file
/bin
-R 递归修改 mode=421 {ugoa}+-={rwx}
可以同时进行多个授权
更多的是用数字方式 777 表示拥有全部权限
对目录 r表示可以列出目录内容 w表示可以在目录中创建 删除文件 x可以进入目录
删除文件的权限是对所在目录有写权限
对目录有r权限就一般有x权限
chown 只有root可以改
change file ownership
chgrp
useradd
groupadd
一般谁创建的文件 谁就是所有者
一个用户有多个组 单有个缺省组 文件的创建者的缺省组就是文件的所属组
umask -S 缺省权限 u=rwx,g=rx,o=rx
创建目录的权限和缺省权限一样
创建文件的权限是缺省权限去除x权限 防木马病毒
umask 0022 0 特殊权限 022 真正的权限是777-022=755
umask 023
3.3 文件搜索命令
find 搜索会占用大量资源 不要在服务高峰期使用 window中everything挺好用的,不过没有linux版本,并且只支持ntfs分区
/bin find [搜索范围] [匹配条件]
-name 根据文件名搜索 find /etc -name init
通配符 *匹配任意字符 ?匹配单个字符
-iname 忽略大小写
搜索范围越小越好 能不在根目录下就不要全局搜索 严重耗费资源
-size 指定文件大小 +- linux一个数据块512B 就是0.5k 查找大于100M的文件find / -size +204800
-user 找所有者的文件
-group 找所属组的文件
根据时间属性查找
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
find /etc -cmin -50 查找50分钟以内修改过文件属性的文件 +-
连接选项 -a两个条件同时满足 -o两个条件满足任一 find / -size +163840 -a -size -204800
find /etc -name init -exec ls -l {} ; -exec/-ok 命令 {} ; 对搜索结果执行操作 -ok有确认询问
-type 根据文件类型 f文件 d目录 l软连接
-inum 根据i节点查找 可以找硬链接
locate命令
/usr/bin 在文件资料库中查找
yum install -y mlocate
会定期更新
速度快
updatedb 初始化
locate -i 不区分大小写
/tmp目录不被收录 某些目录不被收录
which 命令搜索 which ls 还能搜到命令别名
whereis 还能搜到帮助文件
grep -i 不区分大小写 -v排除指定字符串 ^表示行首 反向查找 屏蔽
3.4 帮助命令
man manual /usr/bin
可以查命令帮助 也可以查配置的帮住
man ls
man services 不可以写绝对路径
可以 /内容 查找
man passwd 优先查命令 1一般是命令的帮住 5一般是配置文件的帮住
man 5 passwd 是查配置
whatis 可以查到命令的简短介绍 就是帮助文档的name部分
apropos 可以查配置文件的简短介绍 也不要加绝对路径
–help 只看选项 不会man那么长
info 和man大同小异
help 可以查看shell内置命令的帮助
shell内置命令找不到路径
3.5 用户管理命令
useradd 加用户
passwd 改密码 普通用户改自己密码需要满足复杂度要求
who 查看哪些用户登录 tty表示本地登录 pts表示远程终端
w 查看登录用户及正在干嘛
3.6 压缩解压命令
绝大多数病毒很难感染压缩文件
常用压缩格式
.gz linux中常用格式 命令gzip gunzip解压缩 或者gzip -d
压缩比很惊人 差不多5倍
不过gzip只能压缩文件 不能目录
压缩解压均不保留源文件
.zip linux和win通用格式
zip命令 保留源文件 -r压缩目录
压缩比差于gzip
unzip解压缩 不区分文件和目录
.tar .tar.gz可以压缩目录
tar命令 -z 打包同时压缩格式为gz -c打包 -v verbose详细 -f 指定文件名 -x解包 -j打包同时压缩格式为bz2
.bz2 gzip的升级版
bzip2命令 -k可以保留原文件 压缩比惊人
bunzip2 解压缩.bz2文件 -k可以保留源文件 bzip2 -d也可以解压
tar -xjf 可以解压.tar.bz2文件
3.7 网络命令
write 发信息给服务器上其他用户,登录了的用户才能发信息 最初的及时通讯 ctrl+d结束
wall 给所有在线用户发信 , writeall的意思
ping 给远程用户发送icmp包,检测目标是否存在,每经过一个路由节点ttl减少1 不同系统ttl初始值不一样 可以大概判断对方操作系统类型 linux是64
ifconfig 查看当前网络 eth0是初始网卡 lo是回环网卡用户检测tcpip是否通畅,mac地址是固话在网卡的只读存储器中的地址不可变
ifconfig eth0 192.0.0.0 可以临时更改ip
mail 邮件命令 用户不在线也可以 mail用户名发信 mail啥都不跟收信 输入help查看帮助 输入序列号查看信 h可以看到信列表 d 1 删除邮件
last 重启信息都有 所有用户登录信息 非常有效 常用的命令
lastlog 同last只记录最后一次登录 lastlog -u 502指定用户
traceroute 显示数据包到主机间的路径 凡走过必留痕迹 结果显示**是被该节点屏蔽了
netstat 显示网络相关信息 -t tcp协议 -u udp协议 -l 监听 -r路由 -n 显示ip端口
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由
tcp 传输控制协议 有三次握手协议 更可靠 类似打电话
udp 用户数据报协议 更快 类似发短信
tcp才可以监听端口 udp不可以 udp可以直接发送
发起端口是随机的 目标端口才是22 80等端口
setup 修改网络, 是redhat中特有的 其他版本没有 永久生效
yum install -y setuptool
安装工具组件如 ntsysv(系统服务)system-config-networktui(网络服务)iptables(防火墙配置)
yum install system-config-securitylevel-tui
yum install iptables
yum install ntsysv
yum install system-config-network-tui centos7,已经setup已经无法配置网络了,该命令中无法找到,推荐使用nmtui命令
service network restart 重启网卡
mount 挂载
mount -t iso9660 /dev/sr0 /mnt/cdrom
/dev/cdrom 是/dev/sr0的软连接
-t iso9660 可以不写 默认就是
umount /dev/sr0
如果正在挂载目录中,是卸载不了提示设备忙,要退出挂载目录
3.8 关机重启命令
shutdown
shutdown -h now
shutdown -h 8:30
shutdown -r now
shutdown -r 8:30
最早期只有shutdown 可以正确保存服务,目前其他命令也可以不过推荐使用shutdown
-c 取消前一个关机命令
-h 关机
-r 重启
服务器不能关机 只能重启 谨记
halt
poweroff 相当于直接断电 比较危险
init 0
上面3个命令也可以关机
reboot重启
init 6也可以重启
系统运行级别:表示linux启动时候可以进入的级别号
0 关机
1 单用户 类似win启动f8安全模式,启动最小服务,启动最小核心程序,用户修复系统,只能root登陆,没有图形界面和win安全模式不一样
2 不完全多用户,不含nfs服务 nfs验证机制弱,不建议用这个文件共享
3 完全多用户
4 未分配
5 图形界面
6 重启
cat /etc/inittab 是init的配置文件 别改0或6 改错就不好了
X11代表图形界面 X表示X-window
runlevel 查询系统运行级别
logout 注销 做完操作一定要退出 防止安全隐患
4 Vim文本编辑器
vim是vi的增强版
vim是功能非常强大的全屏幕文本编辑器,是linux/unix中最常用的编辑器
vim没有菜单只有命令
命令模式
插入模式 iao进入 esc退出
编辑模式 输入: 进入编辑模式 命令以回车结束 :set nu 显示行号 :wq保存退出
插入命令
a 在后面插入
A 在行尾插入
i 在前面插入
I 在行首插入
o 在下行插入
O 在上行插入
定位命令:
:set nu 显示行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
:n 到第n行
$ 移到行尾
0 移到行首
删除命令:
x 删除光标出字符
nx 删除光标所在处后n字符
dd 删除当前行
dG 删除光标所在行到文件尾
D 删除光标所在处到文件尾
:n1,n2d删除指定范围行
复制和剪切命令:
yy 复制当前行
nyy 复制n行
dd 剪切当前行
ndd 剪切多行
p、P 粘贴到当前行下或者行上
替换和取消命令
r 替换单个字符
R 多个字符替换,esc结束
u 取消上一步操作 undo
搜索和搜索替换命令:
/string 搜索字符串 搜索时候忽略大小写:set ic 取消 :set noic n下一个
:%s/old/new/g 全文替换 %s表示全文替换
:n1,n2s/old/new/g 范围替换 g可以换c 表示需要询问
不加g表示只对搜索字符串的首次出现进行替换
保存退出命令:
:w 保存
:w new_filename 另存为
:wq 保存退出
ZZ 是:wq的快捷键
:q! 不保存退出
:wq! 强制保存退出 文件所有者和root可以操作
导入命令执行结果 :r !命令 :r 文件名
定义快捷键 :map 快捷键 触发命令
:map ^P I#<ESC> ^P 是ctrl+v+p 来输入 颜色不一样 代表快捷键ctrl+p
连续注释 :n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^////g 避免转义符 可以用#或者其他字符来表示分割
ls是别名 ls 转义符可以使用ls本来命令
自动替换 :ab mymail yongestcat@126.com
这些设置重启失效 要永久生效 要写入对应用户的home目录下的vim配置文件 /root/.vimrc 这里面只能放编辑模式的命令 不用加:
5 软件包管理
软件包分类:
源码包(看到源码 安装慢 但是更加稳定执行效率高 系统高度适配 卸载方便 可以自由选择所需功能,安装步骤多,编辑时间长,安装一旦报错新手工解决)
>脚本安装包 特殊的源码包 一般是install.sh安装 给初学者用的
二进制包(经过编译 安装快 资源利用率稍低 包管理简单 源码不可见 功能选择不如源码包灵活 依赖性):rpm包、系统默认包
rpm命令管理
httpd-2.2.15-15.el6.centos.l.i686.rpm
软件包名 软件版本 软件发布次数 适合的linux平台 适合的硬件平台 noarch表示适合任何硬件平台 没写linux平台表示适用所有linux平台
包名 安装过的 /var/lib/rpm/中的数据库
包全名 未安装过的 绝对路径
rpm包依赖性
典型的是树形依赖 a->b->c
环形依赖 a->b->c->a abc用一条命令安装可以解决
模块依赖 模块依赖查询网站 www.rpmfind.net
1.安装软件:执行rpm -ivh rpm包名,如:
#rpm -ivh apache-1.3.6.i386.rpm -i install 安装 -v 详细 -h 显示进度 –nodeps 不检测依赖性,一般不用
2.升级软件:执行rpm -Uvh rpm包名。
3.反安装:执行rpm -e rpm包名。
4.查询软件包的详细信息:执行rpm -qpi rpm包名 可以查未安装的包
5.查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名
6.查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名
rpm -qa|grep
rpm -qi 包名
rpm -qf 文件名
rpm -qRp 包名 查依赖
rpm -V 校验
S 文件大小是否改变
M 文件的类型或权限是否被改变
5 MD5校验是否改变
D 代码是否改变
L 文件路径是否改变
U 文件的属主是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变
文件类型:
c 配置文件
d 普通文件
g ghost文件,就是该文件不应该被rpm包含,很少见
l 授权文件
r 描述文件
rpm包文件提取:
rpm2cpio 包全名 | 将rpm格式改为cpio格式
cpio -idv .文件绝对路径 i copy-in模式,还原 d还原时自动新建目录 v详细 cpio是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
yum在线管理
自动解决依赖性问题,不能上网 可以用光盘作为yum源
yum在redhat中需要收费
网络yum源 vi /etc/yum.repos.d/CentOS-Base.repo
[base] 容器名称
name 容器说明,自己随便写
mirrorlist 镜像站点 可以注释掉
baseurl yum源服务器地址
enabled 是否有效 不写默认是1 表示有效
gpgcheck 1表示rpm的数字证书生效
gpgkey 数字证书的公钥文件保存位置。不用修改
yum命令
yum list 查询可用软件包
yum search 包名 查询
yum中没有包全名概念,全用包名
yum install -y 包名 安装包
yum -y update 包名 升级 如果没写包名就是全部升级包括内核 会导致服务器崩溃 因为需要本地配置些 慎用
yum -y remove 卸载 会把依赖的包也卸载 这些卸载的依赖包可能被别的软件依赖 卸载命令不安全
安装的时候最小化安装 尽量不卸载 不全局升级
yum grouplist 查询软件组
yum groupinstall 软件包组
yum groupremove 软件包组
光盘yum源搭建:
挂载
网络yum源失效 enable=0或者改名其他yum源文件
修改 CentOS-Media.repo enable=1 地址改为file:///mnt/cdrom
源码包安装是人为手工指定安装位置 而rpm是默认位置
rpm默认安装位置
/etc/ 配置文件安装目录
/usr/bin 可执行文件安装位置
/usr/lib 库文件位置
/usr/share/doc 手册位置
/usr/share/man 帮助文件位置
源码包一般安装在 /usr/local/软件名 这是系统给准备的第三方软件位置
安装位置不同带来的影响 服务的管理
rpm包安装的服务可以用系统服务管理命令service来管理,例如rpm包安装的apache启动方法/etc/rc.d/init.d/httpd start 或 service httpd start
service 命令是红帽专有命令 别的linux发行版不一定有
service命令不能管理源码包安装的服务
源码安装:
需要gcc编译器
下载源码包
解压 进入目录
./configure –prefix=/usr/local/apache2 定制功能、检测系统环境是否符合、将定义的功能和检测的信息写入Makefile文件,用户后续的编辑
make && make install 编译 编译安装 make clean
报错:安装停止且出现warning、error、no等提示
脚本安装:
自动安装的源码包 适合新手 下一步下一步那种
debian系列中apt是apt-get、apt-cache、apt-config的集合
apt 命令 取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示安装细节
当然也有apt独有的命令
新的apt命令 命令的功能
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表
6 用户和用户组管理
相关配置文件
/etc/passwd 用户信息文件 7个字段
用户名 密码标志x表示有密码 如果没有的话 不校验密码登陆不过只能本机登陆 不能远程
UID 0:超级用户 1-499 系统用户(伪用户 不能登陆不能删除) 500-65535 普通用户
root不一定是管理员 uid=0的一定是管理员 普通用户改为uid0就变成管理员了
GID:初始组id
用户说明
家目录
登陆之后的shell
初始组:有且只有一个一般和用户名相同 能改 但是不推荐改
附加组:可以有多个
影子文件 /etc/shadow 权限000 9个字段
用户:
密文密码sha512散列加密 比之前的md5更安全(同一个密码加密出来的也不一样)如果!!或者*表示没有密码表示不能登陆:
密码最后一次修改日期 时间戳 1970年1月1日 没过1天 加1算出来的时间戳
两次密码的修改间隔
密码有效期
密码到期前的告警天数
密码到期后的宽限天数 0表示过期后立即失效 -1表示密码永远不失效
账号失效时间 时间戳表示
保留
时间戳换算
date -d “1970-01-01 16066 days”
echo $(($(date–date=”2014/01/06″+%s)/86400+1))
组信息文件/etc/group
组名
组密码标志
GID
组中附加用户
添加用户会生成一个同名组作为用户主组
/etc/gshadow 组名 组密码 组管理员用户名 组中附加用户
用户的邮箱
/var/spool/mail/用户名/
用户模板目录
/etc/skel/
用户管理命令
useradd 选项 用户名
-u UID 手工指定uid
-d 家目录
-c 用户说明
-g 组名
-G 附加组
-s shell
用户默认值文件/etc/default/useradd
GROUP=100 #用户默认组 公有模式 私有模式
HOME=/home #用户家目录
INACTIVE=-1 #密码宽限天数(shadow文件7字段)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
/etc/login.defs 定义了shadow文件中7 8字段之外的字段
PASS_MAX_DAYS 9999 # 5字段
PASS_MIN_DAYS # 4
PASS_MIN_LEN 5 #最小8位 这个5 没用 现在pam文件生效
PASS_WAR_AGE 7 #6
UID_MIN 500
UID_MAX 60000
ENCRYPT_METHOD SHA512
添加用户默认值都靠上面两个文件
passwd命令
-S 查询用户密码状态 仅root可用
-l 暂时锁定用户 仅root shadow文件密码暗文前面加双!!
-u 解锁用户 仅root
–stdin 可通过管道符输出的数据作为用户的密码
echo “123” | passwd –stdin lamp 一般用与shell编程
whoami
usermod 修改用户信息
-u 修改uid
-c 说明 有空格用双引号
-G 加入附加组
-L 锁定
-U 解锁
chage 修改用户密码状态
-l 列出用户的详细密码状态
-d 日期:修改密码最后一次更改日期(shadow 3字段)
-m 天数: 两次密码修改间隔(4字段)
-M 天数: 密码有效期(5字段)
-W 天数: 密码过期前警告天数(6字段)
-I 天数: 密码过期后宽限天数(7字段)
-E 日期: 账号失效是加(8字段)
chage -d 0 king 要求用户一登陆必须改密码 其他的基本都不用记 直接修改shadow文件更直观
userdel命令 删除用户
-r 同时删除家目录
手工删除用户
vi /etc/passwd
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/lamp
rm -rf /home/lamp
id user1 查看用户信息
su 切换用户
– 选项表示同时切换环境变量 su root 和su – root env命令可以查看环境变量
-c 仅执行一次命令 不切换身份 su – root -c “useradd user3”
groupadd 添加组
-g GID 指定组id
groupmod 修改组
-g GID 改组id
-n 新组名 改组名
groupdel 删除组
如果组中有用户,组中有初始用户 不能删,如果是附加组 可以删除
gpasswd 把用户添加组或者从组中移除
-a 用户名
-d 用户名
7 权限管理
ACL权限 解决身份不足问题 所有者所属组其他人 不够用
查看分区ACL权限是否开启
dumpe2fs -h /dev/sda1 默认支持acl Default mount options: user_xattr acl
-h 仅显示超级块中信息,而不显示磁盘组的详细信息
临时开启分区ACL权限
mount -o remount,acl / #重新挂载根分区,并挂载加入acl权限
永久开启ACL
vi /etc/fstab 文件 系统开机自动挂载 写错了的话 系统可能崩溃 一定小心
defaults,acl 万一默认不支持 后面,acl 重启生效
查看acl命令
getfacl 文件名 不支持绝对路径 报错但是不影响
设定acl权限
setfacl命令
-m 设定ACL
-x 删除指定ACL
-b 删除所有acl
-d 设定默认acl
-k 删除默认acl
-R 递归设置acl
chown root:tgroup /project
chmod 770 /project
setfacl -m u:st:rx /project u表示用户 g表示组
给用户st赋予r-x权限,u:用户名:权限
setfacl -m g:group2:rx /project
drwxr-xr-x+ 2 root root 4096 Sep 6 11:41 king 多个+号表示有acl权限
最大有效权限mask
如果给用户赋予了acl权限,是需要和mask的权限相与才能得到真正权限
不影响所有者的权限 但是影响acl和所属组的权限
setfacl -m m:rx 文件名 设置mask
setfacl -b 文件
setfacl -x g:tgroup2 /project/
递归acl权限 -R选项 注意只能放后面 老的文件都要递归设置下
默认acl权限 如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会,只针对新文件 -R可以不取消
setfactl -m d:u:用户名:权限 文件名
文件特殊权限
SetUID的功能:(危险)
只有可以执行的二进制程序才可以设定SUID权限
命令执行者要对该程序有x权限
命令执行者在执行该程序时获得该程序文件的属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令有SUID权限 在执行期间可暂时获得root身份得以改写shadow文件
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
cat没有SUID权限,所以普通用户不能查看/etc/shadow文件内容
设定方法 4代表SUID
chmod 4755 文件
chmod u+s 文件名
用户必须对他有执行权限,否则显示大写S,表示报错
危险的SUID权限,系统一些SUID权限的是迫不得已,轻易不能设置,并且定期巡检
比如给vim加SUID权限,那么普通用户,红色表示危险,系统警告,然后vim普通用户也能改系统关键信息比如shadow文件等
SGID也可以针对目录:(不那么危险)(用处不大)
普通用户必须对此目录有rx权限,才能进入此目录
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对目录有w权限时候,新建的文件的默认属组是这个目录的属组
SGID针对文件:(危险)
只有二进制可执行文件可以设置SGID
命令执行者要有x权限
命令执行时候组身份升级为该程序属组
只在执行程序时候有效
locate命令就是这样的 有SGID权限 临时提升为slocate用户组
/var/lib/mlocate/mlocate.db数据库
SGID 在所属组中有s权限 2代表
chmod 2755 文件
chmod g+s 文件名
SBIT权限 黏着位权限 对root无效(不危险)
只对目录有效
普通母对该目录有wx权限,即普通用户可以在此目录拥有写入权限
如果没有黏着位,因为木桶用户有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予黏着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,不能删除其他用户建立的文件
chmod 1755 目录
chmod o+t 目录
chmod 7755 文件 特殊权限位 7没有作用 根据需要赋予
文件系统属性chattr权限: 对root也能限制
chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files…
+-=权限
i:针对文件,那么不允许对文件删除改名,也不能添加和修改数据 相当于锁起来了;针对目录,那么只能修改目录下文件的数据 单不允许建立和删除文件
a:针对文件,那么只能在文件中增加数据,但是不能删除也不能修改数据;针对目录,那么只能在目录中建立和修改文件,不能删除文件
lsattr命令: 文件系统属性查看 -a -d
这也不能限制到root 只是防止误操作
selinux可以限制root
sudo权限 su指的是switch user,并不是super do
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的对象是系统命令
visudo #实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
用户或者组(%组名) 被管理的主机=(可使用的身份) 命令 (绝对路径)
man 5 sudoers
8 文件系统管理
分区和文件系统
主分区:总共最多4个
扩展分区:只能有1个,并且也算主分区的一种,主分区+扩展分区最多4个。但是扩展分区不能存储数据和格式化,必须再划分为逻辑分区才能使用
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,入股欧式scsi硬盘linux最多支持11个逻辑分区
逻辑分区从sda5开始编号,就算主分区不足4个,sd表示sata硬盘,hd表示ide硬盘,也就是第一个逻辑分区一定是5
文件系统:
ext2:是ext文件系统升级版本,red hat linux 7.2版本以前系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件
ext3:和ext2支持大小一样,区别是支持日志功能
ext4(现在主流分区):centos6以后的主流分区,最大支持1EB和单个16TB文件,在性能、伸缩性、可靠性方便大量改进,ext4的变化是翻天覆地的,向下兼容ext3,无限数量子目录、extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启动barrier等
常用命令:
df 统计文件系统的占用情况
-h 人性化显示
du 统计目录大小
du -sh /etc/
-h
-s 统计和
df和du统计根分区不一样大小,df是从文件系统考虑,不仅考虑文件占用的空间,还要统计呗命令或程序占用的空间(最常见的就是文件已经删除但是程序并没有释放空间),定期重启还原系统状态
df看到的剩余空间才是真正的空间
du命令是面向文件的,只会计算文件或目录占用的空间
fsck 文件系统修复命令
-a 不用显示用户提示,自动修复文件系统
-y 自动修复,和-a一致,不过有些系统只支持-y
该命令不需要人工执行,系统启动的时候自动检测,知道就好
dump2fs 显示磁盘状态命令,最主要是的看分区数据块大小和是否支持acl
mount 挂载命令
mount [-l] 查询系统中已经挂载的设备,-l会显示卷标名称 这些输出内容又叫超级块的内容
mount -a 根据配置文件/etc/fstab的内容,自动挂载
命令格式
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
fat32识别vfat fat16 识别fat
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载 没啥用处 起个别名的意思
-o 特殊选项:可以指定挂载的额外选项
atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认更新
async/sync 异步/同步,默认为异步
auto/noauto 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这7个选项
exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认exec允许 有时候程序不能运行不一定是权限的事情
remount 重新挂载已挂载的文件系统,一般用户指定修改特殊权限 比较常用
rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
suid/nosuid 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有
user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认不允许只有root可以
usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
grpquota 写入代表文件系统支持组磁盘配额,默认不支持
umount 设备文件名或者挂载点 –先卸载才能弹出光盘 真机器中不卸载 不能在光盘目录中卸载会报错正忙
挂载u盘
fdisk -l
mount -t vfat /dev/sdb1 /mnt/usb
linux默认不支持ntfs格式
如何支持ntfs格式 :手工编译内核 将新的驱动加进来;下载ntfs-3g插件 http://www.tuxera.com/community/ntfs-3g-download
手工分区fdisk
fdisk /dev/sdb
m 帮助
n 新建
l 显示
d 删除
w 保存
partprobe命令重新读取分区表 有时候分区表正在被占用需要重启才能下一步,那就直接用这个命令 当做分区之后必定执行的命令
+2G
格式化分区
mkfs -t ext4 /dev/sdb1
然后创建挂载点挂载即可
自动挂载
/etc/fstab配置文件6个字段
第一字段:分区设备文件名或者UUID(硬盘通用唯一识别码) UUID防止分区改顺序 dumpe2fs -h /dev/sdb1能查到UUID
第二字段:挂载点
第三字段:分区类型
第四字段:挂载参数,和mount的挂载权限一致
第五字段:指定分区是否被dump备份,0代表不备份,1每天备份,2 不定期备份 lost+found是自动备份位置
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高
如果弄错,系统启动崩溃 所以不应该先重启 应该mount -a
如果崩溃 恢复 启动时候输入root密码可以操作 不过根分区是只读的 remount下挂为读写 然后重新编辑这个文件修复错误
mount -o remount,rw /
分配swap分区
free命令 查看内存与swap分区使用状况 -m 以兆显示 -h
cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存中读取,加速了数据的读取过程
buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存中,当达到一定程度再集中写入硬盘,减少磁盘碎片和硬盘的反复寻道,加速了数据的写入过程
fdisk /dev/sdb 建立个逻辑分区 83标准分区 t来改变分区id 改为82 就是swap分区 partprobe
格式化 mkswap /dev/sdb6
swapon /dev/sdb6 加入swap
swapoff /dev/sdb6 取消swap
swap开机自动挂载 /etc/fstab 和普通一样 挂载点是swap
9 SHELL 基础
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动挂起停止甚至编写一些程序。
硬件–>内核–>Shell–>外层应用程序
window图形交互界面也是shell
Shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
分类:Bourne Shell(linux识别为sh),C Shell(主要用在BSD版)
Shell的两种主要语法类型:Bourne和C 两个语法结构完全不同
Bourne家族主要包括:sh(单用户模式用的是这个)、ksh、Bash(主流,和sh兼容)、psh、zsh
C家族主要:csh、tcsh
/etc/shells 可以查询到系统支持哪些shell
Shell脚本的执行方式:
echo输出命令 -e 支持反斜线控制的字符转换
\ 输出本身
a 输出警告音
退格键
c 取消输出行末的换行符。和“-n”选项一致
e ESCAPE键
f 换页符
换行符
回车
制表符 tab
v 垂直制表符