Monthly Archives: October 2013

Linux I/O Redirection

第一种方式最常见,就是直接的重定向
ls > lsout.txt 或者ls 1>lsout.txt
如果知道lsout.txt的fd值比如fd=5, ls >&5和ls 1>&5是一样的效果
需要注意的是重定向的顺序,比如我们想把stdout和stderr都重定向到/dev/null,我们必须
ls >/dev/null 2>&1
如果我们写成
ls 2&>1 >/dev/null
那么只有stdout会被重定向到/dev/null,stderr仍然重定向到console屏幕输出
或者简单的写做ls &>/dev/null, 这种写法是从bash 4后支持,同时重定向stdout和stderr到/dev/null
整个程序保持silient,一般用于某种cron的服务,它有自己的log文件去记录执行过程。

第二种方式用exec命令,exec命令就算是生个一个数字的文件描述符并把它与某个要用的文件关联起来。
exec >out.txt 或者exec 1>out.txt
当用这种方式的时候,一般完成任务后要回复默认,所以常见的脚本是下面这样子,
exec 5>&1 // 用fd=5的文件保存原来stdout的fd
exec >out.txt
ls -al
exec 1>&5 5>&- //恢复stdout,然后释放临时的fd

Kerberos协议

  1. 用户发一个 请求到Kerberos Domain Controller,windows的Domain Controller是支持Kerberos协议的, 一般是username@domain.com

  2. KDC收到后,产生一个ticket,这个ticket已经被加密了,只有KDC知道怎么解密

  3. 然后KDC再把这个ticket用用户的密码去加密

  4. KDC把加过密的ticket发还给client

  5. client用输入的密码尝试去解密加过密的ticket,如果密码是对的,就会得到一个有效的ticket

  6. 以后每一次,这个被解密以后的ticket都会被发到KDC去验证,只有KDC知道如何去解释这个ticket,因为这个ticket本身在第2步已经被加密了