Update from Sync Service

This commit is contained in:
FNS Service
2026-04-15 23:43:17 +08:00
parent 6d17896267
commit ae67147f29
274 changed files with 4895 additions and 1 deletions

View File

@@ -0,0 +1,53 @@
**一、****FirewallD****简介**
FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。 以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。
相反firewall daemon 动态管理防火墙,不需要重启整个防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块了。不过,要使用 firewall daemon 就要求防火墙的所有变更都要通过该守护进程来实现以确保守护进程中的状态和内核里的防火墙是一致的。另外firewall daemon 无法解析由 ip*tables 和 ebtables 命令行工具添加的防火墙规则。
守护进程通过 D-BUS 提供当前激活的防火墙设置信息,也通过 D-BUS 接受使用 PolicyKit 认证方式做的更改。
**二、****FirewallD****特性**
- 守护进程应用程序、守护进程和用户可以通过 D-BUS 请求启用一个防火墙特性。特性可以是预定义的防火墙功能,如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP 拦截或自定义规则等。该功能可以启用确定的一段时间也可以再次停用。通过所谓的直接接口,其他的服务(例如 libvirt )能够通过 iptables 变元(arguments)和参数(parameters)增加自己的规则。amanda 、ftp 、samba 和 tftp 服务的 netfilter 防火墙助手也被“守护进程”解决了,只要它们还作为预定义服务的一部分。附加助手的装载不作为当前接口的一部分。由于一些助手只有在由模块控制的所有连接都关闭后才可装载。因而,跟踪连接信息很重要,需要列入考虑范围。
- 静态防火墙(system-config-firewall/lokkit)使用 system-config-firewall 和 lokkit 的静态防火墙模型实际上仍然可用并将继续提供但却不能与“守护进程”同时使用。用户或者管理员可以决定使用哪一种方案。在软件安装初次启动或者是首次联网时将会出现一个选择器。通过它你可以选择要使用的防火墙方案。其他的解决方案将保持完整可以通过更换模式启用。firewall daemon 独立于 system-config-firewall但二者不能同时使用。
- 区域网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。
- 预定义服务服务是端口和/或协议入口的组合。备选内容包括 netfilter 助手模块以及 IPv4、IPv6地址。
- 端口和协议定义了 tcp 或 udp 端口,端口可以是一个端口或者端口范围。
- ICMP阻塞可以选择 Internet 控制报文协议的报文。这些报文可以是信息请求亦可是对信息请求或错误条件创建的响应。
- 伪装私有网络地址可以被映射到公开的IP地址。这是一次正规的地址转换。
- 端口转发端口可以映射到另一个端口以及/或者其他主机。
- 哪个区域可用?由firewalld 提供的区域按照从不信任到信任的顺序排序。
- 丢弃任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
- 阻塞任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
- 公开用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
- 外部用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的连接接入。
- 隔离区dmz用以允许隔离区dmz中的电脑有限地被外界网络访问。只接受被选中的连接。
- 工作用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
- 家庭用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
- 内部用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
- 受信任的允许所有网络连接。
- 我应该选用哪个区域?例如,公共的 WIFI 连接应该主要为不受信任的,家庭的有线网络应该是相当可信任的。根据与你使用的网络最符合的区域进行选择。
- 由NetworkManager控制的网络连接防火墙不能够通过 NetworkManager 显示的名称来配置网络连接,只能配置网络接口。因此在网络连接之前 NetworkManager 将配置文件所述连接对应的网络接口告诉 firewalld 。如果在配置文件中没有配置区域,接口将配置到 firewalld 的默认区域。如果网络连接使用了不止一个接口,所有的接口都会应用到 fiwewalld。接口名称的改变也将由 NetworkManager 控制并应用到firewalld。
- 由脚本控制的网络对于由网络脚本控制的连接有一条限制:没有守护进程通知 firewalld 将连接增加到区域。这项工作仅在 ifcfg-post 脚本进行。因此此后对网络连接的重命名将不能被应用到firewalld。同样在连接活动时重启 firewalld 将导致与其失去关联。现在有意修复此情况。最简单的是将全部未配置连接加入默认区域。
- 使用firewalld图形界面工具firewall-configfirewall-cmd命令行工具firewall-cmd
**三、****FirewallD****配置**
- Firewalld命令
#进程与状态相关systemctl start firewalld.service #启动防火墙 systemctl stop firewalld.service #停止防火墙 firewall-cmd --state #查看防火墙状态 firewall-cmd --reload #更新防火墙规则 firewall-cmd --state #查看防火墙状态 firewall-cmd --reload #重载防火墙规则 firewall-cmd --list-ports #查看所有打开的端口 firewall-cmd --list-services #查看所有允许的服务 firewall-cmd --get-services #获取所有支持的服务
#区域相关firewall-cmd --list-all-zones #查看所有区域信息 firewall-cmd --get-active-zones #查看活动区域信息 firewall-cmd --set-default-zone=public #设置public为默认区域 firewall-cmd --get-default-zone #查看默认区域信息 firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public
#接口相关firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0 firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域
#端口控制firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(区域public)firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久删除80端口例外(区域public)firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
**注:如果某个接口不属于任何****Zone****,那么这个接口的所有数据包使用默认的****Zone****的规则。**
- 命令含义:--zone #作用域--add-port=80/tcp #添加端口,格式为:端口/通讯协议--permanent #永久生效,没有此参数重启后失效
- Systemctl命令
systemctl start firewalld.service #启动服务systemctl stop firewalld.service #关闭服务systemctl reloadt firewalld.service #重载配置systemctl restart firewalld.service #重启服务systemctl status firewalld.service #显示服务的状态systemctl enable firewalld.service #在开机时启用服务systemctl disable firewalld.service #在开机时禁用服务systemctl is-enabled firewalld.service #查看服务是否开机启动systemctl list-unit-files|grep enabled #查看已启动的服务列表systemctl --failed #查看启动失败的服务列表
- 关闭CentOS7自带Firewall启用iptables
yum install iptables-services #安装iptables systemctl stop firewalld.service #停止firewalld systemctl mask firewalld.service #禁止自动和手动启动firewalld systemctl start iptables.service #启动iptablessystemctl start ip6tables.service #启动ip6tables systemctl enable iptables.service #设置iptables自启动 systemctl enable ip6tables.service #设置ip6tables自启动 注:静态防火墙规则配置文件是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables
作者:风吹我已散博客
链接https://www.jianshu.com/p/a2e8829aa50e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

View File

@@ -0,0 +1,50 @@
**NTP****简介:**
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
在计算机的世界里,时间非常地重要
例如对于火箭发射这种科研活动对时间的统一性和准确性要求就非常地高是按照A这台计算机的时间还是按照B这台计算机的时间
NTP就是用来解决这个问题的NTPNetwork Time Protocol网络时间协议是用来使网络中的各个计算机时间同步的一种协议。
它的用途是把计算机的时钟同步到世界协调时UTC其精度在局域网内可达0.1ms在互联网上绝大多数的地方其精度可以达到1-50ms。
它可以使计算机对其服务器或时钟源如石英钟GPS等等进行时间同步它可以提供高精准度的时间校正而且可以使用加密确认的方式来防止病毒的协议攻击。
 
**环境:**
==系统:====CentOS Linux release 7.4.1708 (Core)== 
==NTP Server====服务器====IP========192.168.0.15==
==NTP Client====客户端====IP========192.168.0.16==
 
**1****、搭建****NTP****服务器**
**1.1****、查看服务器是否安装****ntp****,系统默认安装****ntpdate******
[root@localhost ~]# rpm -qa |grep ntpntpdate-4.2.6p5-28.el7.centos.x86_64ntp-4.2.6p5-28.el7.centos.x86_64
**1.2****、安装****ntp********ntpdate****已经系统默认安装过了**
[root@localhost ~]# yum install -y ntp
**1.3****、修改****ntp****配置文件**
[![Exported image](Exported%20image%2020260407231343-0.gif)](javascript:void\(0\);)
[root@localhost ~]# vim /etc/ntp.conf
把配置文件下面四行注释掉server 0.cn.pool.ntp.org iburstserver 1.cn.pool.ntp.org iburstserver 2.cn.pool.ntp.org iburstserver 3.cn.pool.ntp.org iburst然后在下面添加这几行server 0.cn.pool.ntp.org iburstserver 1.cn.pool.ntp.org iburstserver 2.cn.pool.ntp.org iburstserver 3.cn.pool.ntp.org iburst
[![Exported image](Exported%20image%2020260407231344-1.gif)](javascript:void\(0\);)
**1.4****、启动****ntp****服务,并开机自启动**
[root@localhost ~]# systemctl start ntpd[root@localhost ~]# systemctl enable ntpd
**1.5****、查询****ntp****是否同步**
[root@localhost ~]# ntpq -p remote refid st t when poll reach delay offset jitter==============================================================================*119.28.206.193 100.122.36.196 2 u 128 128 377 19.711 -0.468 5.363
**1.6****、开启防火墙****ntp****默认端口****udp123**
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=123/udpsuccess[root@localhost ~]# firewall-cmd --reloadsuccess
 
