what is the difference getContentMd5() and getETag() of aws s3 PutObjectResult

An MD5 hash consists of 16 bytes, but they are not all printable characters. The ETag is the md5 hash, hex-encoded (not base64, as the question suggests) — hex encoding uses 32 characters to encode 16 bytes. Meanwhile, Content-MD5 is the md5 hash, base64 encoded, which uses 24 characters to encode 16 bytes. 答案来源-stackoverflow

Published
Categorized as storage

Security-Enhanced Linux (SELinux)

Linux Security Mode Linux系统先做DAC检查.如果没有通过DAC权限检查,则操作直接失败.通过DAC检查之后,再做MAC权限检查. DAC SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制. 核心思想: 进程理论上所拥有的权限与执行它的用户的权限相同.比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情. MAC SELinux在DAC之外,设计了一个新的安全模型,叫MAC(Mandatory Access Control),翻译为强制访问控制. 核心思想: 任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限.凡是没有出现在安全策略配置文件中的权限,进程就没有该权限. Security-Enhanced Linux (SELinux) SELinux则是由美国NSA(国安局)和一些公司(RedHat、Tresys)设计的一个针对Linux的安全加强系统. 所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别. 简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权. SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制.由以下两部分组成: 1. Kernel SELinux模块(/kernel/security/selinux) 2. 用户态工具

Published
Categorized as linux

交换机在网络中到的作用

来自知乎的答案整理 报文 数据经IP协议封装后称为报文,经MAC层封装后叫做以太网帧。通常不做严格区分,都叫报文。 主机通信 主机A向主机B发报文,知道B的IP地址,但不知道B的MAC地址。 主机A首先会发ARP报文, ARP报文最终在MAC层被封装成以太网帧,其源MAC地址是主机A自己,目的MAC地址是广播地址,就是向外广播询问,请求主机B回答。 交换机接收到主机A的包含ARP广播报文的Frame,会解析该Frame,发现目的MAC地址是广播地址,就是向自己的所有端口广播该Frame, 源MAC地址依然是主机A,目的MAC地址依然是广播地址。 同时如果源MAC地址,交换机之前没有学习过,就会添加到自己的MAC地址表中,也就是交换机学习到主机A的MAC地址。 经交换机广播后,ARP报文被主机B接收到, 主机B发现被请求的IP是自己,就会发一个回应报文,同样在MAC层被封装成以太网帧,源MAC地址是主机B,目的MAC地址是主机A, 告诉主机A你请求的IP就是我,这是一个单播报文。 交换机接收到主机B发送的回应报文后,解析到源MAC地址是主机B,从而添加到自己的MAC地址表中,学习到主机B。 目的地址是主机A,之前学习到了,就直接将报文转发到主机A对应的端口,源和目的MAC地址不变。 主机A接收到主机B的回应后,就知道主机B的MAC,添加到自己的ARP表中,下次再和B通信就不需要再发ARP报文了。 整个过程可以看出, 一是没有出现交换机的MAC地址, 二是报文的源MAC地址和目的MAC地址都不变。 交换机的网络端口对应一个MAC,但通常不需要MAC地址,因为转发不需要。 如果交换机有管理功能,通常有一个管理MAC地址,对应交换机的管理单元,例如CPU。 交换机解析到某个端口接收的报文的目的地址是自己,就会把报文发给自己的CPU或管理模块。 交换机解析到主机A发送的报文的目的MAC地址,是单播地址,但是自己的MAC地址表中没有,那交换机不知道向那个端口转发,就会向自己所有的端口转发该报文,源MAC地址和目的MAC地址都不变。这样交换机所有端口下的的设备都会收到该报文,设备是交换机会继续转发,这样可能引起广播风暴,引起网络崩溃,现在交换机都有广播风暴抑制功能。如果是主机,发现目的MAC不是自己,就会丢弃该报文。 最后,如果有主机发现目的MAC地址是自己,就会按报文要求处理,只要最后发报文到交换机,交换机就会学习到它的MAC地址。 如果最终,没有主机是目的MAC地址,那就是网络不通。

Published
Categorized as linux

创建intellij idea启动图标

centos上创建intellij idea启动图标 Pycharm # cat /usr/share/applications/pycharm.desktop [Desktop Entry] Name=Pycharm GenericName=Pycharm Comment=Pycharm2019:The Python IDE Exec=sh /wjhdata/pycharm-community-2019.1.3/bin/pycharm.sh Icon=/wjhdata/pycharm-community-2019.1.3/bin/pycharm.png Terminal=false Type=Application Categories=Utility;Application IntelliJ IDEA # cat /usr/share/applications/intellij.desktop [Desktop Entry] Name=IntelliJ IDEA Comment=IntelliJ IDEA Exec=sh /wjhdata/idea-IC-191.7479.19/bin/idea.sh Icon=/wjhdata/idea-IC-191.7479.19/bin/idea.png Terminal=false Type=Application Categories=Utility;Application

Published
Categorized as linux, tool

running vncserver on centos7

install yum install tigervnc-server xorg-x11-fonts-Type1 init 使vncserver运行在5905端口. /etc/systemd/system/vncserver@:5.service [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking #相应用户user的uid. XDG_RUNTIME_DIR=”/run/user/1002″ # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’ ExecStart=/usr/sbin/runuser -l <user> -c “/usr/bin/vncserver %i” PIDFile=/home/<user>/.vnc/%H%i.pid ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’ [Install]… Continue reading running vncserver on centos7

Published
Categorized as linux