Linux Day03
Day03
sudo权限配置
execute a command as another user;以另外一个用户的身份执行指定的命令;
授权机制:sudo的授权文件,/etc/sudoers
两类内容:
- 别名的定义,即为变量;
- 授权项,可使用别名进行授权;
授权项(每行一个授权项)
who where=(runas) commands
users hosts=(runas) commands
帮助手册:
- man sudoers
- man visudo
建议使用visudo进行编译,会自动帮助检查语法错误
注意:用户通过sudo获得的授权,只能以sudo命令来启动
sudo命令:
sudo [options] COMMAND
-u username:以指定的用户身份运行命令;
-l:列出用户能以sudo方式执行的所有命令;
-K:清除此前缓存的用户认证成功的结果;
sudo su -:切换至管理员;
配置文件
配置文件中的各项解释
who:
username:单个用户
#uid:单个用户的ID号
%groupname:组内的所有用户
%#gid:组内的所有用户;
user_alias:用户别名;
where:
ip或hostname:单个主机;
netAddr:网络地址;
host_alias:主机别名
whom:
username
#uid
runas_alias
commands:
command:单个命令;
directory:指定目录内的所有应用程序;
sudoedit:特殊权限,可用于向其他用户授予sudo权限;
comnd_alias:命令别名;
定义别名的方法
ALIAS_TYPE NAME=item1,item2,……
ALIAS_TYPE:
User_Alias
Host_Alias
Runas_Alias
Cmnd_Alias
NAME:别名的名称字符,必须使用全大写字母;
示例
User_Alias USERADMINS = tom,jerry
Cmnd_Alias USERADMINCMNDS=/usr/sbin/useradd,/usr/bin/passwd,/usr/sbin/usermod
USERADMINS ALL=(root) USERADMINCMNDS
Cmnd_Alias USERADMINS=/usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd [a-z]*,!/usr/bin/passwd root,/usr/sbin/usrdel
常用标签
- NOPASSWD 不需要密码,可直接使用其他用户命令;
- PASSWD
示例:
fedora ALL=(root) NOPASSWD: /user/sbin/useradd,/user/bin/passwd, PASSWD: /user/sbin/usermod
简单示例
# visudo
root ALL=(ALL) ALL
hdp01 ALL=(ALL) ALL
切换用户
su命令
su - user
su -l user
su user -c \`COMMAND\` # 以user用户执行命令
文件权限管理
文件权限介绍
d rwxr-xr-x:
文件类型 文件权限
drwxr-xr-x.:文件类型和权限
2:链接数。普通文件链接数是1;目录链接数是子目录的个数。
root:所属的用户
root:所属组
4096: 文件大小
Oct 29 16:40:修改日期
Desktop:文件名称
文件类型
d:目录
-:普通文件
l:链接文件
c:字符设备文件
b:二进制设备文件
p:管道文件
s:socket文件
文件权限
ls -l
rwxrwxrwx
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
权限:
r:readable,读
w:wirteable,写
x:excuteable,执行
文件:
r:可获取文件的数据;
w:可修改文件的数据;
x:可将此文件运行为进程;
目录:
r:可使用ls命令获取其下的所有文件列表;
w:可修改此目录下的文件列表;即创建或删除文件,包括子目录。
x:可cd至此目录中;且可使用ls -l来获取所有文件的详细属性信息;
chmod命令
chmod [OPTIONS]… MODE[,MODE]… FILE…
chmod [OPTIONS]… OCTAL-MODE FILE…
chmod [OPTIONS]… --reference=RFILE FILE…
三类用户:
- u:属主
- g:属组
- o:其它
- a:所有
1. chmod [OPTIONS]… MODE[,MODE]… FILE…
MODE表示法:
1. 赋权表示法:直接操作一类用户的所有权限位;
在赋予三类用户的权限不同时,则用逗号隔开;如果相同,可以合并授权。
u=
g=
o=
a=
2. 授权表示法:直接操作一类用户的所有权限位r,w,x:
在赋予三类用户的权限不同时,则用逗号隔开;如果相同,可以合并授权。
u+,u-
g+,g-
o+,o-
a+,a-
2. chmod [OPTIONS]… OCTAL-MODE FILE…
数字权限授权法
3. chmod [OPTIONS]… --reference=RFILE FILE…
参考文件权限授权法:
chown命令
chown [选项]… [OWNER][:[GROUP]] FILE…
chown [选项]… [OWNER][.[GROUP]] FILE…
chown [选项]… --reference=RFILE FILE…
选项:
-R:递归修改,对目录下的所有文件(包括子目录)都有效。
chgrp命令
chmod [选项]… GREOUP FILE…
chmod [选项]… --reference=RFILE FILE…
打包压缩
压缩
gzip
gzip/gunzip/zcat
压缩或展开文件
zcat:查看gzip压缩后的文件内容。
gzip [OPTIONS]… FILE…
-d:解压缩,相当于gunzip;
-#:指定压缩比,默认是6;数字越大,压缩比越大(1-9);
-c:将压缩结果输出至标准输出,并保留源文件
gzip -c FILE > /PAHT/TO/XOMFILE.gz
reset:重置terminal,报错后,可以重新加载bash。
bzip2
bzip2/bunzip2/bzcat
bzip2 [OPTIONS]… FILE…
无论是压缩还是解压缩都会删除源文件
-d:解压缩
-#:指定压缩比,默认是6;数字越大,压缩比越大(1-9);
-k:keep,保留源文件
xz
xz/unxz/xzcat
lzma, unlzma/lzcat
xz [OPTIONS]… FILE…
-d:解压缩,
-#:指定压缩比,默认是6;数字越大,压缩比越大(1-9);
-k:保留源文件;
tar命令
tar [OPTION]… FILE…
tar的选项可以不带有-
-
创建归档
-c -f /PATH/TO/SOMEFLIE.tar FILE… -cf /PATH/TO/SOMEFLIE.tar FILE… -f选项后面需要跟参数,所以-f选项要写在后面。 -
展开归档
-xf /PATH/TO/SOMEFILE.tar -xf /PATH/TO/SOMEFILE.tar -C /PATH/TO/SOMEDIR -C:指定展开归档后的路径。 -
查看归档文件的文件列表
-tf /PATH/TO/SOMEFILE.tar归档完成后通常需要压缩,结果此前的压缩工具,就能实现压缩多个文件了。
-
归档并压缩,
-z:gzip2 归档并压缩:-zcf /PATH/TO/SOMEFILE.tar.gz FILE… 解压缩并展开归档:-zxf /PATH/TO/SOMEFILE.tar.gz -j:bzip2 -jcf -jxf -J:xz -Jcf -Jxf
特性:
- 可以直接对目录进行归档并压缩;
- 解压缩时可以智能识别压缩格式,不需要带解压缩格式(z,j,J)的参数,直接展开归档文件就可以。
zip
技能归档又能压缩
zip/unzip
# 后缀名:.zip
关机和重启
关机:halt init0 shutdown -h
重启:reboot init6
httpd服务
hyper text transfer protocol,应用层协议,80/tcp,文本协议
html:hyper text mark language,编程语言,超文本标记语言
apache http web服务器在后台服务名称,默认端口80
安装
yum install httpd
查看后台服务
service --status-all | grep httpd:查看所有后台服务器
service httpd status:查看httpd服务状态
开启httpd服务
service httpd start
访问web服务器
- 开启httpd服务
- 防火墙需要开放80端口或者关闭
service iptables stop
资源目录
资源根路径: /var/www/html/
配置目录: /etc/httpd/
挂载
将设备连接到一个已经存在的目录
挂载源和挂载点
挂载源:需要被挂载设备文件
挂载点:连接的目录
挂载语法
mount -t iso9660 -o ro 挂载源 挂载点
-t:挂载源文件系统类型
-o:挂载方式,ro只读,loop作为磁盘分区。
设置永久挂载
配置文件/etc/fstab
设备文件 挂载点 文件系统 权限(default) 0 0
卸载
umount 挂载点
需要注意的是一旦卸载,不管/etc/fstab文件中是否有配置,下次重启都不会挂载;
系统服务管理
常见命令
service –status-all:查看所有服务
service httpd status/start/stop/restart
开机状态
chkconfig httpd on/off 开机自启/关闭
chkconfig –list:查看各个系统启动级别下服务自启状态
chkconfig –level 34 httpd off:设置服务在指定系统启动级别下的开机自启状态
系统时间修改
linux系统启动时,从硬件读取日期和时间信息,读取完成以后,就不再与硬件相关联;
- 系统时钟
- 硬件时钟
date
显示或修改系统时钟
显示日期和时间
date [选项]... [+格式]
FROMAT:格式符
~]# date +%F
2017-05-10
+%F:显示日期
+%T:显示时间
+%c:显示日期,星期,时间
+%Y:显示年
+%m:显示月
+%d:显示日
+%H:显示小时
+%M:显示分钟
+%S:显示秒数
+%s:从 1970年1月1日(unix元年)0点0分0秒到命令执行那一刻历经的秒数
……
注意:+只能出现一次,如果想用空白字符做为分隔符,则使用引号把"%F %T",括起来。
设定日期和时间
date [选项] [MMDDhhmm[[CC]YY][.ss]]
月,日,小时,分钟,年,月,秒
时区
查看当前时区
[root@localhost ~]# cat /etc/sysconfig/clock
# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE="Asia/Shanghai"
修改时区
当前使用时区文件:/etc/localtime
存放时区信息文件:/usr/share/zoneinfo/Asia/Shanghai
覆盖当前使用的时区文件:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步网络时间
ntpdate 时间服务器地址
time.nist.gov
202.120.2.101
cn.pool.ntp.org
软件安装
程序包分类
- 二进制发布包: jdk/tomcat
- RPM发布包: 包管理工具规范RPM进行打包发布
rpm命令
rpm命令:rpm [options] [PACKAGE_FILE]
安装:-i,--install
升级:-U,--update,-F,--freshen
卸载:-e,--erase
查询:-q,--query
校验:-V,--verify
数据库维护:--builddb,--initdb
查询时只需给PACKAGE
安装时必须给PACKAGE_FILE
安装
rpm {-i|--install} [install-options] PACKAGE_FILE …
rpm -ivh PACKAGE_FILE……
GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出
install-options:
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安装,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系;不建议
--replacepkgs:重新安装
当配置文件内容被修改后,如果想使用默认配置文件,则先将配置文件备份并删除,然后重新安装
注意:rpm可以自带脚本:
四类:--noscripts
preinstall:安装过程开始之前运行的脚本,%pre,--nopre
postinstall:安装过程完成之后运行的脚本,%post,--nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,--nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun
--nosignature:不检查包签名信息,即不检查来源合法性
--noeigest:不检查包完整性信息;
升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE …
rpm {-F|--freshen} [install-options] PACKAGE_FILE …
-U:升级或安装,无需拥有老版本的程序包
-F:升级,必须拥有老版本的程序包
rpm -Uvh PACKAGE_FILE……
rpm -Fvh PACKAGE_FILE……
--oldpackage:降级安装(回滚);安装老版本的程序包;
--force:强制升级;如果老版本程序被其他程序所依赖,可能会破坏依赖关系;
注意:
- 不要对内核做升级操作;linux支持多内核版本并存,因此,直接安装新版本内核;
- 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名后(FILENAME.rpmnew)后提供,
卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
--allmatches:卸载所有匹配指定名称程序包的各版本;
--nodeps:忽略依赖管理
--test:测试卸载,try run模式
查询
默认查询安装后的程序包。
rpm {-q|--query} [select-options] [query-options]
select-options:
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a,-all:查询所有已经安装过的包
-f FILE:查询指定的文件由哪个程序包安装生成
-g,--group:查看指定包组中包含了哪些包
-p,--package PACKAGE_FILE:对于未安装的程序包执行查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被那个包所依赖;
query-options:
--changelog:查询rpm包的changlog(变更信息)
-l,--list:程序包安装生成的所有文件列表
-i,--info:程序包相关信息,版本号、大小、所属的包组,等;
-c,--configfiles:查询指定的程序包提供的配置文件;
-d,--docfiles:查询指定程序包提供的文档;
--provides:列出指定的程序包提供的所有CAPABILITY;
-R, --requires:查询指定程序包的依赖关系;
--scripts:查看程序包自带的脚本片段;
用法:
-qi PACKAGE,-qf PACKAGE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE
-qpi PACKAGE_FILE,-qpf PACKAGE_FILE,-qpc PACKAGE_FILE
校验
rpm [--verify|-V] [select-options] [verify-options]
没有数据显示表示校验成功;校验的是安装后的文件,是否发生改变。
5 MD5校验码发生改变
S 文件大小
L 符号连接不匹配
T 修改时间戳改了
D 主次设备号不匹配
U 用户改了
G 组改了
M 模式(包括许可和文件类型) 权限发生改变
P capabilities改了
包来源合法性验证和完整性验证
来源合法性验证:
- 数字签名:非对称加密,一般成对出现,公钥,私钥;
- 首先使用单向加密算法,定出程序包的特征码,在用私钥加密特征码,将加密的特征码放在程序包的后面。
完整性验证:
- 获取并导入信任的包制作者的密钥;
- 对于centos 发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验证:
- 安装此组织签名的程序时,会自动执行验证;
- 手动验证:rpm -k PACKAGE_FILE
数据库重建:
rpm管理器数据路径:/var/lib/rpm
查询操作:基于此处的数据进行;
获取帮助:
Centos6:man rpm
Centos7:man rpmdb
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有数据库时不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
--dbpath:指定数据库路径,初始化时,表示指定数据库新建的路径,重建时表示对指定数据库路径下的数据库进行重建。
yum在线安装
yum前端包管理器
将软件rpm打包并且防止在网络服务器,通过yum命令可以从服务器获取软件并且在线安装;能够解决包依赖问题;
yum可以实现查找,安装、删除等功能
yum install/remove 程序
源码编译安装
例如redis
安装jdk
上传文件
- ftp工具
- lrzsz工具
- SecureCRT -> alt+T
- xShell -> xFTP
查看jdk程序
rpm -qa | grep jdk
解压
tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local
配置环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin
soutce /etc/profile.d/java.sh
测试
java --version
安装mysql
查看mysql是否安装
rpm -qa | grep -i mysql
-i:不区分大小写
卸载已有版本
[root@localhost ~]# rpm -e --nodeps mysql-libs
安装 mysql Server和mysql Client
[root@localhost ~]# rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
启动服务
service mysql start
测试
登陆
查看密码
.mysql_secret文件保存默认密码
修改密码
SET PASSWROD=password('root');
或者使用 mysql_secure_installation命令
授权
mysql> grant all privileges on *.* to 'root'@"%" identified by "root";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
本地yum源配置
yum源配置文件
/etc/yum.repo.d/
配置本地yum源
-
本地服务器(httpd服务器)
-
rpm规范打包文件
-
仓库索引配置文件
ln -s /mnt/cdrom /var/www/html/cdrom -
配置仓库文件
[repositoryid] name=Some name for this repository baseurl=url://path/to/repository/,只要指定的路径下有repodata目录就可以了。 mirrorlist=URL,放置镜像,yum必须支持插件功能,一般不与baseurl同时使用。 enabled={1|0},默认为1,启动 gpgcheck={1|0},是否检查程序包完整性和合法性 gpgkey=URL,gpg的密钥文件,仓库提供; enablegroups={1|0},是否支持组批量管理程序包,默认是1,支持的。 failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选 keepalive,如果http是1.1的是否保持连接。 username,给ftp使用, password,给ftp的usernanme的password cost=1000,默认都是1000,示例文件
[local] name=CentOS-local baseurl=http://192.168.2.101/cdrom gpgcheck=0 enable=1 -
测试
yum repolist :查看可用的yum源
yun list: 查看软件安装列表
进程管理
什么是进程
进程是程序的运行过程。
线程是执行的最小单元。
进程可以产生另一个进程,存在父子关系;
进程的状态
新生:
就绪:除了cpu资源,
运行:
阻塞:
死亡:
进程管理命令
ps命令
查看进程状态
ps -aux 查看用户的所有进程
kill命令
kill pid 直接杀死进程,但不能保证一定能杀死
kill -9 pid 强制杀死进程。
pidof命令
pidof mysql 查看进程的进程号
pkill命令
pkill 进程名称 通过进程名杀死进程;


浙公网安备 33010602011771号