分类 安全运维 下的文章

今天想再mac下安装py3和scrapy,想了想不折腾本机了,直接虚拟机就行了,然后安装了vbox,centos6.8,装机时选择的是桌面最小化安装,在随后使用yum的过程中出现了fastestmirror不能使用的情况,简单查了下,是yum的加速插件出了问题,我就直接禁用他了。(操作前请备份)

loaded plugins:fastestmirror ,fefresh-packagekit,security
you need to be root to perform this command.

QQ20190331-133220@2x.png

[bash]
su
vi  /etc/yum/pluginconf.d/fastestmirror.conf  
[/bash]
enabled=0//改为1
[bash]
vi /etc/yum.conf
[/bash]
plugins=1    //改为0

QQ20190331-133229@2x.png

可以看到,yum可以正常使用了。

docker 常见命令
更细的配置请参考官方文档
第一大部分 容器生命周期管理
01 .docker run :创建一个新的容器并运行一个命令

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;

Notice 其他一类常见参数,(具体的情况请查看文档) 
1.--rm 参数 : 如果程序执行完毕后,自动删除容器。注意它与-d参数是不兼容的
2.-p 参数:绑定端口
3.-restart参数:重启参数
4.-v参数:挂载数据卷
5.等等
02 .Docker start/stop/restart 命令

$ docker start [OPTIONS] CONTAINER [CONTAINER...]
$ docker stop [OPTIONS] CONTAINER [CONTAINER...]
$ docker restart [OPTIONS] CONTAINER [CONTAINER...]

03 .docker kill:杀掉一个运行中的容器。

$ docker kill [OPTIONS] CONTAINER [CONTAINER...]
-s :向容器发送一个信号

eg:

runoob@runoob:~$ docker kill -s KILL mynginx

04 .docker rm:删除一个或多少容器

$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷

05 .Docker pause/unpause命令(不常用)

$ docker pause [OPTIONS] CONTAINER [CONTAINER…].               
$ docker unpause [OPTIONS] CONTAINER [CONTAINER...]
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。

06.docker create:创建一个新的容器但不启动它

$ docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

语法同 docker run

  1. docker exec :在运行的容器中执行命令

    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    -d :分离模式: 在后台运行
    -i :即使没有附加也保持STDIN 打开
    -t :分配一个伪终端

第二大部分 容器操作
01.docker ps: 列出容器

$ docker ps [OPTIONS]
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
    

Notice:
可以看到加对应的-q 可以只输出容器的编号,这样 我们就可以进行组合命令了

$ docker rm docker ps -aq 删除所有的容器

(因为linux可以进行命令嵌套,是的命令更加灵活)
02 .docker inspect: 获取容器/镜像的元数据。

$ docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
    

03 .docker top:查看容器中运行的进程信息,支持 ps 命令参数。

docker top [OPTIONS] CONTAINER [ps OPTIONS]

04 .docker attach:连接到正在运行中的容器。
docker attach [OPTIONS] CONTAINER

--sig-proxy=false :attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器

05 .docker events: 从服务器获取实时事件(少用)

docker events [OPTIONS]
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;
  1. docker logs: 获取容器的日志

    docker logs [OPTIONS] CONTAINER
    -f : 跟踪日志输出
    --since :显示某个开始时间的所有日志
    -t : 显示时间戳
    --tail :仅列出最新N条容器日志

  2. docker wait : 阻塞运行直到容器停止,然后打印出它的退出代码。(少用)

    docker wait [OPTIONS] CONTAINER [CONTAINER...]

08 .docker export:将文件系统作为一个tar归档文件导出到STDOUT。(少用)

docker export [OPTIONS] CONTAINER
-o :将输入内容写到文件。

第三大部分 容器rootfs命令(不常用)
01 .docker commit:从容器创建一个新的镜像。(少用)

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

02.docker cp:用于容器与主机之间的数据拷贝。(少用)

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
-L :保持源目标中的链接

03.docker diff : 检查容器里文件结构的更改。(少用)

docker diff [OPTIONS] CONTAINER

第三大部分 镜像仓库
请参考阿里hub的指引
01.Docker login/logout 命令(参考阿里hub)
02.Docker pull 命令

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启

