Linux时区和NTP服务配置

首先设置时区:
将对应时区文件拷贝一个副本为/etc/localtime

Continue reading

Posted in Linux.

RHEL6 Server Security Hardening

# For RHEL 6/OEL 6/CentOS 6.

1. disabling services

2. ntp client

3. global env varaiables

4. use PAM

5. password policy

6. create user without creating home

7. /etc/ssh/sshd_config

8. lock accounts
需要锁定的账号:adm、lp、sync、shutdown、halt、mail、news、uucp、operator、games、gopher、ftp、mailnull、
nfsnobody、nobody、pegasus、http
参考配置
(1)删除用户:#userdel username;
(2)锁定用户:#passwd -l username
(3)解锁用户:#passwd -u username
(4)禁止用户交互登录:修改/etc/passwd文件,用户shell修改为/sbin/nologin
补充说明

9. banner

10. disable Control-Alt-Delete
修改/etc/init/control-alt-delete.conf文件,注释如下内容:

11. syslog

Posted in Linux.

Scala类的方法命名约定

对于一般的方法,则调用的目标是运算符前面的实例

这里相当于调用了s.^(T(“HELLO WORLD”) )
如果方法以冒号:结尾,那么调用目标的是运算符后面的实例。

另外,一元运算符+ – ! ~也是以其后的实例为目标的,会映射成unary_+()等方法。

Posted in Java|Scala.

使用ZModem Protocol(rzsz)在Windows-Linux之间传输文件

Zmodem协议是一个稳定的和快速的数据传输协议。它使用32位循环冗余校验(CRC)来确保数据流(streaming)的无差错数据传输。ZModem协议是XModem的增强版,不仅能传输更大的数据,而且错误率更小。包含一种名为检查点重启的特性,如果通信链接在数据传输过程中中断,能从断点处而不是从开始处恢复传输,是目前很流行的文件传输协议。
Linux中,RZSZ包提供了实现的Zmodem协议的主要工具。其他相关协议,如Xmodem协议和YMODEM,也由属于RZSZ包的一部分命令的支持。 Windows端需要支持ZModem协议的telnet/ssh客户端工具—SecureCRT。使用SecureCRT登陆到Unix/Linux主机(telnet或ssh),直接执行sz/rz命令就直接(批量)接收/发
送文件,而不需要后台服务来监听端口的支持。

rz/sz有几个常用的参数:
-e escape 转义所有控制字符,XON, XOFF, DLE, CR-@-CR,和 Ctrl-X等
-b binary 用binary的方式上传下载
-a --ascii 用ascii的方式上传下载
-+, --append 将追加到一个文件的结尾
-p, --protect (ZMODEM) 如果目标文件存在,则跳过.
-q, --quiet 不输出详细信息.
-a causes the receiver to convert Unix newlines to PC-DOS carriage returns and linefeeds.

1. 使用secureCRT+rz批量上传文件

登录到目标主机,打开需要上传文件的目录,直接输入rz。这时需要选择文件,可以一次性add多个文件:
1

2. 使用secureCRT+sz批量下载文件

同样的,sz后面可以加多个文件名作为参数,下面以-b(binary)方式传输二进制文件。

传输到secureCRT端的Download目录中(这个目录的Options – Session Options – XModem/YModem/ZModem中设置)
2
另外,sz可以和find -exec组合使用,可以做到批量下载文件的操作。

^^
参考:
man sz
wikimedia

Posted in Ops, Tools.

【APUE】UNIX下的文件操作

1. 内核文件数据结构

内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程的影响。
(1). 每个进程在进程表中都一个记录项(task_struct),包含一个打开文件描述符表(存放在用户空间)。每个文件描述符为表中一项,包括文件描述符标识和指向一个文件表项的指针。
(2). 内核为所有打开文件维持一张文件表,每个文件表项包括:
a). 文件状态标识(RD, WR, APPEND, 同步和非阻塞等)。注意,文件描述符作用域是一个进程,而文件状态标识则适用于指向文件表中该表项的所有进程的描述符。使用fcntl函数来修改这两个结构。下面第3节将会解释。
b). 当前文件偏移量
c). 指向该文件v节点表项的指针。
(3). 每个打开文件或设备都有一个v-node结构,包含文件类型和对此文件进行各种操作的函数的指针。对于大多数文件,v-node还包含了该文件的i-node节点(i-node包含文件所有者、长度、所在设备、指向文件数据库在磁盘上位置的指针等)。这些信息是打开文件时从磁盘读入内存的,所以所有关于文件的信息都是快速可以使用的。
Linux没有使用v-node,而是使用了通用的i-node节点结构。虽然两者实现有所不同,但在概念上,v-node和i-node是一样的,都指向文件系统相关的i-node结构。
Continue reading

Posted in C|C++, Linux.

Linux查看文件系统信息的命令

1. stat命令

display file or file system status
[OPTIONS]
-L, –dereference: follow links
-f, –file-system: display file system status instead of file status
for example:

Continue reading

Posted in Linux.

UNIX文件信息

1. stat, fstat和lstat

stat, fstst, lstat – get file status

stat() stats the file pointed to by path and fills in buf. lstat() is identical to stat(), except that if path is a sym‐bolic link, then the link itself is stat-ed, not the file that is refers to.
fstat() is identical to stat(), except that the file to be stated is specified by the file descriptor fd.
Continue reading

Posted in C|C++, Linux.

UNIX进程环境和动态链接

1. 环境表

每个程序都会从父进程那里接收一张环境表。和参数包一样,环境表也是一个字符指针数组,其中每个指针包含你一个null结束的C字符串地址。全局变量environ则包含该指针数组地址,称为环境指针。环境指针指向环境表,保存每个环境字符串的地址。每个环境字符串都是name=value的形式。可以用getenv和putenv来访问特定的环境标量。
extern char **environ;
环境指针—–> 环境表:
environ—–> 环境字符串地址—–> HOME=/home/luffy
环境字符串地址—–> PATH=:/bin:/usr/bin
环境字符串地址—–> SHELL=/bin/bash
环境字符串地址—–> USER=luffy
环境字符串地址—–> LOGNAME=luffy
Continue reading

Posted in C|C++, Linux.

UNIX进程控制

1. 交换进程与init进程
进程ID0是调度进程,常常被称为交换进程(swapper)。该进程并不执行任何磁盘上的程序。它是内核的一部分,因此也被称为系统进程。
进程ID1通常是init进程,在自举过程结束时由内核调用(swapper进程创建一个内核线程,然后exec来执行init)。该进程的程序文件/sbin/init。此进程负责在内核自举后启动一个UNIX系统。init通常读与系统有关的初始化文件(/etc/rc*),并将系统引导到一个状态(例如多用户)。虽然init是一个普通的用户进程(swapper进程是内核的系统进程而非用户进程),但init进程决不会终止。但是它以超级用户特权运行。
在某些UNIX的虚存实现中,进程PID=2是页精灵进程(page daemon)。此进程负责支持虚存系统的请页操作。与交换进程一样,页精灵进程也是内核进程。
Continue reading

Posted in C|C++, Linux.

几个字符串问题的awk解法

1.输入:一个文本文件,第一行是一个数字n,其他每行分别是一个单词以及它出现的百分比。
输出:输出n个单词,每个单词出现的几率符合它的百分比。

awk ‘BEGIN{sum=0;}1{n=$0}2,${up=sum+$1;while(sum< $1){arr[sum]+=$2;sum++;}if(i>100){exit 1;}}END{while(–n>0){print arr[rand()%100];}’
Continue reading

Posted in Linux.