**2****、****NTP****客户端配置**
安装的NTP跟上面的步骤一样
**2.1****、修改****ntp****配置文件,将上面的****NTP****服务器作为客户端同步****NTP****时间服务器**
[![Exported image](Exported%20image%2020260407231346-2.gif)](javascript:void\(0\);)
[root@localhost ~]# vim /etc/ntp.conf#配置允许NTP Server时间服务器主动修改本机的时间restrict 192.168.0.15 nomodify notrap noquery#注释掉其他时间服务器#server 0.centos.pool.ntp.org iburst#server 1.centos.pool.ntp.org iburst#server 2.centos.pool.ntp.org iburst#server 3.centos.pool.ntp.org iburst#配置时间服务器为本地搭建的NTP Server服务器server 192.168.0.15
[![Exported image](Exported%20image%2020260407231348-3.gif)](javascript:void\(0\);)
**2.2****、与****NTP server****服务器同步一下时间:**
[root@localhost ~]# ntpdate -u 192.168.0.15
**2.3****、查看****ntp****同步状态**
能看到已经成功同步要记得开启ntpd这个服务器
[root@localhost ~]# ntpq -p remote refid st t when poll reach delay offset jitter============================================================================== 192.168.0.15 119.28.206.193 3 u 7 64 1 0.217 -288085 0.000
\> 来自 \<[https://www.cnblogs.com/Sungeek/p/10197345.html](https://www.cnblogs.com/Sungeek/p/10197345.html)\>

View File

@@ -0,0 +1,127 @@
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 3650 -out ca.crt \
-subj "/C=CN/ST=Guangdong/L=Guangzhou/O=zhdgps/OU=IT/CN=test/emailAddress=11111111@qq.com"
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout harbor-registry.key \
-out harbor-registry.csr \
-subj "/C=CN/ST=Guangdong/L=Guangzhou/O=zhdgps/OU=IT/CN=10.10.200.175/emailAddress=974418136@qq.com"
echo subjectAltName = IP:10.10.200.175 \> extfile.cnf
openssl x509 -req -days 3650 -in harbor-registry.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out harbor-registry.crt
==因为Harbor发布时默认并不包含certificates并使用http来提供registry请求服务。然而我们建议在实际的生产环境中还是要使用安全的https。Harbor有一个Nginx实例以作为其他所有服务的反向代理。可以使用prepare脚本来配置Nginx以支持https。==
**1. 停止Harbor**
==上一章我们使用的是Harbor默认的http方式工作这里我们首先将Harbor停止并删除掉原有的一些数据以恢复到一个干净的环境==
==# docker-compose down -v========# ls /data/*========# rm -rf /data/database========# rm -rf /data/registry========# rm -rf /data/*========# rm -rf /var/log/harbor*========#== ====
==注意可能是因为目前Harbor工作负载过重导致上面调用====docker-compose down -v====经常会失败,可用如下方式来停止:==
==# docker ps | grep -v CONTAINER | grep -v docs | awk '{print $1'} | xargs docker stop========# docker ps | grep -v CONTAINER | grep -v docs | awk '{print $1'} | xargs docker rm -vf==
**2. 获取证书**
==这里假设你的registry主机名为====reg.yourdomain.com====并且通过DNS记录能够找到你运行Harbor的主机。首先你应该从CA处获得一个certificate。该certificate通常包含一个====a.crt====文件和一个====a.key====文件,例如:====yourdomain.com.crt====以及====yourdomain.com.key====。==
==在测试或开发环境下你也许会使用一个自签名证书而不是从CA那里获取。可以通过如下的命令产生你自己的证书==
**2.1 创建自签名根证书**
==可以通过如下的方式来产生一个====私钥====及====自签名证书====:==
==# openssl req \====== ==-newkey rsa:4096 -nodes -sha256 -keyout ca.key \====== ==-x509 -days 365 -out ca.crt======
**2.2 产生证书签名请求**
==假如你使用类似于====reg.yourdomain.com====的FQDN(Fully Qualified Domain Name)方式来连接registry主机则你必须使用====reg.yourdomain.com====来作为CN(Common Name)。否则假如你使用IP地址来连接你的registry主机的话CN可以指定为任何值例如指定为你的名字==
==# openssl req \====== ==-newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \====== ==-out yourdomain.com.csr======
**2.3 为registry主机产生证书**
==假如你使用类似于====reg.yourdomain.com====的FQDN(Full Qualified Domain Name)方式来连接registry主机你可以使用如下的命令来为registry主机产生证书==
==# openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out yourdomain.com.crt======
==假如你是使用ip的话 比如使用====192.168.1.101====来连接registry主机的话你需要使用如下命令==
==# echo subjectAltName = IP:192.168.1.101 \> extfile.cnf======
==# openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out yourdomain.com========.crt==
**3. 配置与安装**
==在你获得====yourdomain.com.crt====与====yourdomain.com.key====文件之后,你可以将它们放到一个目录,比如====/root/cert/====:==
==# cp yourdomain.com.crt /root/cert/========# cp yourdomain.com.key /root/cert/== ====
==然后修改====harbor.cfg====配置文件更新hostname及protocol然后更新====ssl_cert====及====ssl_cert_key======
==#set hostname========hostname = reg.yourdomain.com========#set ui_url_protocol========ui_url_protocol = https========......========#The path of cert and key files for nginx, they are applied only the protocol is set to https== ======ssl_cert = /root/cert/yourdomain.com.crt========ssl_cert_key = /root/cert/yourdomain.com.key======
==然后再执行如下命令为Harbor产生配置文件==
==# ./prepare======
==假如当前====Harbor====正在运行的话,停止并移除当前的运行实例。通过如下方式你的====image data====仍会保留在文件系统中:==
==# docker-compose down======
==最后重启Harbor。==
==在设置了====https====之后,你可以通过如下的步骤来进行验证:==
- ==打开浏览器输入访问地址====https://reg.yourdomain.com====就会显示出Harbor的 UI界面==
- ==在安装有docker daemon的机器上请确保没有====--insecure-registry====设置),你必须拷贝上述步骤所产生的====ca.crt====到====/etc/docker/certs.d/reg.yourdomain.com====目录(或者====registry host IP====目录)。假如该目录并不存在的话请创建该目录。假如你将nginx 443端口映射到了其他端口的话则你必须创建====/etc/docker/certs.d/reg.yourdomain.com:port====目录(或者====registry host IP:port====目录然后运行相应的docker命令行来验证https是否工作正常==
==# docker login reg.yourdomain.com======
==假如你已经将nginx 443端口映射到了其他端口的话你需要在登录时添加相应的端口例如==
==# docker login reg.yourdomain.com:port======
**4. Troubleshooting**
==1) 你也许从一个certificate issuer处获得了一个intermediate certificate。在这种情况下你可以将该intermediate certificate与你自己的certificate合并创建出一个certificate bundle。你可以通过如下命令来实现==
==# cat intermediate-certificate.pem \>\> yourdomain.com.crt==
==2) 在有一些docker daemon运行的操作系统上你也许需要在操作系统级别信任该证书==
- ==在Ubuntu操作系统上你可以通过如下命令来完成==
==# cp youdomain.com.crt /usr/local/share/ca-certificates/reg.yourdomain.com.crt========# update-ca-certificates======
- ==在Redhat(Centos等操作系统上你可以通过如下命令来完成==
==# cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt========# update-ca-trust======
**5. 部署示例**
==我们当前部署环境ip地址为====192.168.69.128==
**5.1 获得证书文件**
**1) 产生根证书**
==# openssl req \====== ==-newkey rsa:4096 -nodes -sha256 -keyout ca.key \====== ==-x509 -days 365 -out ca.crt \====== ==-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=test_company/OU=IT/CN=test/emailAddress=11111111@qq.com"======
==# ls========ca.crt ca.key======
**2) 产生证书签名请求**
==# openssl req \====== ==-newkey rsa:4096 -nodes -sha256 -keyout harbor-registry.key \====== ==-out harbor-registry.csr \====== ==-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=test_company/OU=IT/CN=192.168.69.128/emailAddress=11111111@qq.com"======
==# ls========ca.crt ca.key harbor-registry.csr harbor-registry.key======
**3) 为registry产生证书**
==# echo subjectAltName = IP:192.168.69.128 \> extfile.cnf======
==# openssl x509 -req -days 365 -in harbor-registry.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out harbor-registry.crt======
==# ls========ca.crt ca.key ca.srl extfile.cnf harbor-registry.crt harbor-registry.csr harbor-registry.key==
**5.2 配置及安装**
==1) 拷贝harbor-registry证书到====/opt/cert====目录==
==# mkdir -p /opt/cert========# cp harbor-registry.crt /opt/cert/========# cp harbor-registry.key /opt/cert/======
==2) 修改harbor.cfg配置文件==
==#set hostname========hostname = 192.168.69.128========#set ui_url_protocol========ui_url_protocol = https========......========#The path of cert and key files for nginx, they are applied only the protocol is set to https== ======ssl_cert = /opt/cert/harbor-registry.crt========ssl_cert_key = /opt/cert/harbor-registry.key======
==3) 重新产生配置文件==
==# ./prepare======
==4) 关闭harbor==
==# docker-compose down== ====
==5) 查看docker daemon是否有====--insecure-registry====选项==
==如果仍有该选项请将其去掉并执行如下命令重启docker daemon:==
==# systemctl daemon-reload========# systemctl restart docker======
==6) 重启Harbor==
==# docker-compose up -d========Creating network "harbor_harbor" with the default driver========Creating harbor-log ... done========Creating registry ... done========Creating harbor-adminserver ... done========Creating harbor-db ... done========Creating harbor-ui ... done========Creating harbor-jobservice ... done========Creating nginx ... done======
==# docker ps========CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES========c7b4d837fefc vmware/nginx-photon:v1.4.0 "nginx -g 'daemon of…" 6 seconds ago Up 3 seconds 0.0.0.0:80-\>80/tcp, 0.0.0.0:443-\>443/tcp, 0.0.0.0:4443-\>4443/tcp nginx========257ec984fc98 vmware/harbor-jobservice:v1.4.0 "/harbor/start.sh" 6 seconds ago Up 4 seconds (health: starting) harbor-jobservice========331fe98b1623 vmware/harbor-ui:v1.4.0 "/harbor/start.sh" 8 seconds ago Up 5 seconds (health: starting) harbor-ui========d155d8a3cf00 vmware/harbor-db:v1.4.0 "/usr/local/bin/dock…" 10 seconds ago Up 7 seconds (health: starting) 3306/tcp harbor-db========183a8f508491 vmware/harbor-adminserver:v1.4.0 "/harbor/start.sh" 10 seconds ago Up 7 seconds (health: starting) harbor-adminserver========579642c3cecc vmware/registry-photon:v2.6.2-v1.4.0 "/entrypoint.sh serv…" 10 seconds ago Up 7 seconds (health: starting) 5000/tcp registry========06a1618f789e vmware/harbor-log:v1.4.0 "/bin/sh -c /usr/loc…" 10 seconds ago Up 9 seconds (health: starting) 127.0.0.1:1514-\>10514/tcp harbor-log======
==7) 通过https形式访问Harbor==
- ==通过浏览器访问==
==这里首先需要将上面产生的====ca.crt====导入到浏览器的====受信任的根证书====中。然后就可以通过https进行访问这里经过测试Chrome浏览器、IE浏览器可以正常访问但360浏览器不能正常访问==
- ==通过docker命令来访问==
==首先新建====/etc/docker/certs.d/192.168.69.128====目录,然后将上面产生的====ca.crt====拷贝到该目录:==
==# mkdir -p /etc/docker/certs.d/192.168.69.128========# cp ca.crt /etc/docker/certs.d/192.168.69.128/======
==然后登录到docker registry:==
==# docker login 192.168.69.128========Username (admin): admin========Password:== ======Login Succeeded======
==用向====registry====中上传一个镜像:==
==# docker images========192.168.69.128/library/redis alpine c27f56585938 3 weeks ago 27.7MB======
==[root@localhost test]# docker push 192.168.69.128/library/redis:alpine========The push refers to repository [192.168.69.128/library/redis]========f6b9463783dc: Pushed== ======222a85888a99: Pushed== ======1925395eabdd: Pushed== ======c3d278563734: Pushed== ======ad9247fe8c63: Pushed== ======cd7100a72410: Pushed== ======alpine: digest: sha256:9d017f829df3d0800f2a2582c710143767f6dda4df584b708260e73b1a1b6db3 size: 1568======
- ==通过curl命令来访问 registry API版本号==
==查询registry API版本号==
==# curl -iL -X GET== ==https://192.168.69.128/v2== ==--cacert ca.crt========HTTP/1.1 301 Moved Permanently========Server: nginx========Date: Tue, 10 Apr 2018 09:33:39 GMT========Content-Type: text/html========Content-Length: 178========Location:== ==https://192.168.69.128/v2/========Connection: keep-alive======
==HTTP/1.1 401 Unauthorized========Server: nginx========Date: Tue, 10 Apr 2018 09:33:39 GMT========Content-Type: application/json; charset=utf-8========Content-Length: 87========Connection: keep-alive========Docker-Distribution-Api-Version: registry/2.0========Set-Cookie: beegosessionID=575f32ac760f52c8cf1cdb748e48ab5e; Path=/; HttpOnly========Www-Authenticate: Bearer realm="https://192.168.69.128/service/token",service="harbor-registry"======
=={"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}======
==# curl -iL -X GET -u admin:Harbor12345== ==https://192.168.69.128/service/token?account=admin\&service=harbor-registry== ==--cacert ca.crt========HTTP/1.1 200 OK========Server: nginx========Date: Tue, 10 Apr 2018 09:34:39 GMT========Content-Type: application/json; charset=utf-8========Content-Length: 1100========Connection: keep-alive========Set-Cookie: beegosessionID=77bc62dcdc4a810a0e208487a89f069a; Path=/; HttpOnly======
=={====== =="token": "nHLZqMPw",====== =="expires_in": 1800,====== =="issued_at": "2018-04-10T09:34:39Z"========}======
==# curl -iL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer nHLZqMPw"== ==https://192.168.69.128/v2== ==--cacert ca.crt========HTTP/1.1 301 Moved Permanently========Server: nginx========Date: Tue, 10 Apr 2018 09:36:48 GMT========Content-Type: text/html========Content-Length: 178========Location:== ==https://192.168.69.128/v2/========Connection: keep-alive======
==HTTP/1.1 200 OK========Server: nginx========Date: Tue, 10 Apr 2018 09:36:48 GMT========Content-Type: application/json; charset=utf-8========Content-Length: 2========Connection: keep-alive========Docker-Distribution-Api-Version: registry/2.0========Set-Cookie: beegosessionID=e651b65d891617a999254ec875c1c63c; Path=/; HttpOnly======
==上面为了显示,我们对返回过来的====token====做了适当的裁剪。此外这里====curl====命令不适用====-k====选项,表示需要对服务器证书进行检查。==
- ==通过curl来访问registry中的镜像列表==
==# curl -iL -X GET -u admin:Harbor12345== ==https://192.168.69.128/service/token?account=admin\&service=harbor-registry\&scope=registry:catalog:*== ==--cacert ca.crt========HTTP/1.1 200 OK========Server: nginx========Date: Mon, 09 Apr 2018 09:33:52 GMT========Content-Type: application/json; charset=utf-8========Content-Length: 1166========Connection: keep-alive========Set-Cookie: beegosessionID=648fd5a5ec4f06389d45c02f7f5971b4; Path=/; HttpOnly======
=={====== =="token": "A7yfEdUBYD3bDhLM",====== =="expires_in": 1800,====== =="issued_at": "2018-04-09T09:33:52Z"========}======
==# curl -iL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer LA7yfEdUBYD3bDhLM"== ==http://192.168.69.128/v2/_catalog== ==--cacert ca.crt========HTTP/1.1 200 OK========Server: nginx========Date: Mon, 09 Apr 2018 09:36:35 GMT========Content-Type: application/json; charset=utf-8========Content-Length: 34========Connection: keep-alive========Docker-Distribution-Api-Version: registry/2.0========Set-Cookie: beegosessionID=1b84e760ab0234045f06680e56e28818; Path=/; HttpOnly======
=={"repositories":["library/redis"]}======
==上面为了显示,我们对返回过来的====token====做了适当的裁剪。此外这里====curl====命令不适用====-k====选项,表示需要对服务器证书进行检查。==
\> 来自 \<[https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https](https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https)\>
\> 来自 \<[https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https](https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https)\>

View File

@@ -0,0 +1,20 @@
J==enkins是开源的,使用Java编写的持续集成的工具在Centos上可以通过yum命令行直接安装。记录下安装的过程方便以后查找。==
==安装 java==
==$ sudo yum== ==install== ==-y== ==java========......==
==安装Jenkins==
==$ sudo wget -O /etc/yum.repos.d/jenkins.repo== ==http:====//jenkins-ci.org/redhat/jenkins.repo========$ sudo rpm --====import== ==http:====//pkg.jenkins-ci.org/redhat/jenkins-ci.org.key========$ sudo yum install -y jenkins========......==
==配置==
==Jenkins 的安装目录是:/var/lib/jenkins/==
==Jenkins 的皮遏制文件地址:/etc/sysconfig/jenkins==
==这里介绍下三个比较重要的配置:==
==JENKINS_HOME==
==JENKINS_USER==
==JENKINS_PORT==
==JENKINS_HOME是Jenkins的主目录Jenkins工作的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件生成的文件都在这个目录下。==
==JENKINS_USER是Jenkins的用户拥有$JENKINS_HOME和/var/log/jenkins的权限。==
==JENKINS_PORT是Jenkins的端口默认端口是8080为了和别的系统占用端口冲突建议改变。==
==授权==
==有时候Jenkins需要操作别的用户的文件或者执行脚本那么就得有对应的权限比如Jenkins用户执行docker命令进行镜像制作与上传用如下的命令即可。==
==$ sudo usermod -a -G docker jenkins==
==启动 Jenkins==
$ systemctl enable jenkins # 开机启动$ systemctl start jenkins # 启动jenkins

148
OneNote/Lunix/Centos/SELinux.md Executable file
View File

@@ -0,0 +1,148 @@
==一、前言==
==安全增强型 LinuxSecurity-Enhanced Linux简称 SELinux它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。==
==SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。==
==SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。==
==如果可以熟练掌握 SELinux 并正确运用,我觉得整个系统基本上可以到达"坚不可摧"的地步了(请永远记住没有绝对的安全)。==
==掌握 SELinux 的基本概念以及简单的配置方法是每个 Linux 系统管理员的必修课。==
==本文均在 CentOS 7.4.1708 系统中操作。==
==本文纯属个人学习经验分享交流,出错再所难免,仅供参考!如果发现错误的地方,可以的话麻烦指点下,特别感谢!==
==二、SELinux 的作用及权限管理机制==
==2.1 SELinux 的作用==
==SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。==
==设想一下,如果一个以 root 身份运行的网络服务存在 0day 漏洞,黑客就可以利用这个漏洞,以 root 的身份在您的服务器上为所欲为了。是不是很可怕?==
==SELinux 就是来解决这个问题的。==
==2.2 DAC==
==在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。==
==只要访问这个资源的进程符合以上的条件就可以被访问。==
==而最致命问题是root 用户不受任何管制,系统上任何资源都可以无限制地访问。==
==这种权限管理机制的主体是用户也称为自主访问控制DAC。==
==2.3 MAC==
==在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。==
==这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。==
==即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。==
==这种权限管理机制的主体是进程也称为强制访问控制MAC。==
==而 MAC 又细分为了两种方式一种叫类别安全MCS模式另一种叫多级安全MLS模式。==
==下文中的操作均为 MCS 模式。==
==2.4 DAC 和 MAC 的对比==
==这里引用一张图片来说明。==
==可以看到,在 DAC 模式下,只要相应目录有相应用户的权限,就可以被访问。而在 MAC 模式下,还要受进程允许访问目录范围的限制。==
==三、SELinux 基本概念==
==3.1 主体Subject==
==可以完全等同于进程。==
==注:为了方便理解,如无特别说明,以下均把进程视为主体。==
==3.2 对象Object==
==被主体访问的资源。可以是文件、目录、端口、设备等。==
==注:为了方便理解,如无特别说明,以下均把文件或者目录视为对象。==
==3.3 政策和规则Policy & Rule==
==系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性地对某些进程进行管制。==
==而哪些进程需要管制、要怎么管制是由政策决定的。==
==一套政策里面有多个规则。部分规则可以按照需求启用或禁用(以下把该类型的规则称为布尔型规则)。==
==规则是模块化、可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动地增减规则。==
==在 CentOS 7 系统中,有三套政策,分别是:==
==1. targeted对大部分网络服务进程进行管制。这是系统默认使用的政策下文均使用此政策。==
==2. minimum以 targeted 为基础,仅对选定的网络服务进程进行管制。一般不用。==
==3. mls多级安全保护。对所有的进程进行管制。这是最严格的政策配置难度非常大。一般不用除非对安全性有极高的要求。==
==政策可以在 /etc/selinux/config 中设定。==
==3.4 安全上下文Security Context==
==安全上下文是 SELinux 的核心。==
==安全上下文我自己把它分为「进程安全上下文」和「文件安全上下文」。==
==一个「进程安全上下文」一般对应多个「文件安全上下文」。==
==只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由政策中的规则决定。==
==文件安全上下文由文件创建的位置和创建文件的进程所决定。而且系统有一套默认值,用户也可以对默认值进行设定。==
==需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。==
==安全上下文的结构及含义==
==安全上下文有四个字段分别用冒号隔开。形如system_u:object_r:admin_home_t:s0。==
==3.5 SELinux 的工作模式==
==SELinux 有三种工作模式,分别是:==
==1. enforcing强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。==
==2. permissive宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。==
==3. disabled关闭 SELinux。==
==SELinux 工作模式可以在 /etc/selinux/config 中设定。==
==如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。==
==enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。==
==需要注意的是,如果系统已经在关闭 SELinux 的状态下运行了一段时间,在打开 SELinux 之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文(我表示我重启了大约 10 分钟,还以为是死机了……)。==
==SELinux 日志的记录需要借助 auditd.service 这个服务,请不要禁用它。==
==3.6 SELinux 工作流程==
==这里引用一张图片,不必过多解释。==
==注:上面的安全文本指的就是安全上下文。==
==四、SELinux 基本操作==
==4.1 查询文件或目录的安全上下文==
==命令基本用法==
==ls -Z==
==用法举例==
==查询 /etc/hosts 的安全上下文。==
==ls -Z /etc/hosts==
==执行结果==
==-rw-r--r--. root root system_u:object_r:net_conf_t:s0 /etc/hosts==
==4.2 查询进程的安全上下文==
==命令基本用法==
==ps auxZ | grep -v grep | grep==
==用法举例==
==查询 Nginx 相关进程的安全上下文。==
==ps auxZ | grep -v grep | grep nginx==
==执行结果==
==system_u:system_r:httpd_t:s0 root 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: master process /usr/sbin/nginx==
==system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: worker process==
==4.3 手动修改文件或目录的安全上下文==
==命令基本用法==
==chcon [...]==
==选项功能-u 修改安全上下文的用户字段-r 修改安全上下文的角色字段-t 修改安全上下文的类型字段-l 修改安全上下文的级别字段--reference 修改与指定文件或目录相一致的安全上下文-R递归操作-h修改软链接的安全上下文不加此选项则修改软链接对应文件==
==用法举例==
==修改 test 的安全上下文为 aaa_u:bbb_r:ccc_t:s0。==
==chcon -u aaa_u -r bbb_r -t ccc_t test==
==4.4 把文件或目录的安全上下文恢复到默认值==
==命令基本用法==
==restorecon [选项] [...]==
==选项功能-v打印操作过程-R递归操作==
==用法举例==
==添加一些网页文件到 Nginx 服务器的目录之后,为这些新文件设置正确的安全上下文。==
==restorecon -R /usr/share/nginx/html/==
==4.5 查询系统中的布尔型规则及其状态==
==命令基本用法==
==getsebool -a==
==由于该命令要么查询所有规则,要么只查询一个规则,所以一般都是先查询所有规则然后用 grep 筛选。==
==用法举例==
==查询与 httpd 有关的布尔型规则。==
==getsebool -a | grep httpd==
==执行结果==
==httpd_anon_write --\> off==
==httpd_builtin_scripting --\> on==
==httpd_can_check_spam --\> off==
==httpd_can_connect_ftp --\> off==
==#以下省略==
==4.6 开关一个布尔型规则==
==命令基本用法==
==setsebool [选项]==
==选项功能-P重启依然生效==
==用法举例==
==开启 httpd_anon_write 规则。==
==setsebool -P httpd_anon_write on==
==4.7 添加目录的默认安全上下文==
==命令基本用法==
==semanage fcontext -a -t "(/.*)?"==
==注:目录或文件的默认安全上下文可以通过 semanage fcontext -l 命令配合 grep过滤查看。==
==用法举例==
==为 Nginx 新增一个网站目录 /usr/share/nginx/html2 之后,需要为其设置与原目录相同的默认安全上下文。==
==semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"==
==4.8 添加某类进程允许访问的端口==
==命令基本用法==
==semanage port -a -t -p==
==注:各种服务类型所允许的端口号可以通过 semanage port -l 命令配合 grep 过滤查看。==
==用法举例==
==为 Nginx 需要使用 10080 的端口用于 HTTP 服务。==
==semanage port -a -t http_port_t -p tcp 10080==
==五、SELinux 错误分析和解决==
==5.1 认识 SELinux 日志==
==当开启了 SELinux 之后,很多服务的一些正常行为都会被视为违规行为(标题及下文中的错误均指违规行为)。==
==这时候我们就需要借助 SELinux 违规日志来分析解决。==
==SELinux 违规日志保存在 /var/log/audit/audit.log 中。==
==/var/log/audit/audit.log 的内容大概是这样的。==
==type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=25 res=1==
==type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? addr=? terminal=cron res=success'==
==...==
==该文件的内容很多,而且混有很多与 SELinux 错误无关的系统审计日志。我们要借助 sealert 这个实用工具来帮忙分析(如果提示找不到命令的话请安装 setroubleshoot 软件包)。==
==5.2 使用sealert分析错误==
==命令基本用法==
==sealert -a /var/log/audit/audit.log==
==执行完命令之后,系统需要花一段时间去分析日志中的违规行为并给出分析报告。分析报告的结构讲解请看下图:==
\> 来自 \<[https://blog.csdn.net/yanjun821126/article/details/80828908](https://blog.csdn.net/yanjun821126/article/details/80828908)\>

View File

@@ -0,0 +1,12 @@
**centos支持rz、sz命令**
yum install lrzsz
rz的用法
在命令终端输入rz回车后就会出现文件选择对话框选择需要上传文件一次可以指定多个文件上传到服务器的路径为当前执行rz命令的目录。
如图选择要上传的文件AddOK
s
sz的用法
sz命令可以单下载一个文件也可以多个文件同时下载

View File

@@ -0,0 +1,38 @@
有以下命令可以查看:
# lsb_release -a
LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description:    CentOS release 5.4 (Final)
Release:        5.4
Codename:       Final
这个命令适用于所有的linux包括Redhat、SuSE、Debian、Centos等发行版。
root@MyMail ~ # uname
Linux
root@MyMail ~ # uname -r
2.6.18-164.el5
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux
以下二种方法适用于RedHat,CentOS
root@MyMail ~ # cat /etc/redhat-release
CentOS release 5.4 (Final)
登录到linux执行rpm -q redhat-release
#rpm -q redhat-release
或CentOS
root@MyMail ~ # rpm -q centos-release
centos-release-5-4.el5.centos.1
**当前****centos** **版本与****redhat****对应的版本的命令**
# cat /proc/version
Linux version 2.6.9-78.ELsmp (mockbuild@builder16.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-10)) #1 SMP Fri Jul 25 00:04:28 EDT 2008
\> 来自 \<[https://www.cnblogs.com/zzdylan/p/9930144.html](https://www.cnblogs.com/zzdylan/p/9930144.html)\>

View File

@@ -0,0 +1,9 @@
==用户列表文件:====/etc/passwd==
用户组列表文件:/etc/group
查看系统中有哪些用户cut -d : -f 1 /etc/passwd
查看可以登录系统的用户cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
查看用户操作w命令(需要root权限)
查看某一用户w 用户名
查看登录用户who
查看用户登录历史记录last
\> 来自 \<[https://www.cnblogs.com/todarcy/p/11079228.html](https://www.cnblogs.com/todarcy/p/11079228.html)\>

View File

@@ -0,0 +1,70 @@
**CentOS 7 调整 home分区 扩大 root分区**
2. 查看分区
`df -h (centos-home`==和==`centos-root`==每人的名字可能不一样==
```
) vgdisplay (
```
==查看空闲磁盘大小)==``
4. 备份home分区文件
```
tar cvf /tmp/home.tar /home
```
6. 卸载/home如果无法卸载先终止使用/home文件系统的进程
`umount /home` ==(卸载)==
```
fuser -km /home/
```
==(终止)==``
8. 删除/home所在的lv
```
lvremove /dev/mapper/centos-home
```
10. 扩展/root所在的lv
```
lvextend -L +50G /dev/mapper/centos-root
```
12. 扩展/root文件系统
```
xfs_growfs /dev/mapper/centos-root
```
14. 重新创建home lv
```
lvcreate -L 50G -n /dev/mapper/centos-home
```
16. 创建文件系统
```
mkfs.xfs /dev/mapper/centos-home
```
18. 挂载home
```
mount /dev/mapper/centos-home
```
20. home文件恢复
`tar xvf /tmp/home.tar -C /home/`
\> 来自 \<[https://www.jianshu.com/p/27c87f390175](https://www.jianshu.com/p/27c87f390175)\>
\> 来自 \<[https://www.jianshu.com/p/27c87f390175](https://www.jianshu.com/p/27c87f390175)\>

View File

@@ -0,0 +1,12 @@
/usr 系统级的目录可以理解为C:/Windows//usr/bin 存放应用程序;/usr/share 存放共享数据,/usr/lib 存放不能直接运行的却是许多程序运行所必需的一些函数库文件可以理解为C:/Windows/System32
*比如Java的安装目录我会放在这里。
/usr/local用户级的程序目录可以理解为C:/Progrem Files/。
用户自己编译的软件默认会安装到这个目录下。
*比如HadoopTomcat的安装目录我一般会放在/usr/目录下
/opt给主机额外安装软件所摆放的目录。用户级的程序目录可以理解为D:/Softwareopt有可选的意思这里可以用于放置第三方大型软件或游戏当你不需要时直接rm -rf掉即可。在硬盘容量不够时也可将/opt单独挂载到其他磁盘上使用。
*比如临时上传到Linux里的软件tar.gz rpm等文件用作软件仓库。
————————————————
版权声明本文为CSDN博主「佛系亚当」的原创文章遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接https://blog.csdn.net/adamlinsfz/article/details/84307097

View File

@@ -0,0 +1,60 @@
==bin core home lib64 mnt root snap tmp vmlinuz== 
==boot dev initrd.img lost+found opt run srv usr== 
==cdrom etc lib media proc sbin sys var==
==下面, 我们逐个分析这些文件夹的用处==
==bin==
==系统 shell (终端) 命令存放于此==
==core==
==home==
==除了root用户以外的用户默认主目录, 每个子目录都是一个用户名==
==lib64==
==mnt==
==root==
==root用户的主目录==
==snap==
==tmp==
==boot==
==dev==
==lost+found==
==opt==
==供本系统所有用户使用软件一般安装在此==
==有人也喜欢把软件安装在== **/usr/local/**
==run==
==srv==
==usr==
**/usr/** ==目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本自带的主要的应用程序。==
**/usr/local/** ==目录一般安装第三方的软件==
**/usr/local/bin** ==放置用户自己安装的小的shell命令和一些在/usr/local目录下大应用程序的符号连接。==**/usr/local/bin/** ==目录下的命令可以直接在shell里使用==
**/usr/share/fonts**==是字体文件夹,可以在这里新建文件夹== **winFonts/**==,把ttf格式的字体放进去==
==然后将字体文件拷贝到此文件夹下:==
sudo cp ~/Desktop/font/*.ttf /usr/share/fonts/winFonts/
- ==1==
- ==2==
==然后,改变权限:==
sudo chmod 644 /usr/share/fonts/winFonts/*.ttf
- ==1==
- ==2==
==cdrom==
==etc==
==系统全局配置文件一般在此==
==/etc/apt/==
==Ubuntu 软件源列表, 也就是 apt-get 命令执行时从哪些地方下载包的依据==
==lib==
==media==
==proc==
==sbin==
==sys==
==var==
\> 来自 \<[http://blog.csdn.net/caib1109/article/details/51764196](http://blog.csdn.net/caib1109/article/details/51764196)\>
**开始安装**
==cd /usr/share/fonts/winFonts/== 
==sudo mkfontscale 创建雅黑字体的fonts.scale文件它用来控制字体旋转缩放== 
==sudo mkfontdir 创建雅黑字体的fonts.dir文件它用来控制字体粗斜体产生== 
==sudo fc-cache -fv (建立字体缓存信息,也就是让系统认识雅黑)==
\> 来自 \<[http://blog.csdn.net/caib1109/article/details/51764196](http://blog.csdn.net/caib1109/article/details/51764196)\>

View File

@@ -0,0 +1,175 @@
**命令历史**
以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。
**启动vim**
在命令行窗口中输入以下命令即可
vim 直接启动vim
vim filename 打开vim并创建名为filename的文件
**文件命令**
打开单个文件
vim file
同时打开多个文件
vim file1 file2 file3 ...
在vim窗口中打开一个新文件
:open file
在新窗口中打开文件
:split file
切换到下一个文件
:bn
切换到上一个文件
:bp
查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。
:args
打开远程文件比如ftp或者share folder
:e [ftp://192.168.10.76/abc.txt](ftp://192.168.10.76/abc.txt)
:e [\\qadrive\test\1.txt](file:///\\qadrive\test\1.txt)
**vim的模式**
正常模式按Esc或Ctrl+[进入) 左下角显示文件名或为空
插入模式按i键进入 左下角显示--INSERT--
可视模式(不知道如何进入) 左下角显示--VISUAL--
**导航命令**
% 括号匹配
**插入命令**
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
**查找命令**
/text  查找text按n健查找下一个按N健查找前一个。
?text  查找text反向查找按n健查找下一个按N健查找前一个。
vim中有一些特殊字符在查找时需要转义  .*[]^%/?~$
:set ignorecase  忽略大小写的查找
:set noignorecase  不忽略大小写的查找
查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
:set hlsearch  高亮搜索结果所有结果都高亮显示而不是只显示一个匹配。
:set nohlsearch  关闭高亮搜索显示
:nohlsearch  关闭当前的高亮显示如果再次搜索或者按下n或N键则会再次高亮。
:set incsearch  逐步搜索模式对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan  重新搜索在搜索到文件头或尾时返回继续搜索默认开启。
**替换命令**
ra 将当前字符替换为a当期字符即光标所在字符。
s/old/new/ 用old替换new替换当前行的第一个匹配
s/old/new/g 用old替换new替换当前行的所有匹配
%s/old/new/ 用old替换new替换所有行的第一个匹配
%s/old/new/g 用old替换new替换整个文件的所有匹配
:10,20 s/^/    /g 在第10行知第20行每行前面加四个空格用于缩进。
ddp 交换光标所在行和其下紧邻的一行。
**移动命令**
h 左移一个字符
l 右移一个字符这个命令很少用一般用w代替。
k 上移一个字符
j 下移一个字符
以上四个命令可以配合数字使用比如20j就是向下移动20行5h就是向左移动5个字符在Vim中很多命令都可以配合数字使用比如删除10个字符10x在当前位置后插入3个3a\<Esc\>这里的Esc是必须的否则命令不生效。
w 向前移动一个单词光标停在单词首部如果已到行尾则转至下一行行首。此命令快可以代替l命令。
b 向后移动一个单词 2b 向后移动2个单词
e同w只不过是光标停在单词尾部
ge同b光标停在单词尾部。
^ 移动到本行第一个非空白字符上。
0数字0移动到本行第一个字符上
\<HOME\> 移动到本行第一个字符。同0健。
$ 移动到行尾 3$ 移动到下面3行的行尾
gg 移动到文件头。 = [[
Gshift + g 移动到文件尾。 = ]]
ffind命令也可以用于移动fx将找到光标后第一个为x的字符3fd将找到第三个为d的字符。
F 同f反向查找。
跳到指定行,冒号+行号回车比如跳到240行就是 :240回车。另一个方法是行号+G比如230G跳到230行。
Ctrl + e 向下滚动一行
Ctrl + y 向上滚动一行
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
**撤销和重做**
u 撤销Undo
U 撤销对整行的操作
Ctrl + r 重做Redo即撤销的撤销。
**删除命令**
x 删除当前字符
3x 删除当前光标开始向后三个字符
X 删除当前字符的前一个字符。X=dh
dl 删除当前字符, dl=x
dh 删除前一个字符
dd 删除当前行
dj 删除上一行
dk 删除下一行
10d 删除当前行开始的10行。
D 删除当前字符至行尾。D=d$
d$ 删除当前字符之后的所有字符(本行)
kdgg 删除当前行之前所有行(不包括当前行)
jdGjd shift + g   删除当前行之后所有行(不包括当前行)
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
:1,$d 删除所有行
J(shift + j)  删除两行之间的空行,实际上是合并两行。
**拷贝和粘贴**
yy 拷贝当前行
nyy 拷贝当前后开始的n行比如2yy拷贝当前行及其下一行。
p  在当前光标后粘贴,如果之前使用了yy命令来复制一行那么就在当前行的下一行粘贴。
shift+p 在当前行前粘贴
:1,10 co 20 将1-10行插入到第20行之后。
:1,$ co $ 将整个文件复制一份并添加到文件尾部。
正常模式下按v逐字或V逐行进入可视模式然后用jklh命令移动即可选择某些行或字符再按y即可复制
ddp交换当前行和其下一行
xp交换当前字符和其后一个字符
**剪切命令**
正常模式下按v逐字或V逐行进入可视模式然后用jklh命令移动即可选择某些行或字符再按d即可剪切
ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴
:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。
:1, 10 m 20 将第1-10行移动到第20行之后。
**退出命令**
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
**窗口命令**
:split或new 打开一个新窗口,光标停在顶层的窗口上
:split file或:new file 用新窗口打开文件
split打开的窗口都是横向的使用vsplit可以纵向打开窗口。
Ctrl+ww 移动到下一个窗口
Ctrl+wj 移动到下方的窗口
Ctrl+wk 移动到上方的窗口
关闭窗口
:close 最后一个窗口不能使用此命令可以防止意外退出vim。
:q 如果是最后一个被关闭的窗口那么将退出vim。
ZZ 保存并退出。
关闭所有窗口,只保留当前窗口
:only
录制宏
按q键加任意字母开始录制再按q键结束录制这意味着vim中的宏不可嵌套使用的时候@加宏名比如qa。。。q录制名为a的宏@a使用这个宏
**执行shell命令**
:!command
:!ls 列出当前目录下文件
:!perl -c script.pl 检查perl脚本语法可以不用退出vim非常方便。
:!perl script.pl 执行perl脚本可以不用退出vim非常方便。
:suspend或Ctrl - Z 挂起vim回到shell按fg可以返回vim。
**注释命令**
perl程序中#开始的行为注释,所以要注释某些行,只需在行首加入#
3,5 s/^/#/g 注释第3-5行
3,5 s/^#//g 解除3-5行的注释
1,$ s/^/#/g 注释整个文档。
:%s/^/#/g 注释整个文档,此法更快。
**帮助命令**
:help or F1 显示整个帮助
:help xxx 显示xxx的帮助比如 :help i, :help CTRL-[即Ctrl+[的帮助)。
:help 'number' Vim选项的帮助用单引号括起
:help \<Esc\> 特殊键的帮助用\<\>扩起
:help -t Vim启动参数的帮助用-
help i_\<Esc\> 插入模式下Esc的帮助某个模式下的帮助用模式_主题的模式
帮助文件中位于||之间的内容是超链接可以用Ctrl+]进入链接Ctrl+oCtrl + t返回
**其他非编辑命令**
. 重复前一次命令
:set ruler?  查看是否设置了ruler在.vimrc中使用set命令设制的选项都可以通过这个命令查看
:scriptnames  查看vim脚本文件的位置比如.vimrc文件语法文件及plugin等。
:set list 显示非打印字符如tab空格行尾等。如果tab无法显示请确定用set lcs=tab:\>-命令设置了.vimrc文件并确保你的文件中的确有tab如果开启了expendtab那么tab将被扩展为空格。
Vim教程
在Unix系统上
$ vimtutor
在Windows系统上
:help tutor
:syntax 列出已经定义的语法项
:syntax clear 清除已定义的语法规则
:syntax case match 大小写敏感int和Int将视为不同的语法元素
:syntax case ignore 大小写无关int和Int将视为相同的语法元素并使用同样的配色方案
\> 来自 \<[https://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html](https://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html)\>

View File

@@ -0,0 +1,20 @@
1. 添加一个用户组并指定id为1002
sudo groupadd g 1002 www
 
2. 添加一个用户到www组并指定id为1003
sudo useradd wyx -g 1002 -u 1003 -m
 
3. 修改用户的密码
sudo passwd wyx
 
4. 删除一个用户
sudo userdel wyx
 
5. 为该用户添加sudo权限
sudo usermod -a -G adm wyx
sudo usermod -a -G sudo wyx
 
6. 查看所有用户和用户组:
cat /etc/passwd
cat /etc/group
\> 来自 \<[https://www.cnblogs.com/vincedotnet/p/4017574.html](https://www.cnblogs.com/vincedotnet/p/4017574.html)\>

View File

@@ -0,0 +1,7 @@
netstat tln //查看服务监听端口
netstat      //查看进程号
ps aux     //查看进程号
ps aux | more //全部查看
ps ef | grep mysql //查看mysql的进程
kill -9 3306 //强制杀掉进程号3306
\> 来自 \<[http://blog.sina.com.cn/s/blog_64492fe10100qqk3.html](http://blog.sina.com.cn/s/blog_64492fe10100qqk3.html)\>

9
OneNote/Lunix/Ubuntu/前言.md Executable file
View File

@@ -0,0 +1,9 @@
==Linux====提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在====Linux====系== ==统上工作离不开使用系统提供的命令。要想真正理解====Linux====系统,就必须从====Linux====命令学起,通过基础的命令学习可以进一步理解====Linux====系统。==
==不同====Linux====发行版的命令数量不一样,但====Linux====发行版本最少的命令也有====200====多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。==
==◆== ==安装和登录命令:====login====、====shutdown====、====halt====、====reboot====、====install====、====mount====、====umount====、====chsh====、====exit====、====last======
==◆== ==文件处理命令:====file====、====mkdir====、====grep====、====dd====、====find====、====mv====、====ls====、====diff====、====cat====、====ln======
==◆== ==系统管理相关命令:====df====、====top====、====free====、====quota====、====at====、====lp====、====adduser====、====groupadd====、====kill====、====crontab======
==◆== ==网络操作命令:====ifconfig====、====ip====、====ping====、====netstat====、====telnet====、====ftp====、====route====、====rlogin====、====rcp====、====finger====、====mail====、== ==nslookup======
==◆== ==系统安全相关命令:====passwd====、====su====、====umask====、====chgrp====、====chmod====、====chown====、====chattr====、====sudo ps====、====who======
==◆== ==其它命令:====tar====、====unzip====、====gunzip====、====unarj====、====mtools====、====man====、====unendcode====、====uudecode====。==
\> 来自 \<[https://www.cnblogs.com/tangbinblog/archive/2012/10/17/2727942.html](https://www.cnblogs.com/tangbinblog/archive/2012/10/17/2727942.html)\>

View File

@@ -0,0 +1,182 @@
==下载内容==
1. ==sudo apt-get insall ……==
2. ==sudo apt-get undate==
3. ==sudo apt-get upgrade==
4. ==sudo apt-get -f install==
==删除命令==
1. ==rm 文件==
2. ==rm -r 文件夹==
==移动命令==
1. ==cp 文件 最终路径==
2. ==cp -r 文件夹 最终路径 (这样可以把一个文件夹的所有文件全部移到最终路径)==
\>
**apt-get:**
==debian系系统的软件包管理程序(其图形化前端就是大名鼎鼎的新立得了),会自动帮你搞定依赖关系==
==最常用参数:==
==update        —-与你的软件源(在/etc/apt/sources.list中列出)更新软件包列表,换源后需要执行==
==upgrade        —-根据update得到的源软件库与本地已经安装的对比,(如果需要升级就)全部升级==
==install        —-安装软件包(可以使用tab补全软件包的名字,比较方便)==
==remove        —-卸载软件包==
==purge        —-卸载软件包,同时删除该软件的配置文件==
==source        —-从源里下载软件包的源码到当前目录(执行此命令的目录)并解压(除非指定download-only参数)==
==该地址由/etc/apt/sources.list中的 deb-src 行指定==
==check        —-用来(自动)修复(已装)软件包之间的依赖关系==
==clean        —-清除/var/cache/apt/archives/包括其子目录partial/下的所有软件包缓存==
==autoclean    —-比clean常用,我的理解是删除低版本的缓存而保留高版本的(或者包括非当前源里的软件包?)==
**aptitude:**
==此为PT同学补充,他的说法是aptitude比apt-get少个横线,tab补全比较容易(=.=)~大概神牛都比较懒吧==
==不得不提下蛋蛋童鞋以前说过的ubuntu彩蛋:) \<仅限于UBUNTU 8.04\>==
==man apt        —-最后会看到 “本apt有着超级牛力” or “this APT has a super-cow power”==
==man aptitude    —-会看到 “这个aptitude没有超级牛力”==
==看看aptitude的参数,你就会明白为什么aptitude会标称”高级软件包管理程序”了==
==最常用参数:==
==search        —-在(你的源的)所有软件包列表中搜索该软件,search的表达式可以很复杂,具体看man==
==其余常用参数同apt-get==
**cat:**
==把(一个或多个)文件内容(连接)显示到标准输出==
==当文本文件很小,而且你只是想看下,并不打算用gedit或者vim之类编辑器编辑的时候,可以cat一下,我是用来配合grep使用==
**cd:**
==切换当前工作目录==
==不同于其他命令,这是一个shell内置命令,所以没有手册页可看…够基础,所以才会出现在本篇文章中(=.=)郁闷==
==最常用参数:==
==.        —-切换到当前目录(貌似没有什么意义)(.这个目录可以通过ls -a看到)==
==..        —-切换到上层目录==
==~        —-回到家目录(/home/你的登录名/)==
**chmod**==:==
==改变文件的权限位==
==linux文件系统的权限位有两种表示方法,要是详细说下,非得累死老鼠不可=.=,所以只说8进制数表示:)==
==简要介绍下:ls -l可以显示出文件的权限,比如(-rwxr-xr),代表了三种用户的权限==
==第一个rwx,代表文件所有者的权限,即(读,写,执行),用二进制表示为111,代表八进制中的4+2+1=7==
==第二个r-x,代表文件所有者同一用户组其他用户的权限,即(读, ,执行),用二进制表示为101,代表八进制中的5=4+0+1==
==第三个r,代表其他用户的权限,即(读, , ),二进制表示为100,代表八进制的4=4+0+0==
==所以这个文件的权限位为754==
==这也就是chmod的用法,例如chmod 751 myfile #将该文件权限设定为rwxr-xx==
==最常用参数:==
==-v        —-列出当前正在执行的步骤==
==-R        —-递归式,即改变非空目录下的一切为指定权限==
**cp**==:==
==拷贝文件和目录==
==最常用参数:==
==-b        —-为每个已经存在的目的文件作个备份==
==-d        —-遇到软链接时不拷贝软链接所指向的文件;拷贝时保留links属性(链接数)==
==-p        —-保留文件的访问权限,所有者,和时间戳==
==-R和-r    —-递归式拷贝(cp过程遇到非空目录才有效),即拷贝目录,子目录,子目录的子目录…..==
==-a        —-作用同-dpR==
==-s        —-并不真的做拷贝,而只是为每个文件作软链接(符号链接)==
==-u        —-同下面 mv 的-u参数==
**head, tail**
==就像这两个名字,一个显示文件头部,一个显示尾部==
==最常用参数:==
==-n        —-指定输出的(头部或尾部)行数, 当没有此参数时,默认显示10行==
**ifconfig**==:==
==配置网卡==
==最常用参数:==
==没有参数        —-列出当前活动网卡的状态==
==-a            —-列出所有网卡的状态==
==interface    —-指定网卡名称比如eth0==
==up            —-唤醒该网卡==
==down        —-关闭该网卡==
==arp,mtu,netmask addr,…等等很多参数 =.===
**ln**==:==
==为文件建立链接==
==linux的链接分为两种:硬链接和软链接,ln默认建立硬链接(hard link),两种的区别请自己搜索:)==
==最常用参数:==
==-s        —-建立软链接(符号链接,可以理解为win下的快捷方式)==
==-f        —-如果要建立的链接名已经存在,则删除之==
**ls**==:==
==显示目录内容==
==最常用参数:==
==-a        —-显示指定目录所有文件,包括文件名以 . 开头的文件==
==-l        —-显示文件详细信息(包括文件类型,权限,修改时间,访问时间,大小,文件名…)==
==-h        —-将文件大小以方便阅读的形式表示出来,配合 -l 参数使用,常有奇效==
**man**==:==
==阅读参考手册of~==
==题外话:HX说这是linux最最难学的命令,因为man你学好了,就没有什么命令能难倒你了,=.=无敌了==
==man可以查的不仅仅是命令额(当然,因为man是无敌的嘛/ch)==
==最常用参数:==
==man 阿拉伯数字==
==阿拉伯数字1: 可执行程序(一般为用户安装的程序,如果提供了manpages的话)和shell命令==
==阿拉伯数字2: 系统调用(例如 open调用,socket调用,chmod调用 等等等等),先装manpages-dev先==
==阿拉伯数字3: 库函数调用(例如 man 3 printf),先装manpages-dev先==
==…….==
==当你执行man ls 时, 和 man 1 ls结果是一样的,因为ls在man手册中只有一个入口==
==当你想看chmod调用的手册页时,就要特别指定 man 2 chmod了~~因为chmod不止有一个入口==
==在man的时候,可以通过j,k上下移动(和vi中类似),可以通过/查询,通过n,N查找下个,上个匹配(和vi类似)==
==q退出(也和vi类似….)==
==比较有意思的一点:==
==由于man 本身是个命令,所以,连man都是可以man的 =.===
**mkdir**==:==
==创建一个目录==
==最常用参数:==
==-p        —-如果给出的路径中父目录不存在,则同时创建父目录==
**mount**==:==
==挂载文件系统(可理解为挂载一个分区)==
==最常用参数:==
==-t        —-指定文件系统类型,比如iso9660(挂载iso镜像为光盘,相当于虚拟光驱),ntfs,ext3,rfs等等==
==-l        —-列出所有已经挂载的文件系统,支持卷标==
==-a        —-挂载fstab中记录的所有分区==
==-n        —-挂载的时候不写入/etc/mtab==
==-o        —-相当常用的一个参数,指定挂载文件系统的”选项”,比如noatime,用来挂载BT专用分区很合适==
**mv**==:==
==移动或者更名文件,取决于目的目录是否为当前目录==
==最常用参数:==
==-b        —-为每个已经存在的目的文件做个备份(防止覆盖)==
==-f        —-不提示是否覆盖已经存在的目的文件==
==-i        —-与-f参数相反==
==-u        —-仅当源文件比目的文件更新或者目的文件不存在时候才移动==
==-v        —-显示移动文件的进度(个人总是推荐使用此参数,明白你在做什么)==
**ps,top:**
==列出当前命令的执行状态,ps为静态,top为动态(top时q退出)==
==ps:这个命令本人更常用些,推荐给你看看=.===
==最常用参数(ps多用参数集合,而不是单个参数,并且配合grep使用)==
==-ef        —-以标准语法列出当前所有进程状态,例如ps -ef | grep eva #列出eva的进程状态==
==aux        —-以BSD语法列出………………………………..==
==-ejH    —-列出进程树==
==-eLf    —-同时列出线程状态==
**rm, rmdir:**
==rm:删除文件或目录,rmdir:删除一个空目录(此命令个人认为没啥用,可以用rm -r替代)==
==rm最常用参数:==
==-f        —-不提示不存在的文件,直接跳过==
==-i        —-每个删除动作都提示 (=.= 删除多的话岂不是烦死)==
==-I        —-删除多个文件(多于3个时)或者递归式删除(对于非空目录)提示一次==
==-r和-R    —-递归式删除该目录下的一切东东==
==-v        —-显示每个文件的删除动作(个人总是推荐使用此参数,明白你在做什么)==
**sudo,su:**
==这大概是装好系统之后第一个要用的命令吧?==
==sudo我们主要用来临时提升权限,主要用以管理员(超级用户)的权限来运行命令,当需要修改当前登录用户力所不能及的文件/目录==
==时需要用sudo,或者su -c,当然sudo和su的作用范围不仅仅如此==
==可以使用visudo来编辑/etc/sudoers文件来修改sudo更详细的动作(比如记住密码的时间戳长度),请谨慎修改!==
**sh:**
==在终端解释执行==
==类似于’./’的形式,但PT给了不同点: ./’仅仅对当前目录下有执行权限的程序才有效,sh则不管这套==
==想想也是哈, ./’仅仅是给出了一个文件的路径(在当前目录下)而已, 但这个文件能不能执行就不好说了==
==所以用sh总是正确的==
**shutdown:**
==关闭系统,如果停留在TTY,请改用halt, poweroff等命令==
==常用参数:==
==+m        —-指定关机延迟的分钟==
==-c        —-取消一个等待关机的请求(关掉运行此命令的终端也可:))==
==now        —-立即关机==
==hh:mm    —-手动指定时间(以24小时计)==
**tar:**
==打包/解包==
==这个tar不多说了吧..到处都是tar.gz,tar.bz2的东东==
==和ps命令一样,tar一般不用单个参数,而是多个参数的组合,记住参数x是解压(extract),c是创建包(creat)即可==
==最常用参数:==
==-xvf    —-详细列出解包的步骤==
==-cvf    —-详细列出打包的步骤==
==-j        —-用来说明这是个tar.bz2包,例如tar -xjvf myfile.tar.bz2==
==-t        —-列出包中的文件列表==
==—–打包时常追加的参数:==
==-r        —-追加到压缩包中==
==-u        —-只把比包中更新的文件追加进去==
==-h        —-不把符号链接添加到包中,而是添加此符号链接指向的文件==
==附加说明:tar是个太强大的东东,常用的操作也就是打包解包,高级功能还是参阅man =.===
**touch:**
==改变文件时间戳,默认包括修改时间和创建时间,默认修改为当前时间,默认如果文件不存在就新建(=.=是不是很罗嗦)==
\> 来自 \<[http://www.ipc.me/ubuntu-useful-commands-collection-for-newbie.html](http://www.ipc.me/ubuntu-useful-commands-collection-for-newbie.html)\>

View File

@@ -0,0 +1,401 @@
==最近在项目中用到了Linux然后自己只会那些简单的发现头用的溜溜的所以查了一下常用的命令多查多用。==
==系统信息== 
==arch 显示机器的处理器==**架构**==(1)== 
==uname -m 显示机器的处理器架构(2)== 
==uname -r 显示正在使用的内核版本== 
==dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)== 
==hdparm -i /dev/hda 罗列一个磁盘的架构特性== 
==hdparm -tT /dev/sda 在磁盘上执行测试性读取操作== 
==cat /proc/cpuinfo 显示CPU info的信息== 
==cat /proc/interrupts 显示中断== 
==cat /proc/meminfo 校验内存使用== 
==cat /proc/swaps 显示哪些swap被使用== 
==cat /proc/version 显示内核的版本== 
==cat /proc/net/dev 显示网络适配器及统计== 
==cat /proc/mounts 显示已加载的文件系统== 
==lspci -tv 罗列 PCI 设备== 
==lsusb -tv 显示 USB 设备== 
==date 显示系统日期== 
==cal 2007 显示2007年的日历表== 
==date 041217002007.00 设置日期和时间 - 月日时分年.秒== 
==clock -w 将时间修改保存到 BIOS== 
==关机 (系统的关机、重启以及登出 )== 
==shutdown -h now 关闭系统(1)== 
==init 0 关闭系统(2)== 
==telinit 0 关闭系统(3)== 
==shutdown -h hours:minutes & 按预定时间关闭系统== 
==shutdown -c 取消按预定时间关闭系统== 
==shutdown -r now 重启(1)== 
==reboot 重启(2)== 
==logout 注销== 
==文件和目录== 
==cd /home 进入 '/ home' 目录'== 
==cd .. 返回上一级目录== 
==cd ../.. 返回上两级目录== 
==cd 进入个人的主目录== 
==cd ~user1 进入个人的主目录== 
==cd - 返回上次所在的目录== 
==pwd 显示工作路径== 
==ls 查看目录中的文件== 
==ls -F 查看目录中的文件== 
==ls -l 显示文件和目录的详细资料== 
==ls -a 显示隐藏文件== 
==ls *[0-9]* 显示包含数字的文件名和目录名== 
==tree 显示文件和目录由根目录开始的树形结构(1)== 
==lstree 显示文件和目录由根目录开始的树形结构(2)== 
==mkdir dir1 创建一个叫做 'dir1' 的目录'== 
==mkdir dir1 dir2 同时创建两个目录== 
==mkdir -p /tmp/dir1/dir2 创建一个目录树== 
==rm -f file1 删除一个叫做 'file1' 的文件'== 
==rmdir dir1 删除一个叫做 'dir1' 的目录'== 
==rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容== 
==rm -rf dir1 dir2 同时删除两个目录及它们的内容== 
==mv dir1 new_dir 重命名/移动 一个目录== 
==cp file1 file2 复制一个文件== 
==cp dir/* . 复制一个目录下的所有文件到当前工作目录== 
==cp -a /tmp/dir1 . 复制一个目录到当前工作目录== 
==cp -a dir1 dir2 复制一个目录== 
==ln -s file1 lnk1 创建一个指向文件或目录的软链接== 
==ln file1 lnk1 创建一个指向文件或目录的物理链接== 
==touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)== 
==file file1 outputs the mime type of the file as text== 
==iconv -l 列出已知的编码== 
==iconv -f fromEncoding -t toEncoding inputFile \> outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.== 
==find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)== 
==文件搜索== 
==find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录== 
==find / -user user1 搜索属于用户 'user1' 的文件和目录== 
==find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件== 
==find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件== 
==find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件== 
==find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限== 
==find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备== 
==locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令== 
==whereis halt 显示一个二进制文件、源码或man的位置== 
==which halt 显示一个二进制文件或可执行文件的完整路径== 
==挂载一个文件系统== 
==mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在== 
==umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出== 
==fuser -km /mnt/hda2 当设备繁忙时强制卸载== 
==umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用== 
==mount /dev/fd0 /mnt/floppy 挂载一个软盘== 
==mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom== 
==mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom== 
==mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom== 
==mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件== 
==mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统== 
==mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备== 
==mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享== 
==磁盘空间== 
==df -h 显示已经挂载的分区列表== 
==ls -lSr |more 以尺寸大小排列文件和目录== 
==du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'== 
==du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小== 
==rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)== 
==dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)== 
==返回顶部索引 ^==
==用户和群组== 
==groupadd group_name 创建一个新用户组== 
==groupdel group_name 删除一个用户组== 
==groupmod -n new_group_name old_group_name 重命名一个用户组== 
==useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户== 
==useradd user1 创建一个新用户== 
==userdel -r user1 删除一个用户 ( '-r' 排除主目录)== 
==usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性== 
==passwd 修改口令== 
==passwd user1 修改一个用户的口令 (只允许root执行)== 
==chage -E 2005-12-31 user1 设置用户口令的失效期限== 
==pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户== 
==grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组== 
==newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组== 
==返回顶部索引 ^==
==文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消== 
==ls -lh 显示权限== 
==ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示== 
==chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读r )、写(w)和执行(x)的权限== 
==chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限== 
==chown user1 file1 改变一个文件的所有人属性== 
==chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性== 
==chgrp group1 file1 改变文件的群组== 
==chown user1:group1 file1 改变一个文件的所有人和群组属性== 
==find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件== 
==chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限== 
==chmod u-s /bin/file1 禁用一个二进制文件的 SUID位== 
==chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的== 
==chmod g-s /home/public 禁用一个目录的 SGID 位== 
==chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件== 
==chmod o-t /home/public 禁用一个目录的 STIKY 位== 
==返回顶部索引 ^==
==文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消== 
==chattr +a file1 只允许以追加方式读写文件== 
==chattr +c file1 允许这个文件能被内核自动压缩/解压== 
==chattr +d file1 在进行文件系统备份时dump程序将忽略这个文件== 
==chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接== 
==chattr +s file1 允许一个文件被安全地删除== 
==chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘== 
==chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件== 
==lsattr 显示特殊的属性== 
==返回顶部索引 ^==
==打包和压缩文件== 
==bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件== 
==bzip2 file1 压缩一个叫做 'file1' 的文件== 
==gunzip file1.gz 解压一个叫做 'file1.gz'的文件== 
==gzip file1 压缩一个叫做 'file1'的文件== 
==gzip -9 file1 最大程度压缩== 
==rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包== 
==rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'== 
==rar x file1.rar 解压rar包== 
==unrar x file1.rar 解压rar包== 
==tar -cvf archive.tar file1 创建一个非压缩的 tarball== 
==tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件== 
==tar -tf archive.tar 显示一个包中的内容== 
==tar -xvf archive.tar 释放一个包== 
==tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下== 
==tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包== 
==tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包== 
==tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包== 
==tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包== 
==zip file1.zip file1 创建一个zip格式的压缩包== 
==zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包== 
==unzip file1.zip 解压一个zip格式压缩包== 
==返回顶部索引 ^==
==RPM 包 - Fedora, Redhat及类似系统== 
==rpm -ivh package.rpm 安装一个rpm包== 
==rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告== 
==rpm -U package.rpm 更新一个rpm包但不改变其配置文件== 
==rpm -F package.rpm 更新一个确定已经安装的rpm包== 
==rpm -e package_name.rpm 删除一个rpm包== 
==rpm -qa 显示系统中所有已经安装的rpm包== 
==rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包== 
==rpm -qi package_name 获取一个已安装包的特殊信息== 
==rpm -qg "System Environment/Daemons" 显示一个组件的rpm包== 
==rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表== 
==rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表== 
==rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表== 
==rpm -q package_name --whatprovides 显示一个rpm包所占的体积== 
==rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l== 
==rpm -q package_name --changelog 显示一个rpm包的修改历史== 
==rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供== 
==rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表== 
==rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书== 
==rpm --checksig package.rpm 确认一个rpm包的完整性== 
==rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性== 
==rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间== 
==rpm -Va 检查系统中所有已安装的rpm包- 小心使用== 
==rpm -Vp package.rpm 确认一个rpm包还未安装== 
==rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件== 
==rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包== 
==rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包== 
==返回顶部索引 ^==
==YUM 软件包升级器 - Fedora, RedHat及类似系统== 
==yum install package_name 下载并安装一个rpm包== 
==yum localinstall package_name.rpm 将安装一个rpm包使用你自己的软件仓库为你解决所有依赖关系== 
==yum update package_name.rpm 更新当前系统中所有安装的rpm包== 
==yum update package_name 更新一个rpm包== 
==yum remove package_name 删除一个rpm包== 
==yum list 列出当前系统中安装的所有包== 
==yum search package_name 在rpm仓库中搜寻软件包== 
==yum clean packages 清理rpm缓存删除下载的包== 
==yum clean headers 删除所有头文件== 
==yum clean all 删除所有缓存的包和头文件== 
==返回顶部索引 ^==
==DEB 包 (Debian, Ubuntu 以及类似系统)== 
==dpkg -i package.deb 安装/更新一个 deb 包== 
==dpkg -r package_name 从系统删除一个 deb 包== 
==dpkg -l 显示系统中所有已经安装的 deb 包== 
==dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包== 
==dpkg -s package_name 获得已经安装在系统中一个特殊包的信息== 
==dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表== 
==dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表== 
==dpkg -S /bin/ping 确认所给的文件由哪个deb包提供== 
==返回顶部索引 ^==
==APT 软件工具 (Debian, Ubuntu 以及类似系统)== 
==apt-get install package_name 安装/更新一个 deb 包== 
==apt-cdrom install package_name 从光盘安装/更新一个 deb 包== 
==apt-get update 升级列表中的软件包== 
==apt-get upgrade 升级所有已安装的软件== 
==apt-get remove package_name 从系统删除一个deb包== 
==apt-get check 确认依赖的软件仓库正确== 
==apt-get clean 从下载的软件包中清理缓存== 
==apt-cache search searched-package 返回包含所要搜索字符串的软件包名称== 
==返回顶部索引 ^==
==查看文件内容== 
==cat file1 从第一个字节开始正向查看文件的内容== 
==tac file1 从最后一行开始反向查看一个文件的内容== 
==more file1 查看一个长文件的内容== 
==less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作== 
==head -2 file1 查看一个文件的前两行== 
==tail -2 file1 查看一个文件的最后两行== 
==tail -f /var/log/messages 实时查看被添加到一个文件中的内容== 
==返回顶部索引 ^==
==文本处理== 
==cat file1 file2 ... | command \<\> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT== 
==cat file1 | command( sed, grep, awk, grep, etc...) \> result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中== 
==cat file1 | command( sed, grep, awk, grep, etc...) \>\> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中== 
==grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"== 
==grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇== 
==grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行== 
==grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"== 
==sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"== 
==sed '/^$/d' example.txt 从example.txt文件中删除所有空白行== 
==sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行== 
==echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容== 
==sed -e '1d' result.txt 从文件example.txt 中排除第一行== 
==sed -n '/stringa1/p' 查看只包含词汇 "string1"的行== 
==sed -e 's/ *$//' example.txt 删除每一行最后的空白字符== 
==sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部== 
==sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容== 
==sed -n '5p;5q' example.txt 查看第5行== 
==sed -e 's/00*/0/g' example.txt 用单个零替换多个零== 
==cat -n file1 标示文件的行数== 
==cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行== 
==echo a b c | awk '{print $1}' 查看一行第一栏== 
==echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏== 
==paste file1 file2 合并两个文件或两栏的内容== 
==paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分== 
==sort file1 file2 排序两个文件的内容== 
==sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)== 
==sort file1 file2 | uniq -u 删除交集,留下其他的行== 
==sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)== 
==comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容== 
==comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容== 
==comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分== 
==返回顶部索引 ^==
==字符设置和文件格式转换== 
==dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX== 
==unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS== 
==recode ..HTML \< page.txt \> page.html 将一个文本文件转换成html== 
==recode -l | more 显示所有允许的转换格式== 
==返回顶部索引 ^==
==文件系统分析== 
==badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块== 
==fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性== 
==fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性== 
==e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性== 
==e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性== 
==fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性== 
==fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性== 
==fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性== 
==dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性== 
==返回顶部索引 ^==
==初始化一个文件系统== 
==mkfs /dev/hda1 在hda1分区创建一个文件系统== 
==mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统== 
==mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统== 
==mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统== 
==fdformat -n /dev/fd0 格式化一个软盘== 
==mkswap /dev/hda3 创建一个swap文件系统== 
==返回顶部索引 ^==
==SWAP文件系统== 
==mkswap /dev/hda3 创建一个swap文件系统== 
==swapon /dev/hda3 启用一个新的swap文件系统== 
==swapon /dev/hda2 /dev/hdb3 启用两个swap分区== 
==返回顶部索引 ^==
==备份== 
==dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份== 
==dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份== 
==restore -if /tmp/home0.bak 还原一个交互式备份== 
==rsync -rogpav --delete /home /tmp 同步两边的目录== 
==rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync== 
==rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录== 
==rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录== 
==dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作== 
==dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件== 
==tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作== 
==( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容== 
==( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录== 
==tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接== 
==find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录== 
==find /var/log -name '*.log' | tar cv --files-from=- | bzip2 \> log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包== 
==dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作== 
==dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容== 
==返回顶部索引 ^==
==光盘== 
==cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容== 
==mkisofs /dev/cdrom \> cd.iso 在磁盘上创建一个光盘的iso镜像文件== 
==mkisofs /dev/cdrom | gzip \> cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件== 
==mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件== 
==cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件== 
==gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件== 
==mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件== 
==cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中== 
==cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3== 
==cdrecord --scanbus 扫描总线以识别scsi通道== 
==dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码例如一张 CD== 
==返回顶部索引 ^==
==网络 - 以太网和WIFI无线== 
==ifconfig eth0 显示一个以太网卡的配置== 
==ifup eth0 启用一个 'eth0' 网络设备== 
==ifdown eth0 禁用一个 'eth0' 网络设备== 
==ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址== 
==ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)== 
==dhclient eth0 以dhcp模式启用 'eth0'== 
==route -n show routing table== 
==route add -net 0/0 gw IP_Gateway configura default gateway== 
==route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16'== 
==route del 0/0 gw IP_gateway remove static route== 
==echo "1" \> /proc/sys/net/ipv4/ip_forward activate ip routing== 
==hostname show hostname of system== 
==host== ==www.example.com== ==lookup hostname to resolve name to ip address and viceversa(1)== 
==nslookup== ==www.example.com== ==lookup hostname to resolve name to ip address and viceversa(2)== 
==ip link show show link status of all interfaces== 
==mii-tool eth0 show link status of 'eth0'== 
==ethtool eth0 show statistics of network card 'eth0'== 
==netstat -tup show all active network connections and their PID== 
==netstat -tupl show all network services listening on the system and their PID== 
==tcpdump tcp port 80 show all HTTP traffic== 
==iwlist scan show wireless networks== 
==iwconfig eth1 show configuration of a wireless network card== 
==hostname show hostname== 
==host== ==www.example.com== ==lookup hostname to resolve name to ip address and viceversa== 
==nslookup== ==www.example.com== ==lookup hostname to resolve name to ip address and viceversa== 
==whois== ==www.example.com== ==lookup on Whois database== 
==GO TOP INDEX ^== 
==Microsoft Windows networks (SAMBA)== 
==nbtscan ip_addr netbios name resolution== 
==nmblookup -A ip_addr netbios name resolution== 
==smbclient -L ip_addr/hostname show remote shares of a windows host== 
==smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb== 
==mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share==
\> 来自 \<[http://blog.csdn.net/ww130929/article/details/69788517](http://blog.csdn.net/ww130929/article/details/69788517)\>

View File

@@ -0,0 +1,19 @@
有两个修改命令可以用到「change mode」&「change owner」
==即chmod以及chown其中可以用递归参数====-R====来实现更改所有子文件和子目录的权限。==
==1、利用chmod修改权限==
==对Document/目录下的所有子文件与子目录执行相同的权限变更:==
==chmod -R 700 Document/==
==-R参数是递归 处理目录下的所有文件以及子文件夹==
700是变更后的权限表示只有所有者有读和写以及执行的权限
Document/ 是需要执行的目录
==2、利用chown改变所有者==
==对Document/ 目录下的所有文件与子目录执行相同的所有者变更修改所有者为users用户组的username用户==
==chown -R username:users Document/==
==username:users users用户组的username用户组参数不是必须有==
==参考http://rabbit52.com/2011/linux/ubuntu/linux-chmod-chown==
\> 来自 \<[http://blog.csdn.net/songyu0120/article/details/43408499](http://blog.csdn.net/songyu0120/article/details/43408499)\>

View File

@@ -0,0 +1,5 @@
==du -sh /*==
==可以列出你整个VPS所有文件夹的大小。其中“/*”是控制分析哪个目录的,你根据上面的结果,然后灵活变化后面的路径就行了,例如:==
==du -sh /usr/*==
==用这个命令来分析usr目录下的文件夹大小最后定位到大文件直接删除就行了。==
\> 来自 \<[https://www.hack520.com/504.html](https://www.hack520.com/504.html)\>

View File

@@ -0,0 +1,38 @@
[https://blog.csdn.net/yaoxingshuai/article/details/50563245](https://blog.csdn.net/yaoxingshuai/article/details/50563245)
楼主给笔记本电脑装了双系统常年放在寝室开着平时用实验室的电脑偶尔需要笔记本的时候就远程控制。后来就发现了一个问题我远程连接linux的时候只能看见Linux这个分区的内容windows的D、E、F盘都没有这个时候如果要找这些盘符里的文件就比较麻烦了
于是乎机智的楼主看了一下Linux里的设备文件
cd  /dev
ls -l sd*
能看见楼主的笔记本硬盘分了好几个区C D E F G H为了确保准确楼主又看了一下硬盘信息
fdisk -lu
第四列Blocks指的分区大小sda1=52436128B 大概50GB这不是我的C盘么
最后一个sda9 = 12545024B 大概 12GB就是我安装Linux的盘符
sda2 = sda5+sda6+sda7+sda8+sda9 一共大概450G于是机制的楼主推断出sda5便是我要的D盘
我的D盘时尚时尚最时尚我情不自禁的要把D盘挂载到Linux下于是乎
cd /mnt   一般挂载到/mnt 或者 /media, 都可以
ls         发现目前啥都没有
mkdir thinkiii    我想把D盘挂载过来取名thinkiii这个无所谓的
mount /dev/sda5   /mnt/thinkiii    这样便把sda5也就是D盘挂载到/mnt/thinkiii了
cd /mnt/thinkiii
ls            便可查看D盘的文件了
————————————————
版权声明本文为CSDN博主「浴前带刀侍卫」的原创文章遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接https://blog.csdn.net/yaoxingshuai/article/details/50563245

View File

@@ -0,0 +1,7 @@
| |
|---|
|106.12.121.86|
我2be黑星
![BCC instancehkvxkrp70 A 0 VNC 201911315213 00OG3 1...](Exported%20image%2020260407231429-0.png)

16
OneNote/Lunix/阿里云/Php.md Executable file
View File

@@ -0,0 +1,16 @@
==首先安装mysql==
$ sudo apt-get install mysql-server$ sudo apt-get install mysql-client安装时输出root用户的密码
==在安装phpmyadmin==
$ sudo apt-get install phpmyadmin$ sudo apt-get install php-mbstring$ sudo apt-get install php-gettext安装时选择自动配置数据库输入数据库root账号的密码如果不安装以上两个php软件包则会报错或者白屏提示找不到/usr/share/php/php-gettext/gettext.inc之类的错误
==建立====/var/www/html== ==下的软连接==
$ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
==修改php配置文件==
$ sudo vim /etc/php/7.0/apache2/php.inidisplay_errors = On(显示错误日志,出现两次,都要改,不然无效)extension=php_mbstring.dll (开启mbstring)
==重启apache==
$ sudo /etc/init.d/apache2 restart
==1==
==2==
==访问端口localhost/phpmyadmin,输入账号密码即可==
==重点提要因为默认安装phpmyadmin时会安装apahce和php等依赖包由于是16.04系统会默认安装php7.0php7.0又没有默认自带php-mbstringphp-gettext这两个包所以会报错。==
\> 来自 \<[http://blog.csdn.net/l6807718/article/details/51374915](http://blog.csdn.net/l6807718/article/details/51374915)\>

View File

@@ -0,0 +1,2 @@
**阿里云下Ubuntu16下LAMP+wordpress建站记录**
\> 来自 \<[http://blog.csdn.net/code12hour/article/details/63691403](http://blog.csdn.net/code12hour/article/details/63691403)\>

View File

@@ -0,0 +1,61 @@
==搞了下====FTP====服务器,基本上能遇到的问题都遇到了====-====。====-!==
==先说步骤====:==
==1.====安装====vsftpd====软件包==
sudo apt-get install vsftpd
==2.====打开配置文件==
vim /etc/vsftpd.conf
==3.====修改参数==
==一些参数可以去掉注释激活,为了方便,你也可以注释全部,然后添加下面的设置==
[![Exported image](Exported%20image%2020260407231630-0.gif)](javascript:void\(0\);)
#这些设置系统默认是开启的可以不管listen=NOlisten_ipv6=YESdirmessage_enable=YESuse_localtime=YESxferlog_enable=YESconnect_from_port_20=YES
#下面的就要自定义设置了,建议系统默认的不管,然后复制下面的
#是否允许匿名访问NO为不允许anonymous_enable=NO#是否允许本地用户访问,就是linux本机中存在的用户YES允许local_enable=YES#是否开启写模式YES为开启write_enable=YES#新建文件权限一般设置为022那么新建后的文件的权限就是777-022=755local_umask=022
#是否启动userlist为通过模式YES的话只有存在于userlist文件中的用户才能登录ftp可以理解为userlist是一个白名单NO的话白名单失效和下面一个参数配合使用userlist_enable=YES#是否启动userlist为禁止模式YES表示在userlist中的用户禁止登录ftp黑名单NO表示黑名单失效我们已经让userlist作为一个白名单所以无需使用黑名单功能userlist_deny=NO#指定哪个文件作为userlist文件我们稍后编辑这个文件userlist_file=/etc/vsftpd.user_list
#是否限制本地所有用户切换根目录的权限YES为开启限制即登录后的用户不能访问ftp根目录以外的目录当然要限制啦chroot_local_user=YES#是否启动限制用户的名单list为允许模式上面的YES限制了所有用户可以用这个名单作为白名单作为例外允许访问ftp根目录以外chroot_list_enable=YES#设置哪个文件是list文件里面的用户将不受限制的去访问ftp根目录以外的目录chroot_list_file=/etc/vsftpd.chroot_list#是否开启写模式开启后可以进行创建文件夹等写入操作allow_writeable_chroot=YES
#设置ftp根目录的位置,这个文件我们稍后自己创建local_root=/var/myftp
[![Exported image](Exported%20image%2020260407231632-1.gif)](javascript:void\(0\);)
==重启====vsftpd==
 
sudo /etc/init.d/vsftpd restart
 
==4.====添加====ftp====用户==
==顺便将将用户目录设置为我们上面的====ftp====根目录==
sudo useradd -d /var/myftp ftpuser
==设置用户密码==
sudo passwd ftpuser
==5.====创建需要的文件,设置文件夹权限==
==上面我们指定了两个文件,====userlist====文件和====list====文件,有时候系统不会自动创建,你要自己创建==
vim /etc/vsftpd.user_list
==然后添加====ftpuser====进去作为白名单的一员==
vim /etc/vsftpd.chroot_list
==设为空即可==
==创建用户文件夹,设置权限==
mkdir /var/myftp
==权限设置可以根据你的使用场景来设置,我这里在根目录下禁止此用户写,然后下面建两个文件夹,一个====download====只允许读取,====upload====允许写和读==
 
[![Exported image](Exported%20image%2020260407231638-2.gif)](javascript:void\(0\);)
chmod 555 /var/myftpcd /var/myftpmkdir uploadchmod 755 uploadmkdir downloadchmod 555 download
[![Exported image](Exported%20image%2020260407231642-3.gif)](javascript:void\(0\);)
 
==最后检查一下文件所有者,都改为====ftpuser==
==6.====使用====ftp====,解决各种问题==
==linux====访问输入====ftp== ==加== ==你的====IP==
ftp xxx.xxx.xxx.xxx
==输入用户名====ftpuser====和密码==
==如果登录出现====530====错误:==
vim /etc/pam.d/vsftpd
==注释掉====#auth   required    pam_shells.so==
==然后====ls====一下,如果失败了,切换到被动模式即可==
passive mode
==然后====mkdir====一下发现无法创建文件夹== ==550 create directory operation failed==
setsebool -P ftpd_disable_trans on/etc/init.d/vsftpd restart
==即可==
\> 来自 \<[https://www.cnblogs.com/dupengcheng/p/6790143.html](https://www.cnblogs.com/dupengcheng/p/6790143.html)\>

View File

@@ -0,0 +1,21 @@
1. 首先安装Apache2安装命令sudo apt-get install apache2
[![UbuntuApache2](Exported%20image%2020260407231508-0.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=1)3.  安装完成后,进入到/etc/apache2中根据自己的实际安装目录这边我配置文件在/etc/apache2中。 我们看到没有想象中的httpd.conf配置文件这里要说明的是apache2的配置文件是apache2.conf,而不是http.conf。 打开apache2.conf。写入两条语句ServerName localhostDirectoryIndex index.html index.htm index.php这里的ServerName localhost是为了防止最后开启apache2服务的时候会提示DNS出错。DirectoryIndex index.html index.htm index.php是默认目录的写法。保存退出。可以在apache2.conf中加入  AddDefaultCharset GB2312    设置默认字符集,定义服务器返回给客户机默认字符集(由于西欧UTF-8是Apache默认字符集因此当访问有中文的网页时会出现乱码这时只要将字符集改成GB2312再重启Apache服务即可)Listen 192.168.1.1:80       设置监听ip是192.168.1.1的地址和端口为80Listen 192.168.1.2:8080     设置监听ip是192.168.1.2的地址和端口为8080Alias /down    "/sofТWare /download"   创建虚拟目录创建名为down的虚拟目录它对应的物理路径是/sofТWare /downloadAlias /ftp     "/var/ftp"                创建虚拟目录创建名为ftp的虚拟目录它对应的物理路径是/var/ftp\<Directory "/var/www/html"\>       设置目录权限(\<Directory "目录路径"\>此次写设置目录权限的语句\</Directory\>      Options FollowSymLinks        page:116      AllowOverride None\</Directory\>
[![UbuntuApache2](Exported%20image%2020260407231510-1.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=2)
[![UbuntuApache2](Exported%20image%2020260407231513-2.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=3)7.  需要说明的是在apache2中根设置默认主目录在 /etc/apache2/sites-АVailable/default中我们打开default进行配置。如图这里我们的默认主目录设置的路径是/var/www,文档最上方的VirtualHost后方的*代表通配符即表示所有本机ip地址监听端口为80ServerName填写你注册的域名没有可以不填。保存退出。
[![UbuntuApache2](Exported%20image%2020260407231515-3.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=4)
[![UbuntuApache2](Exported%20image%2020260407231517-4.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=5)11.   至此基本配置已经全部完成查看本机ip地址。输入启用apache2的命令:/etc/init.d/apache2 restart.并在浏览器中输入本机ip地址。成功
[![UbuntuApache2](Exported%20image%2020260407231522-5.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=6)
[![UbuntuApache2](Exported%20image%2020260407231525-6.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=7)
[![UbuntuApache2](Exported%20image%2020260407231527-7.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=8)
==END==
注意事项
18. 配置文件从httpd.conf变成了apache2.con \> 来自 \<[https://jingyan.baidu.com/article/9158e0006581d1a2541228b5.html](https://jingyan.baidu.com/article/9158e0006581d1a2541228b5.html)\>
[![UbuntuApache2](Exported%20image%2020260407231553-8.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=1)[![UbuntuApache2](Exported%20image%2020260407231559-9.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=2)
[![UbuntuApache2](Exported%20image%2020260407231602-10.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=3)[![UbuntuApache2](Exported%20image%2020260407231605-11.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=4)
[![UbuntuApache2](Exported%20image%2020260407231610-12.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=5)[![UbuntuApache2](Exported%20image%2020260407231612-13.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=6)
[![UbuntuApache2](Exported%20image%2020260407231616-14.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=7)
[![UbuntuApache2](Exported%20image%2020260407231620-15.jpeg)](http://jingyan.baidu.com/album/9158e0006581d1a2541228b5.html?picindex=8)
\> 来自 \<[https://jingyan.baidu.com/article/9158e0006581d1a2541228b5.html](https://jingyan.baidu.com/article/9158e0006581d1a2541228b5.html)\>
![plain aptget install apache2 aptget install libapa...](Exported%20image%2020260407231623-16.png)

View File

@@ -0,0 +1,302 @@
一). ubuntu下mysql安装布局:
/usr/bin                      客户端程序和mysql_install_db
/db                             数据库和日志文件
/var/run mysqld        服务器
/etc/mysql mysql       配置文件my.cnf
/usr/share/mysql       字符集,基准程序和错误消息
/etc/init.d/mysql        启动mysql服务器
二). 设置mysql服务器随开关机自动启动和关闭
系统 \> 系统管理 \> 服务
进行到“服务设置”窗口后激活mysql数据库服务即可
三). 修改mysql数据库文件的存储目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步
1、home目录下建立data目录
==cd /home==
==mkdir data==
2、把MySQL服务进程停掉
==mysqladmin -u root -p shutdown==
3、把/var/lib/mysql整个目录移到/home/data
==mv /var/lib/mysql== ==/home/data/==
这样就把MySQL的数据文件移动到了/home/data/mysql下
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件请到/usr/share/mysql/下找到*.cnf文件拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
==[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf== ==/etc/my.cnf==
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为/home/mysql/mysql.sock 。操作如下:
==vi==  ==my.cnf==  ==(====用====vi====工具编辑====my.cnf====文件,找到下列数据修改之====)==
==# The MySQL server==
==[mysqld]==  ==port== === 3306==
==#socket==  === /var/lib/mysql/mysql.sock====(原内容,为了更稳妥用====“#”====注释此行)==
==socket==  === /home/data/mysql/mysql.sock== ==(加上此行)==
6、修改MySQL启动脚本/etc/init.d/mysql
最后需要修改MySQL启动脚本/etc/init.d/mysql把其中datadir=/var/lib/mysql一行中等号右边的路径改成你现在的实际存放路径home/data/mysql。
==[root@test1 etc]# vi== ==/etc/init.d/mysql==
==#datadir=/var/lib/mysql====(注释此行)==
==datadir=/home/data/mysql== ==(加上此行)==
7、重新启动MySQL服务
/etc/init.d/mysql start启动sudo /etc/init.d/mysql start 停止sudo /etc/init.d/mysql stop 重启sudo /etc/init.d/mysql restart
或用reboot命令重启Linux
如果工作正常移动就成功了否则对照前面的7步再检查一下。还要注意目录的属主和权限。
四). 配置mysql数据库的INNODB存储引擎
1 . 查看mysql存储引擎情况 登录mysql数据库在mysql\>提示符下搞入show engines;命令。发现: InnoDB | YES说明此mysql数据库服务器支持InnoDB引擎。
2. 设置InnoDB为默认引擎在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,保存。
3. 重启mysql服务器mysqladmin -u root -p shutdown(回车)sudo /etc/init.d/mysql start(回车)。
4. 登录mysql数据库在mysql\>提示符下搞入show engines;命令。如果出现 InnoDB |DEFAULT则表示我们 设置InnoDB为默认引擎成功。
ps: 这里我用重启命令sudo /etc/init.d/mysql restart出现错误信息, 所以用了上面步骤3那种关闭服务又启动的笨方法。
、MYSQL数据库表大小写问题 
vi /etc/mysql/my.cnf 
在[mysqld]后添加 
lower_case_table_names=0 区分大小写 
lower_case_table_names=1 不区分大小写 
重启MYSQL服务
MYSQL在LINUX下数据库名、表名、列名、别名大小写规则如下 
1.数据库名与表名是严格区分大小写的 
2.表的别名是严格区分大小写的 
3.列名与列的别名在所有的情况下均是忽略大小写的 
4.变量名也是严格区分大小写的 
MYSQL在WINDOWS下都不区分大小写 
、管理Mysql
1、删除 mysql
1 sudo apt-get autoremove --purge mysql-server-5.0
2 sudo apt-get remove mysql-server
3 sudo apt-get autoremove mysql-server
4 sudo apt-get remove mysql-common (非常重要)
上面的其实有一些是多余的,建议还是按照顺序执行一遍
清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
==2、安装 mysql======
1 sudo apt-get install mysql-server
2 sudo apt-get install mysql-client
3 sudo apt-get install php5-mysql(安装php5-mysql 是将php和mysql连接起来 ) 
====
==一旦安装完成MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:======
1 sudo netstat -tap | grep mysql
当您运行该命令时,您可以看到类似下面的行:
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
如果服务器不能正常运行,您可以通过下列命令启动它:
1 sudo /etc/init.d/mysql restart
3、进入mysql
$mysql -u root -p 管理员密码
配置 MySQL 的管理员密码:
1 sudo mysqladmin -u root password newpassword
[MySQL 导入慢的解决方法](http://www.gagahappy.com/mysqldump-import-slow/)
MySQL导出的SQL语句在导入时有可能会非常非常慢。在导出时合理使用几个参数可以大大加快导 入的速度。
-e 使用包括几个VALUES列表的多行INSERT语法;
max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。
注意max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。
首先确定目标库的参数值
mysql\>show variables like max_allowed_packet;
mysql\>show variables like net_buffer_length;
根据参数值书写mysqldump命令
E:\eis\>mysqldump -uroot -p eis_db goodclassification -e max_allowed_packet=1048576 net_buffer_length=16384 \>good3.sql
==三====.====从数据库导出数据库文件:==
==1.====将数据库====mydb====导出到====e:\mysql\mydb.sql====文件中:==
==打开开始====-\>====运行====-\>====输入====cmd==    ==进入命令行模式==
==c:\\>mysqldump -h localhost -u root -p mydb \>e:\mysql\mydb.sql==
==然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。==
==2.====将数据库====mydb====中的====mytable====导出到====e:\mysql\mytable.sql====文件中:==
==c:\\>mysqldump -h localhost -u root -p mydb mytable\>e:\mysql\mytable.sql==
==3.====将数据库====mydb====的结构导出到====e:\mysql\mydb_stru.sql====文件中:==
==c:\\>mysqldump -h localhost -u root -p mydb --add-drop-table \>e:\mysql\mydb_stru.sql==
==四====.====从外部文件导入数据到数据库中:==
==从====e:\mysql\mydb2.sql====中将文件中的====SQL====语句导入数据库中:==
==1.====从命令行进入====mysql====,然后用命令====CREATE DATABASE mydb2;====创建数据库====mydb2====。==
==2.====退出====mysql== ==可以输入命令====exit====;或者====quit======
==3.====在====CMD====中输入下列命令:==
==c:\\>mysql -h localhost -u root -p mydb2 \< e:\mysql\mydb2.sql==
==然后输入密码,就====OK====了。==
==五====.====下面谈一下关于导入文件大小限制问题的解决:==
==默认情况下:====mysql== ==对导入文件大小有限制的,最大为====2M====,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:==
==1.====在====php.ini====中修改相关参数:==
==影响====mysql====导入文件大小的参数有三个:==
    ==memory_limit=128M,upload_max_filesize=2M,post_max_size=8M==
==修改====upload_max_filesize=200 M==  ==这里修改满足你需要的大小,==
==可以同时修改其他两项====memory_limit=250M  post_max_size=200M==
==这样就可以导入====200M====以下的====.sql====文件了==
\> 来自 \<[http://blog.csdn.net/qingrx/article/details/7987030](http://blog.csdn.net/qingrx/article/details/7987030)\>
![rootcocomap u mysqladmin u root p version Enter pa...](Exported%20image%2020260407231450-0.png)
![ysql show databases Sg Database I information perf...](Exported%20image%2020260407231452-1.png)
进入mysql
$mysql -u root -p 管理员密码
==进入MySQL Command line client下==
==查看当前使用的数据库:==
==mysql\>select database();==
==mysql\>status;==
==mysql\>show tables;==
==mysql\>show databases;//可以查看有哪些数据库,返回数据库名(databaseName)==
==mysql\>use databaseName;  //更换当前使用的数据库==
==mysql\>show tables; //返回当前数据库下的所有表的名称==
==或者也可以直接用以下命令==
==mysql\>show tables from databaseName;//databaseName可以用show databases得来==
==mysql查看表结构命令如下:==
==desc 表名;==
==show columns from 表名;==
==或者==
==describe 表名;==
==show create table 表名;==
==或者==
==use information_schema==
==select * from columns where table_name='表名';==
==查看警告:==
==Rows matched: 1  Changed: 0  Warnings: 1==
==mysql\> show warnings;==
\> 来自 \<[http://database.51cto.com/art/201011/234471.htm](http://database.51cto.com/art/201011/234471.htm)\>
![mysql use wordpress Database changed mysql show ta...](Exported%20image%2020260407231457-2.png) ![4. 4. aptget install mysqlserver aptget install ph...](Exported%20image%2020260407231502-3.png)
4]如何创建和删除一个数据库?
比如我要创建一个名为linux的数据库应该运行如下命令
mysql\> create database [数据库名];
所以我们应该运行如下的命令来创建名为linux的数据库
mysql\> create database linux;
Query OK, 1 row affected (0.00 sec)
是不是建好了呢肯定是建好了因为都有OK了:)
查看是不是有linux这个数据库了呢
代码:
mysql\> show databases;
+----------+
| Database |
+----------+
| linux |
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)
那我们如何删除一个数据库呢??
mysql\> drop database [数据库名];
比如我们要把刚才创建的linux数据库删除应该用下面的命令
mysql\> drop database linux;
Query OK, 0 rows affected (0.00 sec)
是不是已经删除了呢??
代码:
mysql\> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec) 
5]如何操作一个数据库呢这个问题就比较多了建议还是看一下mysql的手册吧。里面的东西太多了。如果操作一个数据库首先是要指定一个数据库为当前数据库应该用use命令
mysql\>use [数据库];
比如我想指定linux这个数据库为当前数据库应该是
mysql\> use linux;
Database changed
6]如何备份数据库??
比如我们要备份mysql中已经存在的名为linux的数据库要用到命令mysqldump
命令格式如下:
shell\> mysqldump -uroot -p linux \> /root/linux.sql
Enter password:在这里输入数据库的密码
通过上面的命令,我们要明白两件事,首先备份数据库是要以数据库管理员的身份备份;其次:备份目的地是/root备份的文件名是linux.sql。其实备份的位置和文件名根据自己的情况来定。文件名可以自己来取路径也可以自己来安排
比如我想把linux的数据库备份到/home/beinan数据库的文件名为linuxsir031130.sql所以应该输入如下的命令。
shell\> mysqldump -uroot -p linux \> /home/beinan/linuxsir031130.sql
Enter password:在这里输入数据库管理员root的数据库密码
这样我们到/home/beinan目录下就能发现mysql中名为linux的数据库的备份文件linuxsir031130.sql
综上所述,我们学习时要学会变通。:):)
5]如何把把备份的数据库导入到数据库中?
首先我们还是要操作上面几个过程,比如添加数据库管理员(如果您没有添加过mysql数据库管理员的话),创建数据库等。
比如我们要把在/home/beinan这个目录中的linuxsir031130.sql这个备份导入名为linux的数据库中应该如下操作
shell\> mysql -uroot -p linux \< /home/beinan/linuxsir031130.sql
Enter password:在这里输入密码
如果机器好,数据库比较小,几分钟就好了。
6]其它一些比较常用的mysql指令
查看状态
mysql\> show status;
查看进程
代码:
mysql\> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+| 16 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec) 
查看表应该先指定一个数据库为当前数据库比如是名为linux的数据库
mysql\>use linux;
mysql\> show tables;
Empty set (0.00 sec)
7]对mysql数据库常用命令的一点补充
几个常用的mysql相关的管理命令
mysql 命令基本文本的显示和使用的mysql数据库。前面已经简单的提过用法比如登录等。
mysqladmin 命令用来创建和维护mysql数据库的命令前面已经简单的提过
isamchk 是用来修复、检查和优化.ism后缀的数据库文件
mysqldump 是用于备份数据库,前面已经简单的说明过;
myisamchk 用来修复.myi后缀的数据库文件
比如我们要检查名为linux的数据库.myi数据库表是否存在问题应该用下面的命令
要把mysqld服务器停下来
shell\> ../share/mysql.server stop
然后执行
shell\> myisamchk ../var/linux/*.MYI
上面的命令的意思就是检查所有的.myi文件数据库的目录在../var/linux/目录中
如果有问题,应该用-r参数来修复
shell\> myisamchk -r ../var/linux/*.MYI
6]mysqlshow 命令:显示用户选择的数据库和表
shell\> mysqlshow -uroot -p [数据库名]
比如我要查看名为linux的数据库应该是
shell\> mysqlshow -uroot -p linux
好了,到这里,你可能已经知道命令行下的所有基本操作了~
ps:补充一个。。
更改ROOT帐号名。
update set user="新名字" where user="旧名字";
\> 来自 \<[http://blog.csdn.net/princewong/article/details/2003658](http://blog.csdn.net/princewong/article/details/2003658)\>

View File

@@ -0,0 +1,18 @@
安装php7我这里装了好多我也不知道哪些是非必需的
[plain] view plain copy
apt-get install php7.0 php7.0-curl php7.0-gd php7.0-json php7.0-opcache php7.0-xml mcrypt php7.0-curl php7.0-cgi php7.0-xmlrpc php7.0-gd php-pear
重启apache2和mysql
[plain] view plain copy
systemctl restart apache2
systemctl restart mysql
测试php和apache2
[plain] view plain copy
vim /var/www/html/info.php
输入
[php] view plain copy
\<?php
phpinfo();
?\>
保存后访问你的域名或者公网ipyour_server_ip/info.php看看有没有对应的信息有就说明成功了。

View File

@@ -0,0 +1,80 @@
WordPress的安装与配置
下载wordpress
[plain] view plain copy
wget https://wordpress.org/latest.zip
安装unzip:
[plain] view plain copy
apt-get install unzip
解压和后续操作
[plain] view plain copy
unzip -q latest.zip -d /var/www/html/
cd /var/www/html/wordpress
cp -a * ..
rm -r wordpress/
chown www-data:www-data -R /var/www/html/
创建上传目录:
[plain] view plain copy
mkdir -p /var/www/html/wp-content/uploads
chown www-data:www-data -R /var/www/html/wp-content/uploads
mysql相关操作
创建mysql账户
[plain] view plain copy
mysql -u root -p
[sql] view plain copy
CREATE DATABASE wordpress character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES on wordpress.* to 'wpuser'@'localhost' identified by 'your_password';
FLUSH PRIVILEGES;
exit
编辑配置文件
[plain] view plain copy
cd /var/www/html
mv wp-config-sample.php wp-config.php
vim wp-config.php
[plain] view plain copy
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress'); /** MySQL database username */
define('DB_USER', 'wpuser'); /** MySQL database password */
define('DB_PASSWORD', 'your_password'); /** MySQL hostname */
define('DB_HOST', 'localhost');
设置固定链接:
如果是设置了虚拟主机的话这部分可能和下面的操作不一样我也不太清楚可以去google搜一下
[plain] view plain copy
vim /etc/apache2/sites-available/000-default.conf
[plain] view plain copy
[...]
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName server1.example.com
\<Directory /var/www/html/\>
AllowOverride All
\</Directory\>
[...]
就是在里面添加上ServerName到\</Directory\>这一段
允许URL的重写以及Apache2的重启
[plain] view plain copy
a2enmod rewrite
service apache2 restart
创建.htaccess文件
[plain] view plain copy
touch /var/www/html/.htaccess
chown :www-data /var/www/html/.htaccess
chmod 664 /var/www/html/.htaccess
添加wordpress安全保护其实我也不太懂具体作用
访问 https://api.wordpress.org/secret-key/1.1/salt/
然后打开wp-config.php
[plain] view plain copy
vim /var/www/html/wp-config.php
[plain] view plain copy
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
将其对应填入。

View File

@@ -0,0 +1,28 @@
==关于====mysql====的用户管理,笔记==
 
==1====、创建新用户==
==通过====root====用户登录之后创建==
==\>\>== ==grant all privileges on *.* to== ==testuser====@localhost identified by== =="123456"== ==;==  ==//==  ==创建新用户,用户名为====testuser====,密码为====123456== ====
==\>\>== ==grant all privileges on *.* to== ==testuser====@localhost identified by== =="123456"== ==;==  ==//==  ==设置用户====testuser====,可以在本地访问====mysql==
==\>\>== ==grant all privileges on *.* to== ==testuser====@"%" identified by== =="123456"== ==;==   ==//==  ==设置用户====testuser====,可以在远程访问====mysql==
==\>\>== ==flush privileges== ==;==  ==//==  ==mysql== ==新设置用户或更改密码后需用====flush privileges====刷新====MySQL====的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动====mysql====服务器,来使新设置生效==
==2====、设置用户访问数据库权限==
==\>\>== ==grant all privileges on== ==test_db.*== ==to== ==testuser@localhost identified by "123456" ;==  ==//==  ==设置用户====testuser====,只能访问数据库====test_db====,其他数据库均不能访问== ====
==\>\>== ==grant all privileges on== ==*.*== ==to== ==testuser@localhost identified by "123456" ;==  ==//==  ==设置用户====testuser====,可以访问====mysql====上的所有数据库== ====
==\>\>== ==grant all privileges on== ==test_db.user_infor== ==to== ==testuser@localhost identified by "123456" ;==  ==//==  ==设置用户====testuser====,只能访问数据库====test_db====的表====user_infor====,数据库中的其他表均不能访问== ====
==3====、设置用户操作权限==
==\>\>== ==grant== ==all privileges== ==on *.* to== ==testuser@localhost identified by "123456" WITH GRANT OPTION== ==;==  ==//====设置用户====testuser====,拥有所有的操作权限,也就是管理员== ====
==\>\> grant== ==select== ==on *.* to== ==testuser@localhost identified by "123456" WITH GRANT OPTION== ==;==  ==//====设置用户====testuser====,只拥有【查询】操作权限== ====
==\>\>== ==grant== ==select,insert== ==on *.* to== ==testuser@localhost identified by "123456"==  ==;==  ==//====设置用户====testuser====,只拥有【查询====\====插入】操作权限== ====
==\>\>== ==grant== ==select,insert,update,delete== ==on *.* to== ==testuser@localhost identified by "123456"==  ==;==  ==//====设置用户====testuser====,只拥有【查询====\====插入】操作权限== ====
==\>\>== ==REVOKE== ==select,insert== ==ON what FROM== ==testuser====//====取消用户====testuser====的【查询====\====插入】操作权限== ====
==4====、设置用户远程访问权限==
==\>\>== ==grant all privileges on *.* to== ==testuser@====“192.168.1.100”== ==identified by== =="123456"== ==;==  ==//====设置用户====testuser====,只能在客户端====IP====为====192.168.1.100====上才能远程访问====mysql== ====
==5====、关于====root====用户的访问设置==
==设置所有用户可以远程访问====mysql========修改====my.cnf====配置文件,将====bind-address = 127.0.0.1====前面加====“#”====注释掉====,这样就可以允许其他机器远程访问本机====mysql====了;==
==\>\>== ==grant all privileges on *.* to== ==root@"%" identified by== =="123456"== ==;==   ==//==  ==设置用户====root====,可以在远程访问====mysql==
==\>\>== ==select host,user from user;==   ==//====查询====mysql====中所有用户权限==
==关闭====root====用户远程访问权限==
==\>\>== ==delete from user where user="root" and host="%" ;==  ==//====禁止====root====用户在远程机器上访问====mysql==
==\>\>== ==flush privileges== ==;==  ==//====修改权限之后,刷新====MySQL====的系统权限相关表方可生效==
\> 来自 \<[https://www.cnblogs.com/candle806/p/4048651.html](https://www.cnblogs.com/candle806/p/4048651.html)\>

View File

@@ -0,0 +1,14 @@
远程连接密码 148880
120.78.214.77(公)
\>
Mysql root 1q2w3e4r
phpmyadmin 1q2w3e4r
Wordpress admin chill wuzhuoshan@163.com 1q2w3e4r
[ftp://cocomap.cn](ftp://cocomap.cn) chill 1q2w3e4r
网站统计——百度 ,双十二事变
[https://tongji.baidu.com/web/11004934/overview/index](https://tongji.baidu.com/web/11004934/overview/index)