广告

本站里的文章大部分经过自行整理与测试

2017年9月19日星期二

自动生成 configure 和 Makefile

1) 编写 helloworld.c

#include <stdio.h>
    
int main(int argc, char** argv)
{
      printf("Hello, Linux World! ");
      return 0;
}

2) 生成 configure.scan, 改名为 configure.ac

2.1) 扫描源代码目录, 生成 configure.scan
$ autoscan

2.2) 改名为 configure.ac
$ mv configure.scan configure.ac

2.3) 编辑 configure.ac
$ vi configure.ac

AC_INIT(helloworld.c)

AM_INIT_AUTOMAKE(helloworld, 1.0)

AC_PROG_CC

AC_OUTPUT(Makefile)

3) 生成 aclocal.m4 和 configure

3.1) 生成 aclocal.m4
$ aclocal

3.2) 生成 configure
$ autoconf 

4) 编写 Makefile.am

$ vi Makefile.am

AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=helloworld
helloworld_SOURCES=helloworld.c

5) 生成 Makefile

$ automake --add-missing

6) 测试

$ ./configure
$ make
$ ./helloworld

2017年9月17日星期日

Git - 免户口与密码重复输入

1) 产生公钥 (id_rsa.pub) 与私钥 (id_rsa), 放到 .ssh

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "钥匙名字"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/UID/.ssh/id_rsa): id_rsa 文件名
Enter passphrase (empty for no passphrase): 设置密码
Enter same passphrase again: 重复以上密码

2) 将公钥放去 github

登录 https://github.com/settings/ssh
添加 ~/.ssh/id_rsa.pub 公钥内容

3) 测试

$ git clone git@github.com:户口名/仓库名.git

* 第一次用 ssh 连接 github.com 会要求输入以上设置的密码.

4) 其它

之前已经 clone 的, 可修改 remote url
$ git remote set-url origin git@github.com:户口名/仓库名.git

2017年9月10日星期日

Git - branch / tag

1) 分支管理 (branch)

$ git branch                         查看分支
$ git branch <name>           创建分支
$ git checkout <name>        切换分支

$ git checkout -b <name>    创建 + 切换分支
$ git merge <name>            合拼分支
$ git branch -d <name>  删除分支

2) 操作修改和版本穿梭

$ git log

$ git reset HEAD 暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响
$ git reset --hard <revision> 重置至某一版本 (强制,暂存区和工作区均重置)
$ git reset --hard HEAD^, 则回滚为上一版本
$ git reflog 显示操作的日志
$ git rm --cached <file> 会直接从暂存区删除文件,工作区则不做出改变
$ git checkout -- <file1> <file2> 会将文件在工作区的修改撤销

$ git checkout HEAD . 或者 git checkout HEAD <file
会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。
这个命令是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动

3) 标签管理 (tag)

$ git tag                 查看标签 
$ git tag <name> <commit_id>     创建标签, 若无commit id 默认当前
$ git tag -a <name> -m <msg>         创建标签, 且添加标签信息
$ git tag -s <name> -m <msg>         创建签名标签,且添加标签信息
$ git tag -d <name> -m <msg>         删除标签
$ git show <name>                         查看标签具体信息

$ git push origin <name>                  推送某个标签至远程
$ git push origin --tags                    推送所有标签至远程

2017年9月9日星期六

Git 历史记录清除

清除所有文件的历史记录
以下已试过了..

$ git checkout --orphan latest_branch
$ git add -A
$ git commit -am "Clear History Rec"
$ git branch -D master
$ git branch -m master

$ git push -f origin master

2017年9月8日星期五

CentOS GNOME - Vino Server 启动

在 CentOS / Fedora, 如果选择安装的是 Gnome,
会预设安装了 Vino Server, 其实根本不需要安装 tigervnc-server

1) 设置 (主要是改 require-encryption 为 false)

https://raw.githubusercontent.com/yomun/store/master/sh/vino.sh

$ su
$ dbus-launch gsettings set org.gnome.Vino require-encryption false
$ dbus-launch gsettings set org.gnome.Vino notify-on-connect false
$ dbus-launch gsettings set org.gnome.Vino prompt-enabled false

* 也可以用 dconf editor 找 remote-access

2) 查看以上设置

$ gsettings get org.gnome.Vino require-encryption
$ gsettings get org.gnome.Vino notify-on-connect
$ gsettings get org.gnome.Vino prompt-enabled

3) 运行 Vino Server

$ pkill vino-server
$ export DISPLAY=:0.0
$ /usr/libexec/vino-server &

4) 防火壁 (打开端口 5900)

$ su
$ firewall-cmd --get-active-zones

$ firewall-cmd --add-port=5900/tcp --permanent --zone=public 

$ firewall-cmd --add-service=vnc-server --permanent --zone=public

$ firewall-cmd --reload
$ firewall-cmd --list-all --zone=public


5) 可用 Remmina 连接 VNC

Port: 5900 (预设)
User name: 要登入的户口
Password: 户口所设置的密码

6) 其它
$ gedit /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

2017年9月6日星期三

Git 开发基本应用

1) 先在 https://github.com 用自己的户口名 user, 创建一个软件库 gittest
软件库网址 https://github.com/user/gittest

2) 下载 gittest
$ git clone https://github.com/user/gittest

3) 在 gittest 里增加 / 修改文件
$ cd gittest
$ echo "# gittest" >> text.txt

4) git status 会告知你可以上传的文件

5) 新的文件 / 更改文件上传到分支 (master 是你的软件库主分支)

$ git add text.txt text2.txt
$ git commit -m "<message>"
$ git push origin master

6) 撤除文件, 然后也同步到分支去
$ rm text.txt

$ git rm text.txt
$ git commit -m "<message>"
$ git push origin master

7) 如果要更新本地软件库 (如果分支已更新, 本地的也可以更新)
$ git pull origin master

8) 其它
# 在本地初始化文件夹 (会在文件夹中里产生 .git)
$ git init

# 更换或增加外部网址
$ git remote -v
$ git remote add origin <url>
$ git remote set-url origin <url>

2017年9月4日星期一

Linux - 文件监控

1) 安装
$ sudo apt install auditd

auditd 是后台守护进程, 负责监控记录
auditctl 配置规则的工具
auditsearch 搜索查看
aureport 根据监控记录生成报表

2) 监控 ( 根据自己所设置的 authorized_keys )
$ sudo auditctl -w /root/.ssh/authorized_keys -p awr -k auth_key

-w 指明要监控的文件
-p awrx 要监控的操作类型, append(a), write(w), read(r), execute(x)
-k 给当前这条监控规则起个名字, 方便搜索过滤

3) 查看修改纪录
$ sudo ausearch -i -k auth_key

4) 生成报表
$ sudo aureport .

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sec-Creating_Audit_Reports.html

5) 查看
$ sudo cat /var/log/audit/audit.log

Linux - Maldetect - Malware 检测

https://www.rfxn.com/projects/linux-malware-detect/

1) 下载/解压/安装

$ wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
$ tar -zxvf maldetect-current.tar.gz
$ cd maldetect-x.y.z
$ sudo ./install.sh

2) 扫描

$ sudo maldet --scan-all /var/www/

3) 看报告

$ sudo maldet --report 021015-1051.3559

4) 扫描到有恶意软件的文件置放处

$ cd /usr/local/maldetect/quarantine
$ ls

5) 撤除

$ sudo maldet --clean 021015-1051.3559

6) 设置文件

$ sudo gedit /usr/local/maldetect/conf.maldet