03.docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push [OPTIONS] NAME[:TAG]
--disable-content-trust :忽略镜像的校验,默认开启

04.docker search : 从Docker Hub查找镜像

docker search [OPTIONS] TERM
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。

第四大部分 本地镜像管理
01.docker images: 列出本地镜像。

docker images [OPTIONS] [REPOSITORY[:TAG]]
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。

02.docker rmi: 删除本地一个或多少镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
  1. docker tag : 标记本地镜像,将其归入某一仓库。

    docker tag [OPTIONS] IMAGE[:TAG] REGISTRYHOST/NAME[:TAG]

  2. docker build: 使用Dockerfile创建镜像。

    docker build [OPTIONS] PATH | URL | -
    --build-arg=[] :设置镜像创建时的变量;
    --cpu-shares :设置 cpu 使用权重;
    --cpu-period :限制 CPU CFS周期;
    --cpu-quota :限制 CPU CFS配额;
    --cpuset-cpus :指定使用的CPU id;
    --cpuset-mems :指定使用的内存 id;
    --disable-content-trust :忽略校验,默认开启;
    -f :指定要使用的Dockerfile路径;
    --force-rm :设置镜像过程中删除中间容器;
    --isolation :使用容器隔离技术;
    --label=[] :设置镜像使用的元数据;
    -m :设置内存最大值;
    --memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
    --no-cache :创建镜像的过程不使用缓存;
    --pull :尝试去更新镜像的新版本;
    -q :安静模式,成功后只输出镜像ID;
    --rm :设置镜像成功后删除中间容器;
    --shm-size :设置/dev/shm的大小,默认值是64M;
    --ulimit :Ulimit配置。

05.docker history: 查看指定镜像的创建历史。

docker history [OPTIONS] IMAGE
-H :以可读的格式打印镜像大小和日期,默认为true;
--no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。

06.docker save: 将指定镜像保存成 tar 归档文件。

docker save [OPTIONS] IMAGE [IMAGE...]
-o :输出到的文件。

07.docker import: 从归档文件中创建镜像。

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
-c :应用docker 指令创建镜像;
-m :提交时的说明文字;

不使用useradd添加用户
Linux中不止通过useradd添加用户,在万物皆为文件的系统中,可以通过添加字段的方式来添加用户。
需要修改的文件list:
o/etc/passwd #用来添加用户信息,声明是否可以登录,用户id:用户组id:用户声明,家目录位置,是否可登录。
图片1.png
o/etc/shadow #账号名称,!!是无密码用户密码,最近更新密码日期
图片2.png
o/etc/group #组名:口令:组标识号:组内用户列表|root:x:0:root,linuxsir
图片3.png
o/etc/gshadow #同上
暂时组密码不需要修改
o/var/spool/mail/xxx 邮件文件
o还有家目录下的一对隐藏文件
图片4.png

Linux VPN 客户端
以下步骤是基于 Peter Sanford 的工作。这些命令必须在你的 VPN 客户端上使用 root 账户运行。
要配置 VPN 客户端,首先安装以下软件包:

# Ubuntu & Debian
apt-get update
apt-get -y install strongswan xl2tpd

# CentOS & RHEL
yum -y install epel-release
yum --enablerepo=epel -y install strongswan xl2tpd

# Fedora
yum -y install strongswan xl2tpd

创建 VPN 变量 (替换为你自己的值):

VPN_SERVER_IP='你的VPN服务器IP'
VPN_IPSEC_PSK='你的IPsec预共享密钥'
VPN_USER='你的VPN用户名'
VPN_PASSWORD='你的VPN密码'

配置 strongSwan:

cat > /etc/ipsec.conf <<EOF
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
  # strictcrlpolicy=yes
  # uniqueids = no

# Add connections here.

# Sample VPN connections

conn %default
  ikelifetime=60m
  keylife=20m
  rekeymargin=3m
  keyingtries=1
  keyexchange=ikev1
  authby=secret
  ike=aes128-sha1-modp1024,3des-sha1-modp1024!
  esp=aes128-sha1-modp1024,3des-sha1-modp1024!

