linux目录结构树形结构
/ 根目录:所有数据都在此目录下(Linux系统的起点)
/dev:存放设备相关数据
ls 格式 ls [选项] [目录或文件名]
常用命令选项 -l 以长格式显示
cat 查看文本内容
cat -n (加上行号)
命令字 选项 参数1 参数2
查看内核版本 uname -r
查看cpu lscpu
检查内存大小、空闲情况 cat /proc/meminfo
#临时设置IP ifconfig eth0 192.168.1.1
######################################################
创建目录
• mkdir — Make Directory
– 格式:mkdir [/路径/]目录名...
#########################################################
• touch命令
– 用途:新建空文件
– 格式:touch 文件名...
#####################################
文本内容操作
• less分屏阅读工具,查看内容较多的文件
• 格式:less [选项] 文件名...
– 优势:支持前后翻页
• 基本交互操作
[root@A ~]# less /etc/passwd
– 按 上 下键进行滚动
– 按 /root 全文查找root字符串
– 按 q 退出
######################################
• head、tail 命令
– 格式:
head -n 数字 文件名
tail -n 数字 文件名
[root@A ~]# tail -1 /etc/passwd
[root@A ~]# head /etc/passwd #默认显示头10行
#############################################
• grep工具
– 用途:输出包含指定字符串的行
]# grep root /etc/passwd #在/etc/passwd中过滤包含root的行
###################################################
pwd命令查看当前位置
####################################################
• 快捷键
– Ctrl + c:废弃当前编辑的命令行(结束正在运行的命令)
– Esc + . 或 Alt + . :粘贴上一个命令的参数
– Ctrl + l:清空整个屏幕
#####################################################
Linux:识别光盘内容,在Linux中访问设备内容,必须通过访问点
光盘------->光驱设备---------->目录 /abc (访问点)
/dev/cdrom
[root@A ~]# ls /dev/cdrom#青色:代表快捷方式
/dev/cdrom
• 使用mount命令
– 格式:mount 设备路径 挂载点目录 #让目录成为设备的访问点
[root@A ~]# mkdir /abc
[root@A ~]# ls /abc
[root@A ~]# mount /dev/cdrom /abc
mount: /dev/sr0 写保护,将以只读方式挂载
[root@A ~]# ls /abc/
[root@A ~]# ls /abc/Packages/
总结:
1.Linux访问点为一个目录
2.mount命令,让目录成为设备的访问点
3.一个设备可以有多个访问点,一个访问点不可以有多个设备
卸载: umount 挂载点路径
[root@A ~]# ls /abc
[root@A ~]# umount /abc
[root@A ~]# ls /abc
[root@A ~]# mkdir /dvd
[root@A ~]# mount /dev/cdrom /dvd
[root@A ~]# ls /dvd
[root@A ~]# mount /dev/cdrom /abc
[root@A ~]# ls /abc
注意事项:
1.卸载:当前路径不要在访问点路径内
[root@A dvd]# umount /dvd/
umount: /dvd:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@A dvd]#
2.访问点的选择,建议自己创建目录
###########################################
[root@A lisi]# useradd tom #创建用户tom
[root@A lisi]# useradd zhangsan #创建用户zhangsan
##############################################
• ls — List
– 格式:ls [选项]... [目录或文件名]
• 常用命令选项
– -l:以长格式显示
– -A:包括名称以 . 开头的隐藏文档
– -d:显示目录本身(而不是内容)的属性
– -h:提供易读的容量单位(K、M等)
###############################################
使用通配符
• 针对不确定的文档名称,以特殊字符表示
– *:任意多个任意字符
– ?:单个字符
[root@A ~]# ls /boot/vm* #匹配以vm开头
[root@A ~]# ls /dev/tty* #匹配以tty开头
[root@A ~]# ls /etc/*tab #匹配以tab结尾
[root@A ~]# ls /etc/*.conf #匹配以.conf结尾
[root@A ~]# ls /etc/re*.conf #匹配以re开头并且以.conf结尾
[root@A ~]# ls /dev/tty?
[root@A ~]# ls /dev/tty??
[root@A ~]# ls /dev/tty???
• 针对不确定的文档名称,以特殊字符表示
– [a-z]:多个字符或连续范围中的一个,若无则忽略
– {a,min,xy}:多组不同的字符串,全匹配
[root@A ~]# ls /dev/tty[1-3]
[root@A ~]# ls /dev/tty[7-8]
[root@A ~]# ls /dev/tty[1-9]
[root@A ~]# ls /dev/tty{1,3,5,7,9,13}
[root@A ~]# ls /dev/tty{S0,S1,S2,S3}
####################################################
别名的定义:简化复杂较长的命令
• 查看已设置的别名
– alias [别名名称]
• 定义新的别名
– alias 别名名称= '实际执行的命令行'
• 取消已设置的别名
– unalias [别名名称]
[root@A /]# hn
bash: hn: 未找到命令...
[root@A ~]# alias hn='hostname' #定义别名hn
[root@A ~]# hn
[root@A /]# alias #查看当前生效的别名
[root@A /]# unalias hn #删除hn别名
[root@A /]# hn
bash: hn: 未找到命令...
[root@A /]# alias
[root@A ~]# alias myls='ls -lh'
[root@A ~]# myls /root
##################################################
mkdir 创建目录
• mkdir — Make Directory
– 格式:mkdir [-p] [/路径/]目录名...
]# mkdir -p /vod/movie/cartoon #-p表示连父目录一起创建
]# ls -R /vod/ #递归显示
########################################################
rm 删除
• rm — Remove
– 格式:rm [选项]... 文件或目录...
• 常用命令选项
– -r、-f:递归删除(含目录)、强制删除
[root@A /]# mkdir /opt/abc01
[root@A /]# mkdir /opt/abc02
[root@A /]# touch /opt/1.txt
[root@A /]# ls /opt/
1.txt abc01 abc02
[root@A /]# rm -rf /opt/abc*
[root@A /]# ls /opt/
1.txt
[root@A /]# rm -rf /opt/1.txt
[root@A /]# ls /opt/
################################################
mv 移动/改名
• mv — Move
– 格式:mv [选项]... 原文件... 目标路径
[root@A /]# rm -rf /opt/*
[root@A /]# ls /opt/
[root@A /]# mkdir /opt/nsd
[root@A /]# touch /opt/1.txt
[root@A /]# ls /opt/
1.txt nsd
[root@A /]# mv /opt/1.txt /opt/nsd/
[root@A /]# ls /opt/
nsd
[root@A /]# ls /opt/nsd/
重命名:路径不变的移动
[root@A /]# ls /opt/
nsd
[root@A /]# mv /opt/nsd/ /opt/abc
[root@A /]# ls /opt/
[root@A /]# mv /opt/abc/ /opt/student
[root@A /]# ls /opt/
[root@A /]# mv /opt/student /opt/haha
[root@A /]# ls /opt/
#############################################
cp 复制
• cp — Copy
– 格式:cp [选项]... 原文件... 目标路径
• 常用命令选项
– -r:递归,复制目录时必须有此选项
[root@A /]# ls /mnt/
nsd03
[root@A /]# cp /etc/passwd /mnt/
[root@A /]# ls /mnt/
[root@A /]# cp /etc/redhat-release /mnt/
[root@A /]# ls /mnt/
[root@A /]# cp -r /home/ /mnt
[root@A /]# ls /mnt
[root@A /]# cp -r /boot/ /mnt/
[root@A /]# ls /mnt/
复制时出现同名重复,取消提示
在本次操作临时取消别名
[root@A /]# cp -r /boot/ /mnt/
按Ctrl + c 结束
[root@A /]# \cp -r /boot/ /mnt/
复制支持两个及以上多个参数:
永远认为最后一个参数为目标路径,其他的所有参数都作为源
[root@A /]# rm -rf /mnt/*
[root@A /]# ls /mnt/
[root@A /]# cp -r /etc/passwd /etc/fstab /boot/ /home/ /etc/redhat-release /mnt/
[root@A /]# ls /mnt/
复制支持一个点的应用: .表示当前路径
[root@A /]# cd /mnt/
[root@A mnt]# ls
[root@A mnt]# pwd
[root@A mnt]# cp /etc/hosts .
[root@A mnt]# ls
[root@A mnt]# cd /etc/pki/CA
[root@A CA]# pwd
[root@A CA]# ls
[root@A CA]# cp /etc/shells .
[root@A CA]# ls
复制时,可以重命名目录路径 文档的名称
[root@A /]# cp /etc/redhat-release /mnt/abc
[root@A /]# ls /mnt/
[root@A /]# cat /mnt/abc
[root@A /]# cat /etc/redhat-release
[root@A /]# rm -rf /mnt/*
[root@A /]# cp -r /home/ /mnt/test
#将home放到mnt下改名为test
[root@A /]# cp -r /home/ /mnt/test
#将home放到/mnt/test目录下
[root@A /]# ls /mnt/
[root@A /]# ls /mnt/test/
###################################################
vim文本编辑器:修改文件内容
模式: 命令模式 输入模式(插入模式) 末行模式
[root@server0 ~]# vim /opt/a.txt
i 键
命---------------->输入模式(按Esc 键回到命令模式)
令
模
式---------------->末行模式(按Esc 键回到命令模式)
: 键
末行模式 :wq 保存退出
末行模式 :q! 不保存退出
#############################################
Linux scp 命令用于 Linux 之间复制文件和目录。
scp /home/space/music/1.mp3 [email protected](ip):/home/root/others/music
scp /home/space/music/1.mp3 [email protected](ip):/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com(ip):/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com(ip):/home/root/others/music/001.mp3
#######################################################################
[root@room9pc01 ~]# ssh 用户名@对方的IP地址
[root@room9pc01 ~]# ssh [email protected]
[root@server0 ~]# exit
登出
########################################################################
永久别名配置:/root/.bashrc #开启一个新的终端才会生效
[root@room9pc01 ~]# vim /root/.bashrc
[root@room9pc01 ~]# head -3 /root/.bashrc
# .bashrc
alias gos='ssh -X [email protected]'
alias god='ssh -X [email protected]'
############################################################
• 使用wget下载工具
– wget 软件包的URL网址
– wget 软件包的URL网址 -O(大写) /目录路径/新文件名
###########################################################
安装软件包
• RPM Package Manager,RPM包管理器
– rpm -q 软件名... #查询软件是否安装
– rpm -ivh 软件名-版本信息.rpm... #安装软件包
– rpm -e 软件名... #卸载软件包
[root@server0 ~]# rpm -q vsftpd
未安装软件包 vsftpd
[root@server0 ~]# rpm -q firefox
firefox-24.5.0-1.el7.x86_64
[root@server0 ~]# rpm -q bash
bash-4.2.45-5.el7.x86_64
[root@server0 ~]# rpm -q zip
zip-3.0-10.el7.x86_64
[root@server0 ~]# rpm -q httpd
未安装软件包 httpd
[root@server0 ~]# rpm -q haha
未安装软件包 haha
[root@server0 ~]# rpm -q hostname
hostname-3.13-3.el7.x86_64
##############################
[root@server0 ~]# rpm -q vsftpd #查询软件包是否安装
未安装软件包 vsftpd
[root@server0 ~]# rpm -ivh vsftpd-3.0.2-9.el7.x86_64.rpm
警告:vsftpd-3.0.2-9.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:vsftpd-3.0.2-9.el7 ################################# [100%]
[root@server0 ~]#rpm -ql vsftpd #查询安装的清单
[root@server0 ~]# rpm -q vsftpd
vsftpd-3.0.2-9.el7.x86_64
[root@server0 ~]# rpm -e vsftpd #卸载软件程序
[root@server0 ~]# rpm -q vsftpd
########################################################################
Yum软件包仓库
服务:自动解决依赖关系安装软件包
服务端: 1.众多的软件包 2.仓库数据文件 3.搭建Web服务或FTP服务
总结:搭建Web服务或FTP服务,共享光盘所有内容
Web服务使用协议:
http:超文本传输协议
https:安全超文本传输协议
FTP服务使用协议:
FTP:文件传输协议
修改配置文件:/etc/yum.repos.d/*.repo
客户端配置文件,错误的文件 会影响正确的配置文件
[root@server0 ~]# rm -rf /etc/yum.repos.d/*
[root@server0 ~]# vim /etc/yum.repos.d/dvd.repo
[rhel7] #仓库标识
name=RHEL7.0 #仓库描述信息
baseurl=http://classroom.example.com/content/rhel7.0/x86_64/dvd/ #服务端具体位置
enabled=1 #是否启用本文件
gpgcheck=0 #是否检测红帽签名信息
[root@server0 ~]#yum repolist #列出仓库信息
Yum仓库的使用
1.安装软件包
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# yum -y install sssd
[root@server0 ~]# yum -y install system-config-kickstart
[root@server0 ~]# yum -y install gcc
[root@server0 ~]# yum -y install dhcp
[root@server0 ~]# yum -y install mariadb-server
2.卸载软件包
[root@server0 ~]# yum remove httpd
[root@server0 ~]# yum remove dhcp
3.清空Yum缓存
[root@server0 ~]#yum clean all
############################################################
升级内核
1.下载新的内核软件包
[root@server0 ~]# wget http://classroom.example.com/content/rhel7.0/x86_64/errata/Packages/kernel-3.10.0-123.1.2.el7.x86_64.rpm
[root@server0 ~]# ls
]# uname -r
]# rpm -ivh kernel-3.10.0-123.1.2.el7.x86_64.rpm
]# uname -r
]# reboot
[root@room9pc01 ~]# gos
[root@server0 ~]# uname -r #查看内核版本
3.10.0-123.1.2.el7.x86_64
#########################################################
永久设置主机名
[root@server0 ~]#vim /etc/hostname #永久主机名配置文件
nsd.tedu.cn
[root@server0 ~]# hostname
nsd.tedu.cn
[root@server0 ~]# exit
登出
Connection to 172.25.0.11 closed.
[root@room9pc01 ~]# gos
Last login: Thu Jan 3 16:21:18 2019 from 172.25.0.250
[root@nsd ~]# hostname
nsd.tedu.cn
永久配置IP地址 子网掩码 网关地址
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
通过命令nmcli进行配置
1.利用nmcli命令,进行查看网卡识别的名称
[root@nsd ~]# nmcli connection show
名称
System eth0
2.利用nmcli命令,进行配置
]#nmcli connection modify 'System eth0'
ipv4.method manual
ipv4.addresses '172.25.0.110/24 172.25.0.254'
connection.autoconnect yes
]# nmcli connection 修改 '网卡名称'
ipv4.方法 手工配置
ipv4.地址 'IP地址/子网掩码 网关地址'
每次开机自动启用配置
3.激活配置
]# nmcli connection up 'S(tab)'
]# ifconfig
###############################################################
DNS服务器地址
告知本机解析域名,去寻找那台机器
[root@nsd ~]#vim /etc/resolv.conf #指定永久DNS服务器
nameserver 172.25.254.254
[root@nsd ~]# cat /etc/resolv.conf
测试DNS解析的命令
[root@nsd ~]#nslookup classroom.example.com
[root@nsd ~]# nslookup desktop0.example.com
网络参数配置顺序:
首先配置主机名,然后配置配置IP地址 子网掩码 网关地址,最后指定永久DNS服务器
查看网关地址命令:
[root@nsd ~]#route
Gateway
172.25.0.254
###########################################################
设置永久别名
永久别名配置:/root/.bashrc #开启一个新的终端才会生效
[root@room9pc01 ~]#vim /root/.bashrc
[root@room9pc01 ~]# head -3 /root/.bashrc
# .bashrc
alias gos='ssh -X [email protected]'
alias god='ssh -X [email protected]'
###########################################################
管理用户和组
用户账户: 登陆操作系统,不同用户具备不同权限
组:方便管理用户,进行分类
用户账户唯一标识: UID(编号) GID(编号)
管理员的UID永远为0
组帐号: 基本组 附加组(从属组)
基本组:由Linux系统创建,并且由系统将用户加入,与用户同名
附加组:由系统管理员创建,并且由系统管理员加入
Linux中一个用户至少属于一个组
####################################################
添加用户
所有用户基本信息存放在 /etc/passwd 文件
[root@server0 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组GID:用户描述信息:用户的家目录:解释器
• 使用 useradd 命令
– useradd [选项]... 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-G 附加组、-s 指定解释器程序
[root@server0 ~]# useradd nsd01
[root@server0 ~]# id dc #查看用户基本信息
id: dc: no such user #没有此用户
[root@server0 ~]# id nsd01 #查看用户基本信息
[root@server0 ~]# useradd nsd02
[root@server0 ~]# id nsd02
[root@server0 ~]# useradd nsd03
[root@server0 ~]# id nsd03
[root@server0 ~]# useradd -u 1500 nsd04 #创建用户指定UID
[root@server0 ~]# id nsd04
-d 家目录路径、-G 附加组
[root@server0 ~]# useradd -d /mnt/nsd06 nsd06
[root@server0 ~]# ls /mnt/
nsd06
[root@server0 ~]# grep nsd06 /etc/passwd
nsd06:x:1502:1502::/mnt/nsd06:/bin/bash
[root@server0 ~]# groupadd tarena #创建tarena组
[root@server0 ~]# useradd -G tarena nsd07
[root@server0 ~]# id nsd07
[root@server0 ~]# useradd -G tarena nsd08
[root@server0 ~]# id nsd08
-s 指定解释器程序
/sbin/nologin:禁止用户登陆系统
[root@server0 ~]# useradd -s /sbin/nologin nsd09
[root@server0 ~]# grep nsd09 /etc/passwd
nsd09:x:1504:1505::/home/nsd09:/sbin/nologin
[root@server0 ~]# useradd -s /sbin/nologin nsd10
[root@server0 ~]# grep nsd10 /etc/passwd
nsd10:x:1505:1506::/home/nsd10:/sbin/nologin
##################################################
设置登录密码
• 使用 passwd 命令
– passwd [用户名]
[root@server0 ~]# passwd nsd01
更改用户 nsd01 的密码 。
新的 密码: #输入 密码
无效的密码: 密码少于 8 个字符
重新输入新的 密码: #重新输入密码
passwd:所有的身份验证令牌已经成功更新。
[root@server0 ~]# su - nsd01 #命令行临时切换到nsd01用户
[nsd01@server0 ~]$ passwd
Changing password for user nsd01.
Changing password for nsd01.
(current) UNIX password: #输入旧密码
New password: #输入新密码
Retype new password: #重新输入新密码
passwd: all authentication tokens updated successfully.
[nsd01@server0 ~]$ exit #退回到root用户
successfully(成功)
#######################################################
重定向输出:将命令的输出,写入到文本文件中
>:覆盖重定向
>>:追加重定向
[root@server0 ~]# ls --help > /opt/ls.txt
[root@server0 ~]# less /opt/ls.txt
[root@server0 ~]# hostname
[root@server0 ~]# hostname > /opt/ls.txt
[root@server0 ~]# cat /opt/ls.txt
[root@server0 ~]# hostname >> /opt/ls.txt
[root@server0 ~]# cat /opt/ls.txt
[root@server0 ~]# tail -2 /etc/passwd >> /opt/ls.txt
[root@server0 ~]# cat /opt/ls.txt
[root@server0 ~]# echo 123456
[root@server0 ~]# echo 123456 >> /opt/ls.txt
[root@server0 ~]# cat /opt/ls.txt
[root@server0 ~]# echo nsd.qq.com > /etc/hostname
[root@server0 ~]# cat /etc/hostname
[root@server0 ~]# exit
[root@room9pc01 ~]# gos
]# hostname
]# echo nameserver 172.25.254.254
]# echo nameserver 172.25.254.254 > /etc/resolv.conf
]# cat /etc/resolv.conf
]# echo 123 > /opt/1.txt
]# cat /opt/1.txt
管道 | : 将前面命令的输出,传递到后面命令,作为后面命令的参数
显示/etc/passwd文件 8~12行内容?
[root@nsd ~]# head -12 /etc/passwd
[root@nsd ~]# head -12 /etc/passwd | tail -5
[root@nsd ~]# head -12 /etc/passwd | tail -5 | cat -n
[root@nsd ~]# cat -n /etc/passwd | head -12 | tail -5
[root@nsd ~]# ifconfig | less
[root@nsd ~]# ifconfig | head -2
]# cat -n /etc/passwd | head -12 | tail -5
]# cat -n /etc/passwd | head -12 | tail -5 > /opt/a.txt
非交互式设置密码:
– echo '密码' | passwd --stdin 用户名
[root@nsd ~]# echo 123 | passwd --stdin nsd01
更改用户 nsd01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@nsd ~]# echo redhat | passwd --stdin nsd02
更改用户 nsd02 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户密码信息存放在 /etc/shadow 文件
[root@nsd ~]# tail -1 /etc/shadow
nsd10:!!:17900:0:99999:7:::
当第二个字段为!!时,代表锁定该用户
[root@nsd ~]# echo 1 | passwd --stdin nsd10
更改用户 nsd10 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@nsd ~]# tail -1 /etc/shadow
nsd10:$6$bOG/zYu7$dQID7YKMq3dSWzMg386xPECbLxRq9M/.uPry1S4IkwTU98NUK/.x0RVbUGUAOSMhHz0Nmmci2TSjxROXRNVs/1:17900:0:99999:7:::
用户名:密码加密字符串:上一次修改密码时间
1970-1-1~2019-1-1
查看系统时间:
date
修改时间: date -s '年-月-日 时:分:秒'
[root@nsd ~]# date
[root@nsd ~]# date -s '2008-10-1 12:10:8'
[root@nsd ~]# date
2008年 10月 01日 星期三 12:10:09 CST
[root@nsd ~]#
计算器bc
加 + 减 - 乘 * 除 /
[root@nsd ~]# bc
1+1
2
##################################################
修改用户属性
• 使用 usermod 命令
– usermod [选项]... 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录Shell、-G 附加组
[root@server0 ~]# useradd nsd12
[root@server0 ~]# id nsd12
[root@server0 ~]# grep nsd12 /etc/passwd
]# usermod -u 1600 -d /mnt/nsd12 -G tarena -s /sbin/nologin nsd12
[root@server0 ~]# id nsd12
[root@server0 ~]# grep nsd12 /etc/passwd
#####################################################
删除用户
• 使用 userdel 命令
– userdel [-r] 用户名
-r:连同家目录一并删除
Permission denied:权限不足
[root@server0 ~]# userdel nsd02
[root@server0 ~]# id nsd02
[root@server0 ~]# userdel nsd03
[root@server0 ~]# id nsd03
####################################################
管理组账号
添加组
组基本信息存放在 /etc/group 文件
[root@server0 ~]# grep stugrp /etc/group
stugrp:x:1509:
组名:密码占位符:组的GID:组成员列表
• 使用 groupadd 命令
– groupadd [-g 组ID] 组名
[root@server0 ~]# groupadd stugrp #创建组stugrp
[root@server0 ~]# grep stugrp /etc/group
stugrp:x:1509:
[root@server0 ~]# useradd harry
[root@server0 ~]# useradd natasha
[root@server0 ~]# useradd jack
[root@server0 ~]# useradd kenji
管理组成员
组的密码信息存放在 /etc/gshadow 文件
• 使用 gpasswd 命令
– gpasswd -a 用户名 组名 #将用户添加到组
– gpasswd -d 用户名 组名 #将用户从组删除
[root@server0 ~]# gpasswd -a harry stugrp
[root@server0 ~]# grep stugrp /etc/group
[root@server0 ~]# gpasswd -a kenji stugrp
[root@server0 ~]# grep stugrp /etc/group
[root@server0 ~]# gpasswd -a natasha stugrp
[root@server0 ~]# grep stugrp /etc/group
[root@server0 ~]# gpasswd -d harry stugrp
[root@server0 ~]# grep stugrp /etc/group
[root@server0 ~]# gpasswd -a jack stugrp
[root@server0 ~]# grep stugrp /etc/group
修改组属性
• 使用 groupmod 命令
– groupmod [-g 组ID] [-n 新组名] 组名
删除组
• 使用 groupdel 命令
– groupdel 组名
不能删除用户的基本组
###################################################
tar备份与恢复
1.减少占用的硬盘空间 2.将零散的数据进行整合
• 归档的含义
– 将许多零散的文件整理为一个文件
– 文件总的大小基本不变
• 压缩的含义
– 按某种算法减小文件所占用空间的大小
– 恢复时按对应的逆向算法解压
常见的压缩格式及命令工具:
.gz ---> gzip
.bz2 ---> bzip2
.xz ---> xz
tar进行归档及压缩(打包)
格式:
tar 选项 /路径/压缩包的名字 /路径/源文档1 /路径/源文档2
tar进行释放(解包)
格式:
tar 选项 /路径/压缩包的名字 选项 释放的路径
• tar 集成备份工具
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称(所有的选项的最后)
– -z、-j、-J:调用 .gz、.bz2、.xz 格式的工具进行处理
– -t:显示归档中的文件清单
– -C:指定释放的路径
]# tar -zcf /opt/file.tar.gz /home/ /boot/
]# ls /opt/
]# tar -jcf /opt/abc.tar.bz2 /etc/passwd /etc/shadow
]# ls /opt/
]# tar -Jcf /opt/nsd.tar.xz /etc/group /etc/gshadow
]# ls /opt/
]# date -s '2019-1-4 15:50'
]#tar -xf /opt/file.tar.gz -C /mnt/
]# ls /mnt/
]# ls /mnt/home/
]# ls /mnt/boot/
]# tar -xf /opt/nsd.tar.xz -C /mnt/
]# ls /mnt/
]# ls /mnt/etc/
]# tar -xf /opt/abc.tar.bz2 -C /mnt/
]# ls /mnt/etc/
使用 tar 工具完成以下备份任务:
– 创建一个名为 /root/backup.tar.bz2 的归档文件
– 其中包含 /usr/local 目录中的内容
– tar 归档必须使用 bzip2 进行压缩
[root@server0 ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
[root@server0 ~]# ls /root/
[root@server0 ~]# tar -tf /root/backup.tar.bz2 #查看包里内容
###################################################
NTP时间同步
NTP网络时间协议
• Network Time Protocol
– NTP服务器为客户机提供标准时间
– NTP客户机需要与NTP服务器保持沟通
NTP服务器:虚拟机classroom构建完成
NTP客户机:指定NTP服务器位置
虚拟机server:
1.安装chrony软件,可以和NTP服务器沟通
[root@server0 ~]# rpm -q chrony
chrony-1.29.1-1.el7.x86_64
2.修改主配置文件
[root@server0 ~]# vim /etc/chrony.conf
大多数配置文件中,以#开头的行为注释信息
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
server classroom.example.com iburst #指定服务端位置
3.重起服务(重起程序)
]# systemctl restart chronyd
]# systemctl enable chronyd #设置服务开机自起
daemon:守护神;(希腊神话中)半人半神的精灵;[计]守护进程
4.验证:
[root@server0 ~]# date
[root@server0 ~]# date -s '2000-10-1'
[root@server0 ~]# date
[root@server0 ~]# systemctl restart chronyd
[root@server0 ~]# date
[root@server0 ~]# date
[root@server0 ~]# date
##################################################
cron计划任务(周期性任务)(定时任务)
• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
• 软件包:cronie、crontabs
• 系统服务:crond
• 日志文件:/var/log/cron
执行周期 配置说明
分钟 从0到59之间的整数
小时 从0到23之间的整数
日期 从1到31之间的整数
月份 从1到12之间的整数
星期 0~7之间的整数,0或7代表星期日
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
如何编写crontab任务记录
分 时 日 月 周 任务命令行(绝对路径)
30 23 * * * poweroff
30 */2 * * *
34 8 * * 1-5
34 8 1 * 1 每月1号与每周一都会运行
• 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]
每分钟记录当前系统的时间,写入/opt/time.txt
[root@server0 ~]# date
2019年 01月 04日 星期五 17:29:25 CST
[root@server0 ~]# date >> /opt/time.txt
[root@server0 ~]# cat /opt/time.txt
[root@server0 ~]# crontab -e -u root #编写root用户计划任务
* * * * * date >> /opt/time.txt
[root@server0 ~]# crontab -l -u root #查看root用户计划任务
[root@server0 ~]# ls /var/spool/cron/
[root@server0 ~]# cat /var/spool/cron/root#生成的任务文件
* * * * * date >> /opt/time.txt
[root@server0 ~]# cat /opt/time.txt
#######################################################################
基本权限
• 访问方式(权限)
– 读取:允许查看内容-read r
– 写入:允许修改内容-write w
– 可执行:允许运行和切换-execute x
对于文本文件:
r:cat less head tail
w:vim能够保存 > >>
x:针对与Shell脚本
• 权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user u
– 所属组:拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
查看权限
• 使用 ls -l 命令
– ls -ld 文件或目录...
以 d 开头为目录
以 l 开头为快捷方式
以 - 开头为文本文件
权限位 硬连接数 属主 属组 大小 最后修改时间 文件/目录名称
[root@server0 ~]# ls -ld /etc/
[root@server0 ~]# ls -l /etc/passwd
[root@server0 ~]# ls -ld /root
[root@server0 ~]# ls -l /etc/shadow
[root@server0 ~]# ls -ld /home/student
[root@server0 ~]# ls -ld /tmp
设置基本权限
• 使用 chmod 命令
– chmod 归属关系+-=权限类别 文档...
[-R] 递归修改权限
[root@server0 ~]# mkdir /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u-w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod g+w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod o=rwx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod o=--- /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u=rwx,g=rx,o=rx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod ugo=rwx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# mkdir -p /opt/aa/bb/cc
[root@server0 ~]# ls -ld /opt/aa
[root@server0 ~]# ls -ld /opt/aa/bb/
[root@server0 ~]# ls -ld /opt/aa/bb/cc/
[root@server0 ~]# chmod -R o=--- /opt/aa
[root@server0 ~]# ls -ld /opt/aa
[root@server0 ~]# ls -ld /opt/aa/bb/
[root@server0 ~]# ls -ld /opt/aa/bb/cc/
####################################################
Linux中如何判定用户具备的权限: 匹配及停止
1.判断用户属于角色 所有者>所属组>其他人
2.查看相应角色权限位置的权限
1.王老师可以进入 1.所有人不可以进入
2.所有人不可以进入 2.王老师可以进入
Permission denied:权限不足
####################################################
目录的 r 权限:能够 ls 浏览此目录内容 4
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作 2
目录的 x 权限:能够 cd 切换到此目录 1
以root用户新建/nsddir/目录,在此目录下新建readme.txt文件
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 切换用户 su - lisi
chmod o+w /nsddir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
##############################################
设置文档归属
– chown [-R] 属主 文档...
– chown [-R] :属组 文档...
– chown [-R] 属主:属组 文档...
[root@server0 ~]# mkdir /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# groupadd tarena
[root@server0 ~]# chown lisi:tarena /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# chown root /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# groupadd tedu
[root@server0 ~]# chown :tedu /nsd03
[root@server0 ~]# ls -ld /nsd03
##################################################
利用root用户新建/nsd06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为tarena组
[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd tarena
[root@server0 /]#chown gelin01:tarena /nsd06
2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限
[root@server0 /]# chmod o=--- /nsd06
3)使用户gelin02能进入、查看此目录
[root@server0 /]# gpasswd -a gelin02 tarena
4)将gelin01加入tarena组, 将nsd06目录的权限设为rw-r-x---
再测试gelin01用户能否进入此目录
[root@server0 /]# gpasswd -a gelin01 tarena
[root@server0 /]# chmod u=rw,g=rx /nsd06
######################################################
实现lisi用户,对/etc/shadow文件具备读权限,您有几种办法?
1.修改其他人权限 chmod o+r /etc/shadow
2.修改归属关系,将lisi修改所有者
chown lisi /etc/shadow
chmod u+r /etc/shadow
3.修改归属关系,将lisi组修改所属组
chown :lisi /etc/shadow
chmod g+r /etc/shadow
4.利用ACL策略 setfacl -m u:lisi:r /etc/shadow
#####################################################
附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设
置与父目录相同的属组
– 传递所属组身份
[root@server0 /]# mkdir /nsd08
[root@server0 /]# ls -ld /nsd08
[root@server0 /]# chown :tarena /nsd08
[root@server0 /]# ls -ld /nsd08
[root@server0 /]# mkdir /nsd08/abc01
[root@server0 /]# ls -ld /nsd08/abc01
[root@server0 /]# chmod g+s /nsd08/ #设置Set Gid权限
[root@server0 /]# ls -ld /nsd08/
[root@server0 /]# ls -ld /nsd08/abc01/
[root@server0 /]# mkdir /nsd08/abc02
[root@server0 /]# ls -ld /nsd08/abc02
[root@server0 /]# touch /nsd08/abc02/1.txt
[root@server0 /]# ls -l /nsd08/abc02/1.txt
案例1:配置附加权限
创建一个共用目录 /home/admins,要求如下:
– 此目录的组所有权是 adminuser
– adminuser 组的成员对此目录有读写和执行的权限,
除此以外的其他所有用户没有任何权限(root用户能
够访问系统中的所有文件和目录)
– 在此目录中创建的文件,其组的所有权会自动设置为
属于 adminuser 组
[root@server0 /]# mkdir /home/admins
[root@server0 /]# groupadd adminuser
[root@server0 /]# ls -ld /home/admins/
[root@server0 /]# chown :adminuser /home/admins/
[root@server0 /]# ls -ld /home/admins/
[root@server0 /]# chmod g+w /home/admins/ #题意要求
[root@server0 /]# ls -ld /home/admins/
[root@server0 /]# chmod o=--- /home/admins/ #题意要求
[root@server0 /]# ls -ld /home/admins/
[root@server0 /]# chmod g+s /home/admins/
[root@server0 /]# ls -ld /home/admins/
[root@server0 /]# touch /home/admins/1.txt
[root@server0 /]# ls -l /home/admins/1.txt
####################################################
acl访问控制列表(特殊人权限)
acl策略的作用
• 文档归属的局限性
– 任何人只属于三种角色:属主、属组、其他人
– 无法实现更精细的控制
• acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
• 使用 getfacl、setfacl 命令
– getfacl 文档.. .#查看
– setfacl -m u:用户名:权限类别 文档...#设置用户
– setfacl -m g:组名:权限类别 文档... #设置组
– setfacl -x u:用户名 文档... #删除指定的ACL策略
– setfacl -b 文档... #清除所有ACL策略
[root@server0 /]# mkdir /nsd11
[root@server0 /]# chmod o=--- /nsd11
[root@server0 /]# ls -ld /nsd11
[root@server0 /]# su - lisi
[lisi@server0 ~]$ cd /nsd11
-bash: cd: /nsd11: Permission denied
[lisi@server0 ~]$ exit
[root@server0 /]#setfacl -m u:lisi:rx /nsd11 #设置ACL策略
[root@server0 /]# getfacl /nsd11 #专用于查看ACL策略
[root@server0 /]# su - lisi
[lisi@server0 ~]$ cd /nsd11
[lisi@server0 nsd11]$ pwd
[lisi@server0 nsd11]$ exit
[root@server0 /]#
[root@server0 /]# mkdir /nsd12
[root@server0 /]# setfacl -m u:dc:rwx /nsd12
[root@server0 /]# setfacl -m u:lisi:rx /nsd12
[root@server0 /]# setfacl -m u:zhangsan:rwx /nsd12
[root@server0 /]# setfacl -m u:tom:rx /nsd12
[root@server0 /]# setfacl -x u:tom /nsd12 #删除指定ACL策略
[root@server0 /]# getfacl /nsd12
[root@server0 /]# setfacl -x u:dc /nsd12
[root@server0 /]# getfacl /nsd12
[root@server0 /]# setfacl -b /nsd12 #清除所有ACL策略
[root@server0 /]# getfacl /nsd12
###################################################
设置黑名单
[root@server0 /]# mkdir /public
[root@server0 /]# chmod ugo=rwx /public
[root@server0 /]# ls -ld /public
drwxrwxrwx. 2 root root 6 1月 5 16:08 /public
[root@server0 /]# id tom
uid=1004(tom) gid=1006(tom) 组=1006(tom)
[root@server0 /]# setfacl -m u:tom:--- /public
[root@server0 /]# getfacl /public
###################################################
使用LDAP认证,实现网络用户认证,达到用户的集中管理
网络用户:用户信息会放在网络中LDAP服务器
本地用户:用户信息会放在/etc/passwd
LDAP服务器:虚拟机classroom
客户端:虚拟机server
1.安装sssd软件,与LDAP服务器沟通
[root@server0 /]# yum -y install sssd
[root@server0 /]# rpm -q sssd
2.安装authconfig-gtk图形的工具,进行配置客户端sssd软件
[root@server0 /]# yum -y install authconfig-gtk
[root@server0 /]# authconfig-gtk
完全合格的主机名 www.baidu.com www.qq.com
classroom.example.com
选择LDAP
dc=example,dc=com #指定服务端域名
classroom.example.com #指定服务端主机名
勾选TLS加密
使用证书加密:
http://classroom.example.com/pub/example-ca.crt
选择LDAP密码
3.重起服务
[root@server0 ~]# systemctl restart sssd #重起服务
[root@server0 ~]# systemctl enable sssd #设置开机自启动
[root@server0 ~]# grep ldapuser0 /etc/passwd
[root@server0 ~]# id ldapuser0 #验证LDAP用户信息
###################################################
家目录漫游
什么是NFS共享
• Network File System,网络文件系统
– 由NFS服务器将指定的文件夹共享给客户机
– 客户机将此共享目录 mount 到本地目录,访问此共享
资源就像访问本地目录一样方便
– 类似于 EXT4、XFS等类型,只不过资源在网上
NFS服务器:虚拟机classroom
客户端:虚拟机server
1. 查看NFS资源
– showmount -e [服务器地址]
[root@server0 ~]# showmount -e classroom.example.com
Export list for classroom.example.com:
/home/guests 172.25.0.0/255.255.0.0
[root@server0 ~]#
2. 挂载NFS共享目录
–mount 服务器地址:目录路径 本地挂载点
]# mkdir /home/guests
]# mount classroom.example.com:/home/guests/ /home/guests/
]# ls /home/guests/
]# su - ldapuser0
###################################################
附加权限
Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属
主的身份及部分权限
– 传递所有者身份
[root@server0 ~]# ls /usr/bin/touch
[root@server0 ~]# /usr/bin/touch a.txt
[root@server0 ~]# ls
[root@server0 ~]# cp /usr/bin/touch /usr/bin/hahach
[root@server0 ~]# /usr/bin/hahach b.txt
[root@server0 ~]# ls
[root@server0 ~]# chmod u+s /usr/bin/hahach #设置SUID权限
[root@server0 ~]# ls -l /usr/bin/hahach
[root@server0 ~]# su - student
[student@server0 ~]$ /usr/bin/touch nsd01.txt
[student@server0 ~]$ ls -l nsd01.txt
[student@server0 ~]$ /usr/bin/hahach nsd02.txt
[student@server0 ~]$ ls -l nsd02.txt
[student@server0 ~]$ exit
####################################################
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限(禁止操作别人的文档)
[root@server0 ~]# ls /home/
[root@server0 ~]# mkdir /home/public
[root@server0 ~]# ls /home/
[root@server0 ~]# chmod ugo=rwx /home/public
[root@server0 ~]# ls -ld /home/public
[root@server0 ~]# useradd lisi
[root@server0 ~]# useradd harry
[root@server0 ~]# useradd natasha
[root@server0 ~]# chmod o+t /home/public/
[root@server0 ~]# ls -ld /home/public/
#################################################
改变家目录
[root@server0 ~]# useradd tom
[root@server0 ~]# grep tom /etc/passwd
[root@server0 ~]# ls /home/
[root@server0 ~]# grep tom /etc/passwd
[root@server0 ~]# usermod -d /opt/abc tom #修改用户家目录
[root@server0 ~]# grep tom /etc/passwd
[root@server0 ~]# cp -r /home/natasha/ /opt/abc
[root@server0 ~]# chown -R tom:tom /opt/abc #修改归属关系
[root@server0 ~]# ls -ld /opt/abc
drwx------. 5 tom tom 101 1月 7 10:29 /opt/abc
[root@server0 ~]# ls -lA /opt/abc
[root@server0 ~]# su - tom
#####################################################
查找文本内容
• 根据字符串模式提取文本行
– grep [选项] '匹配模式' 文本文件...
– 命令行 | grep [选项] '匹配模式'
• 常用命令选项
– -v,取反匹配
– -i,忽略大小写
[root@server0 ~]# grep root /etc/passwd
[root@server0 ~]# grep ROOT /etc/passwd
[root@server0 ~]# grep -i ROOT /etc/passwd
[root@server0 ~]# grep man /etc/man_db.conf
[root@server0 ~]# grep -i man /etc/man_db.conf
[root@server0 ~]# grep root /etc/passwd
[root@server0 ~]# grep -v root /etc/passwd
– ^word 以字符串word开头
– word$ 以字符串word结尾
– ^$ 匹配空行
[root@server0 ~]# grep root /etc/passwd
[root@server0 ~]# grep ^root /etc/passwd
[root@server0 ~]# grep root$ /etc/passwd
[root@server0 ~]# grep bash$ /etc/passwd
[root@server0 ~]# grep ^$ /etc/default/useradd
[root@server0 ~]# grep -v ^$ /etc/default/useradd
请显示/etc/default/useradd文件有效信息(去除空行 去除注释)
]# grep ^# /etc/default/useradd
]# grep -v ^# /etc/default/useradd
]# grep -v ^# /etc/default/useradd | grep -v ^$
]# grep -v ^# /etc/default/useradd | grep -v ^$ > /root/user.txt
]# cat /root/user.txt
##################################################
查找文件
• 根据预设的条件递归查找对应的文件
– find [目录] [条件1] [-a|-o] [条件2] ...
– 常用条件表示:
-type 类型(f 文件、d 目录、l 快捷方式)
-name "文档名称"
-size +|-文件大小(k、M、G)
-user 用户名
– 常用条件表示:
-type 类型(f 文件、d 目录、l 快捷方式)
[root@server0 ~]# find /boot/ -type d
[root@server0 ~]# find /boot/ -type l
/boot/grub/menu.lst
[root@server0 ~]# ls /boot/grub/menu.lst
/boot/grub/menu.lst
[root@server0 ~]# ls -l /boot/grub/menu.lst
lrwxrwxrwx. 1 root root 9 5月 7 2014 /boot/grub/menu.lst -> grub.conf
[root@server0 ~]# find /boot/ -type f
-name "文档名称"
[root@server0 ~]# find /etc/ -name "passwd"
[root@server0 ~]# find /etc/ -name "*tab"
[root@server0 ~]# find /etc/ -name "*tab*"
[root@server0 ~]# mkdir /root/nsd01
[root@server0 ~]# mkdir /root/nsd02
[root@server0 ~]# touch /root/nsd1812.txt
[root@server0 ~]# find /root -name "nsd*"
[root@server0 ~]# find /root -name "nsd*" -a -type f
[root@server0 ~]# find /root -name "nsd*" -type f
[root@server0 ~]# find /root -name "nsd*" -type d
-size +|-文件大小(k、M、G)
[root@server0 ~]# find /boot/ -size +10M
[root@server0 ~]# ls -lh /boot/initr*
[root@server0 ~]# find /boot/ -size +300k
-user 用户名(按照文档所有者查找)
[root@server0 ~]# find / -user student
[root@server0 ~]# find / -user tom
• 根据名称查找,忽略大小写
– -iname
[root@server0 ~]# find /etc -name "PASSWD"
[root@server0 ~]# find /etc/ -iname "PASSWD"
• 根据所属组
– -group
[root@server0 ~]# find /home/ -group tom
• 限制目录查找的深度(最大层数)
– -maxdepth
[root@server0 ~]# find /etc/ -name "*.conf"
[root@server0 ~]# find /etc/ -maxdepth 1 -name "*.conf"
[root@server0 ~]# find /etc/ -maxdepth 2 -name "*.conf"
[root@server0 ~]# find /etc/ -maxdepth 3 -name "*.conf"
• 根据文件修改时间,都是过去时间
– -mtime +10 #10天之前,创建或修改过的文件
– -mtime -10 #最近10天之内,创建或修改过的文件
三个月之前的日志文件?
[root@server0 ~]# find /var/log -mtime +90
[root@server0 ~]# find /var/log -mtime +1000
[root@server0 ~]# find /opt -mtime -10
#####################################################
处理find查找到的结果:
查找/boot目录下大于10M,将其复制到/opt
]# find /boot/ -size +10M
]# find /boot/ -size +10M -exec cp {} /opt/ \;
]# ls /opt/
查找/etc目录下以tab结尾的,将其复制到/mnt
]# find /etc -name "*tab"
]# find /etc -name "*tab" -exec cp {} /mnt/ \;
]# ls /mnt/
案例2:查找并处理文件
• 使用find命令完成以下任务
– 找出所有用户 student 拥有的文件
– 把它们拷贝到 /root/findfiles/ 文件夹中
]# mkdir /root/findfiles
]# find / -user student -type f
]# find / -user student -type f -exec cp {} /root/findfiles/ \;
]# ls -A /root/findfiles/
#######################################################
查看命令帮助信息
[root@server0 ~]# man find
#######################################################