1.操作系统简介
什么是UNIX?
- UNIX是由OPEN GROUP管理的一个商标,它指的是一个遵循特定规范的计算机操作系统
- 这个规范称为单一UNIX规范(The Single UNIX Specification)
- UNIX的源代码属于SCO公司
类UNIX系统
- 多数为商用,如SCO的Unixware、IBM的AIX、HP的HP-UX和Sun的Solaris
- 免费的有FreeBSD和Linux
认识Linux
- 什么是Free Software?
- Shareware/Freeware
- 不提供Source Code
- 无法让使用者自由更改或散播
- 什么是 自由软件Opensource?
- Freedom(自由)/Open(开放)
- Source Code必须公开
- 任何人都可以自由传播、下载、使用或改写
什么是Linux
- 是一个类UNIX内核的可以自由发布的实现版本,是一个操作系统的底层核心
- 可以获得内核源代码,编译并安装,然后获得并安装许多其他自由发布的软件,从而创建一个完整的Linux,通常称为Linux系统
- Linux发行版
发行版简介
- Linux操作系统(kernel+ultiliteies):专家才会用
- Linux发行版(Distribution):整合更多配套软件,普通用户也能用
LINUX源起
- 1991 年 8 月芬兰的一个学生Linus Torvalds在comp.os.minix 新闻组贴上了以下这段话:
「你好,所有使用 minix 的人 -我正在为386 ( 486 ) AT 做一個免费的操作系統 ( 只是为了爱好 ),不会像 GNU 那样很大很专业。」
LINUX源起
- Linus Torvalds 林纳斯·托瓦兹 (Linux内核 和 Git创始人)
LINUX源起 - 1990年秋,Linus修读Unix课程,基于minix编写仿真程序
- 1991年10月发布linux0.02版本
- 1993年发布linux0.99版本
- 1994年3月发布linux1.0版本 • 1994年加入GNU组织
https://www.kernel.org
GNU计划
- 1983 年 Richard Stallman(自由软件业的精神教父) 创办 GNU(GNU’s not Unix)计划
- 开始于1984年,旨在发展一个类-Unix 且为 自由软件 的完整操作系统
http://www.gnu.org
GNU计划
- Richard Stallman 理查德·斯托曼
自由软件基金会 - GNU计划的赞助单位
- FSF(Free Software Fundation)提倡免费软件
- FSF自由使用权的三個意义:
- 可自由复制GNU的软件
- 可自由修改源代码
- 可自由散布修改过的源代码,但不得收取任何版权费用
https://www.fsf.org
GNU General Public License
- 大众公有版权/通用公共版权
- 官方翻译:自由文件许可
- Copyleft(是copyright的反话,就是防止有人给自由软件的使用加上限制)
https://www.gnu.org/licenses/gpl-3.0.html
在GPL条款下发布的主要GNU项目软件
- GCC
- G++
- GDB
- GNU make
- Bash • GNU Emacs
https://directory.fsf.org/wiki/Main_Page
GNU与Linux
• GNU
• 仍自行发展Hurd Kernel
• 开发许多以GPL发行的应用程序与工具程序
• Linux(Linus’s Unix)
• 由网络上热心的朋友一起发展Linux Kernel
• 采用GNU发展的许多应用程序与工具
• 应该称作GNU/Linux
Linux发行版
- Redhat
- Fedora
- SUSE
- Debian
- Ubuntu
- Centos
- Kylin
- UOS
https://www.linux.org/pages/download/
国产操作系统 - 统信UOS • 麒麟软件 中标麒麟kylin 银河麒麟neokylin
- 深度deepin
- 中科红旗Asianux
- 起点操作系统StartOS
- 中兴新支点NewStart
2.服务器的分类
计算机体系结构
- 冯·诺依曼 体系结构
服务器 - 服务器 Server
- 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。
- 冯·诺依曼体系结构
机箱外观分类
- 塔式服务器
- 机架服务器
- 刀片服务器
大小类型分类
- 微型机
- 小型机
- 大型机
- 超算
体系架构分类 - CISC服务器(Complex Instruction Set Computer,复杂指令集)
- RISC服务器(Reduced Instruction Set Computing,精简指令集)
业务类型分类 - 数据库服务器
- 缓存服务器
- 中间件服务器
- 应用服务器
虚拟化分类 - 物理机 (没有虚拟化的服务器)
- 虚拟机 (一般以VMware虚拟化为主虚拟出的服务器)
- 云主机 (公有云、私有云等云平台虚拟化出来的服务器)
公有云:亚马逊、微软云、阿里云、腾讯云、华为云私有云:政务云、中原云、一朵云
业务相关
- 私有云为主,目前南方沿海省份信息化建设比较发达,政府都会有自己的私有云平台,一般叫做政务云。
- 政务云,政务外网根据网络隔离策略划分分为 政务外网公有云和 政务外网专有云
- 业务内网,也称国土内网,局域网
- 互联网,常规意义上的互联网
3.系统安装
Linux系统安装
1、 安装模式:文本界面、图形界面
2、 分区规划:/boot、/home、swap、/
3、 软件包选择
4、 第三方驱动加载
安装模式
-
文本模式:
最小化安装,安装界面不直观,磁盘分区需要纯命令操作,安装速度快
-
图形模式:
用于高级定制,选择安装包,使用鼠标操作,安装过程可以选择中文,界面友好美观,磁盘分区工具简单易用
文本模式:
欢迎界面
语言
参数设置
安装过程
创建用户
设置root密码
完成安装
登录界面
安装模式
- 图形界面
在软件包选择步骤选择桌面安装即可
GNOME Desktop
图形模式
登录界面
登录效果
4.连接操作系统
SSH工具
Window下ssh工具
• SecureCRT 商业软件
• Xshell 商业软件 (有家庭校园免费版)
• MobaXterm 商业软件(有家庭免费版)
• Putty 开源软件
Linux下ssh工具
• SecureCRT 商业软件
• Putty 开源软件
• OpenSSH 开源软件(系统自带)
Xshell
Xshell输入用户名与密码
Xshell登录成功
CRT输入地址
CRT输入密码
CRT登录成功
ssh
- ssh 远程连接工具
- 命令格式:
ssh [options] [arguments] - 功能介绍:
ssh指令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。 - 命令示例:
-p 端口 - 命令示例:
# ssh root@192.168.8.129 以root用户登录192.168.8.129服务器
# ssh -p 64422 root@192.168.20.88 以root用户登录192.168.20.88使用64422端口
SFTP工具
windows下sftp工具
- WinSCP 开源软件
- Xftp 商业软件 (有家庭校园免费版)
- FileZilla
WinSCP连接
WinSCP主机信息
WinSCP登录成功
WinSCP文件操作
Xftp连接
Shell简介
- Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
- shell也被称为LINUX的命令解释器
- Shell 本身是一个程序。将用户输入的命令行拆解为”命令名“与”参数“。 接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始 化,然后将刚才解析出来的参数传给该程序并执行。
• shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能。
• 由于Shell本身是个程序,所以它可以被任何用户自己开发的各种
Shell所代替
查询shell - 查询默认shell
- echo ${SHELL}
- env | grep SHELL
退出shell - exit 退出当前shell
- 功能介绍:
退出当前shell,在shell脚本中可以终止当前脚本执行。 - 命令格式: exit
- 命令示例:
exit
开机关机 - 开机方式:按电源键,谁都会。服务器可以通过IMPI协议远程引导
- 关机命令:
shutdown
-h 关闭计算机
-r 重启计算机
shutdown -h now 马上关机
shutdown -r 10 10分钟后重启
开机关机 - 关机命令:
poweroff halt - 重启命令:
reboot - 重启快捷键:
Ctrl+Alt+Del
建议系统安装完成禁用,以免误操作导致重启
关机重启 - systemctl
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl 。 - systemctl poweroff 关机
- systemctl reboot 重启
5.配置时区语言
时间配置
- timedatectl 配置时间
- 命令格式:
timedatectl [options] [command] - 功能介绍:查询和更改系统时钟和设置
status 显示时区设置 set-time 设置时间 set-timezone 设置时区 list-timezones 列出时区 - 命令示例:
# timedatectl status 显示时间时区配置
# timedatectl set-time 18:30:30 设置时间为18:30:30
# timedatectl list-timezones 列出所有可用时区
# timedatectl set-timezone Asia/Shanghai 设置时区为Asia/Shanghai
- date 查询时间
- 命令格式:
date [options] [command] - 功能介绍:查询和配置系统语言和键盘布局 • 命令示例:
# date 显示时间
# date +"%Y-%m-%d %H:%M" 显示格式为年月日以及时间
[root@localhost ~]# date -s '2000-11-21 00:00:00'
2000年 11月 21日 星期二 00:00:00 CST
[root@localhost ~]# date
2000年 11月 21日 星期二 00:00:13 CST
[root@localhost ~]#
语言配置
- localectl 配置语言及键盘
- 命令格式:
localectl [options] [command] - 功能介绍:查询和配置系统语言和键盘布局
status 显示设置 set-locale 设置语言 list-locales 显示语言 set-keymap 设置键盘布局 list-keymaps 列式键盘布局 - 命令示例:
# localectl status 显示语言键盘配置
# localectl set-locale LANG=en_US.UTF-8 设置语言为en_US.UTF-8
# localectl list-locales 列出语言
# localectl list-keymaps 列出键盘布局
# localectl set-keymap us us 设置键盘布局为字符模式下us图形模式下us
主机名配置
• hostnamectl 配置主机名
• 命令格式: hostnamectl [options] [command]
• 功能介绍:查询和配置主机名
status 显示设置 set-hostname 设置主机名
• 命令示例:
# hostnamectl status 显示主机名
# hostnamectl set-hostname training.beyonds.info 设置主机名为training.beyonds.info
[root@master ~]# hostnamectl set-hostname localhost 设置主机吗为localhost
[root@master ~]# bash
[root@localhost ~]#
6.文件基本操作
列出文件
- ls 列出文件
- 命令格式:
ls [options] [FILE] - 功能介绍:列出指定目录下的文件
-l 列表显示 -a显示所有包含隐藏
-h显示大小 -t按时间排序 - 命令示例:
# ls -a 列出所有文件
# ls -t 列出文件按时间排序
# ls -alh 列出所有文件显示大小按时间排序
切换目录
- cd 切换目录
- 命令格式:
cd [DIR] - 功能介绍:切换到指定的工作目录 • 命令示例:
# cd /mnt 切换到/mnt目录
# cd – 切换到上次所在目录
# cd .. 返回上一级目录
# cd ../../../home 切换到相对目录home
# cd $ORACLE_HOME 切换到ORACLE_HOME变量值目录
# cd ~ 切换到用户主目录
创建文件
• touch 文件创建命令
• 命令格式:
touch [options] [arguments]
• 功能介绍:创建新的空文件,也可以用来改变文件的时间属性
-t 更改文件时间属性atime、mtime -r 修改为某个文件的时间
• 命令示例:
# touch newfile 创建一个文件newfile
# touch -t 1005201030 newfile 更改newfile时间戳为2010.05.20 10:30
# touch -r word.sql first.sql 以word.sql的时间为准修改first.sql的时间
创建目录
- mkdir 创建目录
- 命令格式:
mkdir [options] [arguments] - 功能介绍:创建新的空目录
-p 递归创建
-m 指定权限以数字表示法 - 命令示例:
# mkdir newdirectory 创建目录newdirectory
# mkdir -p /tmp/permission/test 递归创建/tmp/permission/test目录
# mkdir -m 700 /tmp/upload 创建/tmp/upload目录并赋予权限700
复制文件
- cp 文件复制
- 命令格式:
cp [options] [arguments] - 功能介绍: cp指令用来将一个或多个源文件复制到指定的目标文件或目录。
-f 强制覆盖已经存在的目标文件 -p 保持源文件所有者、权限信息和时间属性
-r 对目录进行复制时,递归到所有子目录及文件 - 命令示例:
# cp oldfile newfile 复制oldfile为newfile
# cp -r /mnt/test /tmp/test 复制/mnt/test目录到/tmp/test
# cp -a /data/mysql /usr/local/mysql 复制/data/mysql目录到/usr/local/mysql保留权限等文件属性
移动文件
- mv 移动文件或更改文件名
- 命令格式:
mv [options] [arguments] - 功能介绍: mv指令可以移动文件或为文件改名
-f 强制不提醒
-u 目标文件比较旧或者缺失时更新 - 命令示例:
# mv /root/oldfile /tmp 移动oldfile到/tmp目录
# mv /data /u01 重命名/data为/u01
# mv /etc/hosts /etc/hosts.bak 重命名hosts为hosts.bak
删除文件
• rm 删除文件
• 命令格式:
rm [options] [arguments]
• 功能介绍: rm指令用户删除给定的文件和目录 -f 强制删除,不会有删除文件的信息提示
-r 递归方式删除目录及目录下所有内容
• 命令示例:
# rm testfile 删除testfile文件
# rm -f myfile 删除myfile文件
# rm -rf /tmp/backup 强制删除/tmp/backup文件
查看文件
- cat 查看文本文件内容
- 命令格式:
cat [options] [FILE] - 功能介绍:查看文件内容,针对文本文件
-n 显示行号
-b 显示除空格以外的行号 - 命令示例:
# cat catalina.out 查看catalina.out文件
# cat -n /var/log/messages 查看/var/log/message文件显示行号
# cat -b readme.md 查看readme.md文件显示除空格外的行号
- more 查看文件内容
- 命令格式:
more [options] [FILE] - 功能介绍:查看文件内容,针对文本文件
+num 从第 num 行开始显示
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行 - 命令示例:
# more catalina.out 查看catalina.out文件
# more +100 /var/log/messages 从100行开始查看/var/log/messages文件
# more -s readme.md 合并多行空格为一行查看readme.md文件
- less 查看文件内容
- 命令格式:
less [options] [FILE] - 功能介绍:查看文件内容,针对文本文件
-e 文件结束后自动离开
-f 强制打开设备或二进制文件 - 命令示例:
# less catalina.out 查看catalina.out文件内容
# less -e /var/log/messages 查看/var/log/messages文件内容
# less -f sys.dat 强制打开sys.dat二进制文件内容
- tail 查看文件内容
- 命令格式:
tail [options] [FILE] - 功能介绍:查看文件内容,针对文本文件
-n 查看文件n行内容
-f 持续查看文件最新的内容 - 命令示例:
# tail catalina.log 查看catalina.log 文件内容
# tail -n 10 /var/log/messages 查看/var/log/messages文件第十行内容
# tail -f /tomcat/logs/catalina.out 查看/tomcat/logs/catalina.out最新的内容
查找内容
- grep 查找文件内容
- 命令格式:
grep [options] [FILE] - 功能介绍:查找过滤文件内容,针对文本文件
-v 反向过滤 -l 列出文件名 -r 递归目录 -i 不区分大小写 - 命令示例:
# grep beyonds readme.md 查找beyonds字符在文件readme.md中
# grep -v “#” /etc/fstab 查找/etc/fstab文件中不包含#的内容
# grep -rl error /var/log/ 查找/var/log目录中包含error的文件并列出文件名
- find 查找文件
- 命令格式:
grep [path] [expression] - 功能介绍:查找过滤匹配各种条件的文件
-name 名称过滤 -perm 权限过滤 -size 大小过滤
-type 类型过滤 d目录 f文件 -exec 执行命令 - 命令示例:
# find /var/log -name messages* 查找/var/log目录下所有messges打头的问题
# find /root/ -perm 777 查找/root目录下权限为777的文件
# find /root/ -size +20M 查找/root目录下大小大于20M的文件
# find / -type d -perm 777 -exec chmod 755 {} \; 查找/下权限777的目录并修改权限为755
# find / -user tom +5M -exec cp -a {} /root/findfiles/ \; 查看你tom用户下大于5M的文件并复制到/root/findfiles下
VIM编辑器
- vim 编辑器
- 命令格式:
- vim [options] [arguments]
- 功能介绍:
vi是Unix和类Unix操作系统中最通用的纯文本编辑器。Linux中有vi和vim,vim是vi的增强版。 - 命令示例:
- #vim /etc/hosts 编辑hosts文件
VIM编辑器
-
vim编辑器有三种模式:
-
命令模式Command mode
打开vim编辑器之后默认进入命令模式,按“x”“yy”“p”“r”“R”“gg”“GG”命令模式操作
-
编辑模式Insert mode
按“A”“a”“O”“o”“I”“i”进入编辑模式操作按“esc”退出编辑模式,进入命 令模式
-
末行模式Last line mode
按“:wq”“:q!”“:w”“:q”“:help”进入末行模式
文件归档
- tar 文件归档
- 命令格式
- tar [options] [arguments]
- 功能介绍
- tar指令是linux下的归档工具,可以为文件和目录创建tar格式的打包文件。
- -c 创建 -x 解压 -f 指定文件 -v 显示过程 -t 列出文件
- 命令示例:
- tar -cvf boot.tar /boot 打包/boot生成boot.tar打包
- tar -tvf boot.tar 列出boot.tar压缩包内容
- tar -xvf boot.tar 解开boot.tar包到当前目录
文件解压缩
- 命令格式:
- tar [options] [arguments]
- 功能介绍:
- tar指令支持“gzip”、“bzip2”、“compress”等压缩格式,可以直接使用tar指令打包文件压缩或解压缩。
-z gzip格式 -j bzip2格式 -J xz格式 -C 指定特定目录
- tar指令支持“gzip”、“bzip2”、“compress”等压缩格式,可以直接使用tar指令打包文件压缩或解压缩。
- 命令示例:
- tar -zcvf boot.tar.gz /boot 打包/boot目录生成boot.tar.gz压缩包
- tar -zxvf boot.tar.gz 解压boot.tar.gz到当前目录
- tar -jcvf boot.tar.bz /boot 打包/boot目录生成boot.tar.gz压缩包
- tar -jxvf boot.tar.bz 解压boot.tar.gz到当前目录
- tar -Jcvf boot.tar.xz /boot 打包/boot目录生成boot.tar.xz压缩包
- tar -Jxvf boot.tar.xz 解压boot.tar.xz到当前目录
文件解压缩
- zip/unzip 压缩解压缩
- 命令格式:
- zip/unzip [options] [arguments]
- 功能介绍:
- zip 打包文件为zip包
- unzip 解压缩zip包
- 命令示例:
- zip images.zip .jpg 打包.jpg生成images.zip压缩包
- unzip images.zip 解压images.zip到当前目录
解压缩命令
- gzip/gunzip
- bzip2/bunzip2
- compress/uncompress
- xz
- rar/unrar
7. 用户和组管理
- 用户有三类:根用户:root 超级管理员,UID为0 系统用户:bin 系统级用户,UID为1–500 普通用户:centos 普通业务用户,UID大于1000
- 初始定义文件
- /etc/login.defs
[root@localhost ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
[root@localhost ~]#
- 用户账号文件:
- /etc/passwd
- /etc/shadow
- passwd文件格式
root :x:0:0:root:/root:/bin/bash
beyonds:x:1000:1001::/home/beyonds:/bin/bash
- passwd字段说明
beyonds: x : 1000 : 1001 : : /home/beyonds : /bin/bash
用户名 :密码 :UID :GID :描述详细 :主目录 :默认shell
用户和组
- 用户组文件:
- /etc/group
- /etc/gshadow
group文件格式 root:x:0:
beyonds:x:1001:
- group格式说明 beyonds :
x : 1001 :
组名 :组密码 :GID :组中的用户
添加用户
- useradd 添加用户
- 命令格式:
- useradd [options] [arguments]
- 功能介绍:用来创建账号
- -u 指定UID -g 指定默认组 -G 指定附加组
- -m 创建主目录 -M 不创建主目录 -s 指定默认shell
- 命令示例:
- useradd beyonds 创建beyonds用户
- useradd -m flysea 创建flysea用户并创建主目录
- useradd -s /sbin/nologin centos 创建centos用户默认shell为/sbin/nologin
- useradd -u 1101 -g oinstall -G dba,oper oracle 创建oracle用户UID为1101且初始组为oinstall附件
组为dba、oper
用户密码
- passwd 设置密码
- 命令格式:
- passwd [options] [arguments]
- 功能介绍:用来设置密码
- -l 锁定用户 -u 解锁用户
- –stdin 从标准输入读取token
- 命令示例:
- passwd beyonds 设置beyonds密码
- passwd -l flysea 锁定flysea用户
- passwd -u centos 解锁centos用户
- echo beyonds.info | passwd --stdin beyonds 设置beyonds用户密码为beyonds.info
用户管理
- usermod 设置密码
- 命令格式:
- usermod [options] [arguments]
- 功能介绍:用来管理用户
- -l 修改用户名 -L 锁定用户 -U 解锁用户
- -u 修改UID -s 修改用户登录shell
- 命令示例:
- usermod -L beyonds 锁定beyonds用户
- usermod -U beyonds 解锁beyonds用户
- usermod -l test beyonds 修改beyonds用户为test
- usermod -s /sbin/nologin beyonds 修改beyonds用户shell为/sbin/nologin
删除用户
- userdel 设置密码
- 命令格式:
- userdel [options] [arguments]
- 功能介绍:用来删除用户
- -f 强制删除
- -r 删除用户主目录
- 命令示例:
- userdel beyonds 删除beyonds用户
- userdel -f flysea 删除flysea用户
- userdel -r centos 删除centos用户及其主目录
用户环境变量
- 配置用户环境变量
- /home/username/.bash_profile
- /home/username/.bashrc
添加用户组
- groupadd 添加用户组
- 命令格式:
- groupadd [options] [arguments]
- 功能介绍:用来添加用户组
- -g 指定GID -r 创建系统用户组
- 命令示例:
- groupadd oinstall 添加oinstall用户组
- groupadd -g 1031 dba 添加dba用户组GID为1031
用户组管理
- groupmod 添加用户组
- 命令格式:
- groupmod [options] [arguments]
- 功能介绍:用来管理用户组
- -g 指定新的GID -n 修改新的用户组名称
- 命令示例:
- groupmod -g 2000 beyonds 修改beyonds用户组GID为2000
- groupmod -n flysea beyonds 修改beyonds用户组名称为flysea
用户组管理
- groupmems 添加用户组
- 命令格式:
- groupmems [options] [arguments]
- 功能介绍:用来管理用户组
- -a 添加用户到用户组 -d 删除用户从用户组
- -l 列出用户组中的用户
- 命令示例:
- groupmems -g test -a beyonds 添加beyonds用户到test用户组
- groupmems -g test -d beyonds 删除beyonds用户从test用户组
- groupmems -g mail -l 列出mail用户组的用户
删除用户组
- groupdel 删除用户组
- 命令格式:
- groupdel [options] [arguments]
- 功能介绍:用来删除用户组
- 命令示例:
- groupdel beyonds 删除beyonds用户组
- groupdel oinstall 删除oinstall用户组
切换用户
- su 切换用户
- 命令格式:
- su [options] [arguments]
- 功能介绍:切换用户 - 生效用户环境变量
- 命令示例:
- su beyonds 切换beyonds用户
- su - oracle 切换oracle用户
用户提权
- sudo 用户提权
- 命令格式:
- sudo [options] [arguments]
- 功能介绍:用户提权执行命令
- -l 查看用户sudo的权限
- 命令示例:
- sudo mkdir /mnt/test 提权创建/mnt/test目录
- sudo systemctl restart sshd 提权执行sshd重启
8. 文件权限管理
权限简介
- 何为权限权力的限制
- 在Linux系统中,所有的文件和目录都有权限
- 确定谁能够通过何种方式对文件或目录进行何种操作
- 有严格的权限等级,如果权限过高导致误操作会增加服务器的风险各种权限给用户、服务等分配是否合理影响服务器安全
- 权限限制的是普通用户
查看权限
- 查看权限
- ls -l /ll 查看文件权限
[root@master ~]# ls -l
总用量 104
drwxr-xr-x. 2 root root 6 10月 15 15:58 公共
drwxr-xr-x. 2 root root 6 10月 15 15:58 模板
drwxr-xr-x. 2 root root 6 10月 15 15:58 视频
drwxr-xr-x. 2 root root 6 10月 15 15:58 图片
drwxr-xr-x. 2 root root 6 10月 15 15:58 文档
drwxr-xr-x. 2 root root 6 10月 15 15:58 下载
drwxr-xr-x. 2 root root 6 10月 15 15:58 音乐
drwxr-xr-x. 2 root root 6 10月 15 15:58 桌面
-rw-------. 1 root root 1220 10月 15 15:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 1375 10月 15 15:57 initial-setup-ks.cfg
-rw-r--r-- 1 root root 94239 11月 25 11:05 test
[root@master ~]# ll
总用量 104
drwxr-xr-x. 2 root root 6 10月 15 15:58 公共
drwxr-xr-x. 2 root root 6 10月 15 15:58 模板
drwxr-xr-x. 2 root root 6 10月 15 15:58 视频
drwxr-xr-x. 2 root root 6 10月 15 15:58 图片
drwxr-xr-x. 2 root root 6 10月 15 15:58 文档
drwxr-xr-x. 2 root root 6 10月 15 15:58 下载
drwxr-xr-x. 2 root root 6 10月 15 15:58 音乐
drwxr-xr-x. 2 root root 6 10月 15 15:58 桌面
-rw-------. 1 root root 1220 10月 15 15:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 1375 10月 15 15:57 initial-setup-ks.cfg
-rw-r--r-- 1 root root 94239 11月 25 11:05 test
[root@master ~]#
- 权限说明
文件列表信息分为:文件类型、权限、链接数、所属用户、所属用户组、文件大小、 最后修改时间、文件名 - 共有7种文件类型: -:普通文件 d:目录文件 l: 软链接(类似windows下的快捷方式) b:块设备文件(例如磁盘设备) p:管道文件
c:字符设备文件(例如串口设备) s:套接字文件(socket文件)
权限说明
- 权限两种表示法:
字符表示法 rwx 数字表示法 421 - 表示法对照关系:
权限说明 - 权限说明:字符表示法 和 数字表示法 最终表示的文件权限含义
drwxr-xr-x 6 7161 31415 156 May 29 23:22 mysql-utilities-commercial-1.6.5-py2.7
权限说明
- 字符表示法:
- [ugoa] [±=] [rwx] u:文件所属者
- g:文件所属者所在的组 o:其他用户 a:所有用户
- +:添加权限
- -:删除权限 =:等于权限 r:读取权限 w:写入权限 x:执行权限
权限说明
- 数字表示法:
- [421]
- 4:读取
- 2:写入
- 1:执行
修改权限
- chmod 设置权限
- 命令格式:
- chmod [options] [arguments]
- 功能介绍: chmod指令用来改变指定文件的权限,在chmod中权限支持字符表示和数字表示两种
- -R 递归
- 命令示例:
- chmod a+x /root/bin/install.sh 给所有用户赋予/root/bin目录下install.sh脚本的可执行权限
- chmod -R 711 /root/bin/ 文件所有者rwx权限,文件所有者组x权限,其他x权限
- chmod 600 /root/.ssh/authorized_keys 修改authorized_keys权限为600
- chmod a-r authorized_keys && chmod a-w authorized_keys && chmod a-x authorized_keys && chmod u+r authorized_keys && chmod u+w authorized_keys 修改authorized_keys权限为600
修改属主
- chown 修改文件属主
- 命令格式:
- chown [options] [arguments]
- 功能说明:修改文件属主或者属组
- -R 递归
- 命令示例:
- chown root /root/install.sh 修改/root/install.sh文件属主为root用户
- chown root:beyonds /root/install.sh 修改/root/install.sh文件属主为root属组为beyonds用户
- chown -R mysql:mysql /usr/local/mysql 修改/usr/local/mysql 目录下的所有文件属主属组为mysql
修改属组
- chgrp 修改文件属组
- 命令格式:
- chgrp [options] [arguments]
- 功能说明:修改文件属组
- -R 递归
- 命令示例:
- chgrp root /root/install.sh 修改/root/install.sh文件属组为root组
- chgrp beyonds /root/install.sh 修改/root/install.sh文件属组为beyonds组
- chgrp -R mysql /usr/local/mysql 修改/usr/local/mysql目录下的所有文件属组为mysql组
默认权限
- 设置文件创建默认权限
- 配置范围
- 系统级 /etc/bashrc 用户级 /home/xxx/.bashrc
- 默认管理员umask 0022 普通用户0002
默认权限 - umask 设置文件默认创建权限
- 命令格式:
- umask [arguments]
- 功能说明:设置文件默认创建权限 • 命令示例:
- umask 查询当前umask值
- umask 0027 修改umask值为0027
- umask 0027 && mkdir umask_d1 && touch umask_f1 修改umask查看默认创建文件权限
- su - beyonds && umask 0027 && mkdir umask_d1 && touch umask_f1 查看默认文件创建权限
ACL介绍
- ACL Access Control List 访问控制列表
- 默认情况下,文件权限通过属主属组及其他用户三个方面进行控制,除此之外,更细粒度的控制可以使用
- ACL进行细粒度权限分配且不影响属主属组权限变更。
- 两种ACL:当前ACL 默认ACL
- 当前ACL可以设置到文件或者目录
- 默认ACL只能设置到目录从而去做继承
- ACL可以设置为每用户、每组、用户不在属主和属组中的情况
查询ACL
- getfacl 查询ACL
- 命令格式:
- getfacl [options] [arguments]
- 功能说明:
- 查询acl
- -a 列出acl -d 显示默认acl
- -R 递归
- 命令示例:
- getfacl -a /etc/hosts 查询/etc/hosts的acl
- getfacl -a /mnt/acl_dir 查询/mnt/acl_dir目录的acl
- getfacl -R /mnt/acl_dir 递归查询/mnt/acl_dir目的的acl
配置ACL
- setfacl 配置ACL
- 命令格式:
- setfacl [options] [arguments]
- 功能说明:
配置acl- -m 修改acl -x 删除acl -k 删除默认acl -b 删除所有acl
- -R 递归
- 命令示例:
- setfacl -m u:beyonds:rwx /etc/hosts 设置/etc/hosts的acl为beyonds用户权限rwx
- setfacl -k /mnt/acl_dir 删除/mnt/acl_dir目录的默认acl
- setfacl -x u:beyonds /mnt/acl_dir 删除/mnt/acl_dir目录的beyonds的acl
- setfacl -b /mnt/acl_dir 删除/mnt/acl_dir目的的acl
9. 配置本地存储
分区表
- MBR
MBR(Master Boot Record) 应用于绝大多数使用BIOS引导的PC设备;很多Server服务器即支持
BIOS也支持EFI的引导方式。- 优点:
MBR支持32bit和64bit系统 - 缺点:
MBR支持的分区数量有限制
MBR只支持不超过2TB的硬盘,超过2TB的硬盘只能使用2TB的空间(但是有第三方解决方法),因为MBR的寻址空间只有32bit长
- 优点:
分区表
- GPT(GUID Parition Table) 新一代分区表类型支持超过2TB的磁盘
GPT有64bit寻址空间,而MBR对硬盘空间地址寻址最多只支持32bit,2的32次方,硬盘空间是以地址方式来被识别的,所以MBR只支持容量为2TB以内的磁盘
向后兼容MBR,但是底层硬件必须支持UEFI(Intel提出的取代BIOS的新一代的引导系统)才能使用,也就是底层硬件必须使用UEFI
必须使用64位操作系统,Mac、Linux 、Windows 64位系统都能支持GPT分区格式
磁盘设备
- 磁盘设备,数据持久化的载体
- 磁盘设备命名
IDE类型 hda SATA类型 sda 虚拟化 xvda 云平台 vda
- 磁盘设备在/dev目录下
- 磁盘设备通常需要进行分区才能使用(RAW除外)
- 磁盘设备从字母a开始命名
- 磁盘分区从数字1开始命名
查询磁盘
- lsblk 查询磁盘
- 命令格式:
lsblk [options] [arguments] - 功能说明:查询磁盘设备
-l 列出磁盘 -f 列出文件系统 -a 列出所有设备 - 命令示例:
- lsblk -l 列出磁盘设备
- lsblk -f 列出文件系统
- lsblk -a 列出所有磁盘设备
查询磁盘
- df 查询挂载磁盘
- 命令格式:
df [options] [arguments]
• 功能说明:查询挂载磁盘设备
-h 人类可读方式显示 -i 显示inodes值 - 命令示例:
- df -h 查询挂载磁盘设备
- df -i 查询挂载磁盘设备inodes
挂载磁盘
- mount 挂载磁盘
- 命令格式:
mount [options] [arguments] - 功能说明:挂载磁盘设备
-a 挂载所有磁盘 -t 读写模式挂载 - 命令示例:
- mount -a 挂载所有磁盘设备
- mount /dev/sdb1 /media 挂载/dev/sdb1到/meida目录
磁盘分区
- fdisk 磁盘分区
- 命令格式:
fdisk [options] [arguments] - 功能说明:磁盘设备分区
-l 列出磁盘分区 - 命令示例:
- fdisk -l 列出磁盘分区
- fdisk /dev/sdb 对磁盘/dev/sdb进行分区操作
磁盘分区
- fdisk 磁盘分区
- 交互式参数:
p 查看分区 n 新建主分区 d 删除分区 w 写入 q 退出 o 创建新的dos分区表 g 创建新的GPT分区表 l 列出分区类型