conn myvpn
  keyexchange=ikev1
  left=%defaultroute
  auto=add
  authby=secret
  type=transport
  leftprotoport=17/1701
  rightprotoport=17/1701
  right=$VPN_SERVER_IP
EOF

cat > /etc/ipsec.secrets <<EOF
: PSK "$VPN_IPSEC_PSK"
EOF

chmod 600 /etc/ipsec.secrets

# For CentOS/RHEL & Fedora ONLY
mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets

配置 xl2tpd:

cat > /etc/xl2tpd/xl2tpd.conf <<EOF
[lac myvpn]
lns = $VPN_SERVER_IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
EOF

cat > /etc/ppp/options.l2tpd.client <<EOF
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
defaultroute
usepeerdns
connect-delay 5000
name $VPN_USER
password $VPN_PASSWORD
EOF

chmod 600 /etc/ppp/options.l2tpd.client

至此 VPN 客户端配置已完成。按照下面的步骤进行连接。
注: 当你每次尝试连接到 VPN 时,必须重复下面的所有步骤。
创建 xl2tpd 控制文件:

mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control

重启服务:

service strongswan restart
service xl2tpd restart

开始 IPsec 连接:

# Ubuntu & Debian
ipsec up myvpn

# CentOS/RHEL & Fedora
strongswan up myvpn

开始 L2TP 连接:

echo "c myvpn" > /var/run/xl2tpd/l2tp-control

运行 ifconfig 并且检查输出。现在你应该看到一个新的网络接口 ppp0。
检查你现有的默认路由:

ip route

在输出中查找以下行: default via X.X.X.X ...。记下这个网关 IP,并且在下面的两个命令中使用。
从新的默认路由中排除你的 VPN 服务器 IP (替换为你自己的值):

route add 你的VPN服务器IP gw X.X.X.X

如果你的 VPN 客户端是一个远程服务器,则必须从新的默认路由中排除你的本地电脑的公有 IP,以避免 SSH 会话被断开 (替换为实际值):

route add 你的本地电脑的公有IP gw X.X.X.X

添加一个新的默认路由,并且开始通过 VPN 服务器发送数据:

route add default dev ppp0

至此 VPN 连接已成功完成。检查 VPN 是否正常工作:

wget -qO- http://ipv4.icanhazip.com; echo

以上命令应该返回 你的 VPN 服务器 IP。
要停止通过 VPN 服务器发送数据:
route del default dev ppp0
要断开连接:

# Ubuntu & Debian
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
ipsec down myvpn

# CentOS/RHEL & Fedora
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
strongswan down myvpn

最近感觉需要一个私有云,安装centos7的时候看到他貌似自带owncloud,就想试试这个开源的私有云如何。
官网:https://owncloud.org/
以下是安装过程:

[bash] 
sudo yum -y install php httpd php-mysql php-xml php-gd gcc-c++ mysql-server mysql-devel php-mbstring glibc-static flex git fresh 
sudo service mysqld start 
sudo mysqladmin -u root password root 
cd /var/www/html/ 
wget https://download.owncloud.org/community/owncloud-10.0.2.zip  //也可以本机下载后xftp上传 
unzip owncloud-10.0.2.zip 
[/bash]

解压后访问ip/owncloud/
发现提醒我使用64位操作系统,这个提醒意思是使用32位可能无法上传4g以上文件。
图片5.png
这里需要注意一下数据库需要加端口
图片6.png
安装后提醒没有创建或者写权限
Can't create or write into the data directory

图片7.png
这里我手动创建一个data目录

[bash]
mkdir -p ./owncloud/data
chown -R www:www ./owncloud
chmod -R 777 ./owncloud
chmod -R 770 ./owncloud/data
[/bash]

图片8.png
图片9.png
这里我用的是nginx,所以用户是www
Apache使用的是www-data

至此安装成功,owncloud不止centos有客户端,他跨很多平台都有app
安卓的不太好找,而且还收费,我发出一个apk安装包,最新版编译的。

还有owncloud源码10.2/pc端,如果觉得服务器clone太慢了本机下载后上传解压.
如果链接失效,请提醒我.
链接:http://pan.baidu.com/s/1nv4vEUt 密码:pvqs