FreeBSD-SA-10:09.pseudofs

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

=============================================================================
FreeBSD-SA-10:09.pseudofs                                   Security Advisory
The FreeBSD Project

Topic:          Spurious mutex unlock

Category:       core
Module:         pseudofs
Announced:      2010-11-10
Credits:        Przemyslaw Frasunek
Affects:        FreeBSD 7.x prior to 7.3-RELEASE, 8.x prior to 8.0-RC1
Corrected:      2009-09-05 13:10:54 UTC (RELENG_8, 8.0-RC1)
2009-09-05 13:31:16 UTC (RELENG_7, 7.2-STABLE)
2010-11-10 23:36:13 UTC (RELENG_7_1, 7.1-RELEASE-p15)
CVE Name:       CVE-2010-4210

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit <URL:http://security.FreeBSD.org/>.

I.   Background

pseudofs offers an abstract API for pseudo file systems which is utilized by
procfs(5) and linprocfs(5).  It provides generic file system services such
as ACLs, extended attributes which interface with VFS and which are otherwise
onerous to implement.  This enables pseudo file system authors to add this
functionality to their file systems with minimal effort.

II.  Problem Description

The pfs_getextattr(9) function, used by pseudofs for handling extended
attributes, attempts to unlock a mutex which was not previously locked.

III. Impact

On systems where a pseudofs-using filesystem is mounted and NULL page
mapping is allowed, an attacker can overwrite arbitrary memory locations
in the kernel with zero, and in certain cases execute arbitrary code in
the context of the kernel.

On systems which do not allow NULL page mapping, an attacker can cause the
FreeBSD kernel to panic.

IV.  Workaround

Exploiting this vulnerability requires that the adversary can open a file
on a file system which uses pseudofs.  This includes procfs(5) or
linprocfs(5).  Un-mounting these file systems will mitigate the risk
associated with this vulnerability.

Providing that the patch associated with the FreeBSD-EN-09:05.null errata
notice has been applied, setting the security.bsd.map_at_zero sysctl to 0
will prevent arbitrary code execution (but a kernel panic will still be
possible).

V.   Solution

Perform one of the following:

1) Upgrade your vulnerable system to 7-STABLE or 8-STABLE, or to the
RELENG_7_1 security branch dated after the correction date.

2) To update your vulnerable system via a source code patch:

The following patch has been verified to apply to FreeBSD 7.1 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

# fetch http://security.FreeBSD.org/patches/SA-10:09/pseudofs.patch
# fetch http://security.FreeBSD.org/patches/SA-10:09/pseudofs.patch.asc

b) Apply the patch.

# cd /usr/src
# patch < /path/to/patch

c) Recompile your kernel as described in
<URL:http://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
system.

3) To update your vulnerable system via a binary patch:

Systems running 7.1-RELEASE on the i386 or amd64 platforms can be updated
via the freebsd-update(8) utility:

# freebsd-update fetch
# freebsd-update install

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

CVS:

Branch                                                           Revision
Path
– ————————————————————————-
RELENG_7
src/sys/fs/pseudofs/pseudofs_vnops.c                           1.65.2.6
RELENG_7_1
src/UPDATING                                            1.507.2.13.2.17
src/sys/conf/newvers.sh                                   1.72.2.9.2.18
src/sys/fs/pseudofs/pseudofs_vnops.c                           1.65.6.2
RELENG_8
src/sys/fs/pseudofs/pseudofs_vnops.c                           1.79.2.2
– ————————————————————————-

Subversion:

Branch/path                                                      Revision
– ————————————————————————-
stable/7/                                                         r196860
releng/7.1/                                                       r205103
stable/8/                                                         r196859
– ————————————————————————-

VII. References

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4210

The latest revision of this advisory is available at
http://security.FreeBSD.org/advisories/FreeBSD-SA-10:09.pseudofs.asc
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.10 (FreeBSD)

iEYEARECAAYFAkzbLQ0ACgkQFdaIBMps37JDAgCeMM8ohrCVs0bfTOIMAnK4Hlxc
o90An3z5EH6uYuF7Bbt7BUIVQaPgxnhR
=+88k
—–END PGP SIGNATURE—–

原文链接:http://security.freebsd.org/advisories/FreeBSD-SA-10:09.pseudofs.asc

FreeBSD中的tar命令详解

FreeBSD中的tar命令详解

tar在FreeBSD下创建和解压tar.gz压缩包

创建 格式:tar czvf [文件名.tar.gz] [文件名]

例如:tar czvf test.tar.gz test (当前命令发生在需要打包文件所在目录)

解压 格式:tar zxvf [文件名.tar.gz]

例如:tar zxvf test.tar.gz (需要提前将压缩包传至当前释放目录下)

freebsd tar的详细用法

tar命令
tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。

tar 使用的选项有:
-c — 创建一个新归档。
-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项
一起使用时,则解除该选项指定的归档。
-t — 显示包括在 tar 文件中的文件列表。
-v — 显示文件的归档进度。
-x — 从归档中抽取文件。
-z — 使用 gzip 来压缩 tar 文件。
-j — 使用 bzip2 来压缩 tar 文件。

要创建一个 tar 文件,键入:
tar -cvf filename.tar directory/file

可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
tar -cvf filename.tar /home/mine/work /home/mine/school

上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。

要列出 tar 文件的内容,键入:
tar -tvf filename.tar

要抽取 tar 文件的内容,键入
tar -xvf filename.tar

这个命令不会删除 tar 文件,但是它会把被解除归档的内容复制到当前的工作目录下,并保留归档文件所使用的任何目录结构。譬如,如果这个 tar 文件中包含一个叫做bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,抽取归档文件将会导致在你当前的工作目录中创建foo/ 目录,该目录中包含 bar.txt 文件

tar 默认不压缩文件。
要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:
tar -cjvf filename.tbz file

以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压,filename.tbz 文件会被删除,继之以 filename.tar 文件。

你还可以用一个命令来扩展并解除归档 bzip tar 文件:
tar -xjvf filename.tbz

要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:
tar -czvf filename.tgz file

这个命令创建归档文件 filename.tar,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。

如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar。

你可以用单个命令来扩展 gzip tar 文件:

tar -xzvf filename.tgz

一. tar

1.压缩一组文件为tar.gz后缀。
# tar cvf backup.tar /etc
#gzip -q backup.tar

# tar cvfz backup.tar.gz /etc/
tar zxvf XXXX.tar.gz
tar jxvf XXXX tar.bz2

2.释放一个后缀为tar.gz的文件。
#gunzip backup.tar.gz
#tar xvf backup.tar

# tar xvfz backup.tar.gz

3.用一个命令完成压缩
#tar -cvf  /etc/ | gzip -qc > backup.tar.gz

4.用一个命令完成释放
# gunzip -c backup.tar.gz | tar -xvf

5.如何解开tar.Z的文件?
# tar xvfz backup.tar.Z

# uncompress backup.tar.Z
#tar xvf backup.tar

6.如何解开.tgz文件?
#gunzip backup.tgz

7.如何压缩和解压缩.bz2的包?
#bzip2 /etc/smb.conf
这将压缩文件smb.conf成smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
这将在当前目录下还原smb.conf.bz2为smb.conf
注: .bz2压缩格式不是很常用,你可以man bzip2

原文链接:http://www.lvtao.cn/computer-internet/freebsd/tar-command.html

Freebsd中监视系统性能状态的工具:systat

systat基本上是FreeBSD中最功能最多的系统监视命令,显示CPU、I/O、内存、虚拟内存、mbufs、磁盘IO、网络状态等信息等。
命令:
systat [-display] [refresh-interval]
其中 display 为我们所要显示的信息项目,我们也可以在进入 systat 后通过输入“:display”变更显示项目,refresh-interval 参数是需要多长时间采样一次系统数据输出到屏幕,单位是秒。
实例:# systat -vmstat 1
命令解释:显示CPU、I/O、内存、虚拟内存、mbufs、磁盘IO、网络状态等信息。信息采样刷新时间为1秒。
实例截图:

systat使用实例

以下为可用的 display 参数:
pigs 显示目前系统中使用 CPU 最多的行程名称。如果所有行程的 CPU 使用量未满 100%,则多出来的部份显示为 IDLE。
icmp 统计目前 ICMP 封包的进出情形。
icmp6 显示 IPv6 的 ICMP 封包进出情形。
ip 显示 IP 层的封包统计及 UDP 封包信息。
ip6 和 IP 一样,但只显示 IPv6 的封包。
tcp 显示 TCP 的封包统计。
iostat 显示 I/O 状况统计,并分类为各种模式显示。
swap 显示目前各个储存空间上的虚拟内存的使用情形。
mbufs 显示 mbufs 被使用的状态。
vmstat 这是我们最常用的显示模式,它显示了最多的信息,包含 I/O、虚拟内存、mbufs、网络等信息。
netstat 显示网络的使用情形。
ifstat 显示各个网络适配卡的使用情形。

原文链接:http://www.lvtao.cn/computer-internet/freebsd/freebsd-systat-command.html

FreeBSD中的top命令详解

FreeBSD中的top命令详解

top监控工具可以显示CPU占用率为前几位的进程,并提供CPU的实时活动情况。

语法:top [-s time] [-d count] [-q] [-h] [-n number] [-f filename] [-o field][-U usename]
-S 将系统进程信息也显示到屏幕上,默认情况下,top不显示系统进程的信息
-b 使用”batch”方式运行top。在此种方式下,所有来自终端的输入都将被忽略,但交互键(比如C and )
依然起使用。这是运行top输出到哑终端或输到非终端的默认运行方式
-i 使用交互运行top程序,在此种方式下,命令会被进程立即被处理。不管命令是不是能被top所理解执行,
屏幕都将立即更新。这是top的默认运行方式。
-I 不显示空闲进程,在默认情况下,top连同空闲进程的信息一同输出。
-t 不显示top进程自己
-n 不以交互方式使用top命令,作用同”batch”方式。
-s time 设置屏幕刷新的延时,单位为秒,默认值5秒
-d count 设置屏幕刷新的次数,刷新显示完count次后退出
-q 如果经过nice授权,使用-q可以使top运行的更快一些,这样,在系统反应缓慢的时候,可以会更快的找到存在的问题。
此选项在FreeBSD下只有root可以使用
-n number 设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效
-u 用显示User ID代替username,提高命令运行速度
-v 显示程序版本号后,立即退出。如果要在top运行时查看版本号,输入”?”
-o 以指定的字段排序显示进行信息。字段名必须为输入在屏幕的可见列的名字,而且必须是小写。
比如”cpu”、”size”、”res”与”time”,但不同的操作系统间有许多的不同。注意不是每个UNIX操
作系统都支持此选项。

-U 只显示属于后面所跟用户名的进程的信息
屏幕控制命令
交换方式下,可以使用以下命令控制top
^L – 刷新屏幕
q – 退出
h or ? – 显示帮助
d – 修改刷新显示的次数
e – 显示最近”kill”或”renice”命令所产生的错误
i – 显示/不显示处于空闲的进程
I – 作用同 ‘i’
k – kill 进程; 发送一个信号到某个进程列表
n or # – 修改显示进程的数目
o – 以特定的字段排序 (pri, size, res, cpu, time)
r – renice 一个进程
s – 修改输入的更新时间
u – 只显示属于某个用户的进程 (+ selects all users)
顺序显示下面三个常规的信息

一. 系统信息:

last pid: 22228; load averages: 0.25, 0.97, 1.56 up 44+03:25:56 21:39:36
274 processes: 3 running, 259 sleeping, 12 zombie
CPU states: 2.9% user, 0.0% nice, 4.2% system, 0.4% interrupt, 92.5% idle
Mem: 483M Active, 120M Inact, 222M Wired, 25M Cache, 112M Buf, 153M Free
Swap: 2048M Total, 143M Used, 1905M Free, 6% Inuse

首部的几行显示系统的几个信息,其中包括:
+ Load averages:1分钟、5分钟和15分钟内运行的负载平均数
+ system:系统名和当前日期.
一般来说只要每个CPU的当前活动进程数不大于 3那么系统的性能就是良好的,如果每个CPU的任务数大于5,
那么就表示这台机器的性能有严重问题
+ 最近一次更新时存在的进程总数,并分别列出run(运行)、sleep(睡眠)、idle(停止)和zomb(‘僵尸’)状态的进程数
+ CPU state:用户占用时间的百分比、系统占用CPU时间的百分比、被nice命令改变优先级的任务占用的CPU时间百分比、以及CPU空闲时间的百分比。
(被nice命令改变优先级的任务仅指那些nice值为负的任务)。花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此
整个时间加起来可能会超过百分之百

二.内存信息
Memory: 610008K (24424K) real, 995344K (30304K) virtual, 12588K free Page# 1/4
Memory:关于内存使用情况的统计,包括实际(real)内存的活动值/总值,虚拟(virtual)内存的使用值/总值,剩余的内存。

DESCRIPTION OF MEMORY
Mem: 9220K Active, 1032K Inact, 3284K Wired, 1MB Cache, 2M Buf, 1320K
Free Swap: 91M Total, 79M Free, 13% Inuse, 80K In, 104 K Out

K: Kilobyte(K)

M: Megabyte(兆)

%: 1/100(百分比)

Active:
活动页的数目

Inact: 非活动页的数目

Wired: 已经被写入页的数目, 包括缓存文件数据页码

Cache: 被用于 VM-level 磁盘缓冲的页的数目

Buf: 被用于 BIO-level 磁盘缓冲的页的数目

Free: 空闲页

Total: 总的可使用交换区

Free: 总共空闲的交换区

Inuse: 交换区的使用情况

In: pages paged in from swap devices (最近的时间间隔)

Out: pages paged out to swap devices (最近的时间间隔)

三.进程信息
CPU PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND
1 33 root 152 20 0K 0K run 153:43 1.18 1.18 vxfsd
0 1751 root 154 20 2500K 868K sleep 2084:19 0.52 0.52 ARMServer
0 1730 root 154 20 4500K 332K sleep 1664:55 0.44 0.44 acactmgr
列出系统里每一个处理器的信息,当信息在一个屏幕内无法显示时,会被分成多个屏幕显示,可以前面提到l,k和t命令查看
(1)CPU:处理器号(仅当多处理器系统时列出)
(2)PID:进程号
(3)USERNAME:用户名
(4)PRI:任务的优先级
(5)NICE:任务的nice值,一个具有较低值的进程在系统上将具有优先权。可以通过改变nice值提高某些进程速度,但是这实际上是一种交易,因为那些nice值被升高的进程此时将运行得很慢。
(6)SIZE:任务的代码加上数据再加上栈空间的大小。
(7)RES:任务使用的物理内存的总数量。
(8)STATE:任务的状态
(9)TIME:自任务开始时使用的总CPU时间,单位为秒,如153:43,对应是153秒43毫秒
(10)%WCPU:进程的CPU利用率权重百分比
(11)%CPU:进程的原始的CPU利用率百分比,自上一次屏幕刷新以来任务占用CPU 时间的份额
(12)COMMAND:启动进程的命令名。如果名字太长而不能在一行显示时,它将被截短

top -d time 这是设置两次刷新之间的时间间隔的吧 作用与交互命令s相同
top -n times 这是设置刷新多少次以后退出的times表示次数

原文链接:http://www.majormoves.net/post/224/

FreeBSD命令大全

FreeBSD命令大全

如果你从unix转到FreeBSD来,那么你一定对他的命令会比较熟悉。

1 man 在线查询 man ls
2 ls 查看目录与档案 ls -la
3 ln 建立链接文件 ln -fs /usr/local/apache/etc/httpd.conf /etc/httpd.conf
4 more 分页显示 more 文件名称
5 cd 切换目录 cd /usr/local/apache
6 mkdir 建立新的目录 mkdir /usr/temp
7 rmdir 删除目录 rmdir /usr/temp
8 rm 删除目录或档案 rm -f 文件名称 (如果要删除目录.需要加 -r )
9 cp 复制目录或档案 cp 来源档案 目标档案
10 pwd 显示目前的工作目录
11 mv 目录或档案更名或搬移 mv 来源档案 目标档案
12 find 寻找目录或档案 find /etc -name 文件名称
13 fetch FTP取得档案 fetch ftp://ftp.center.kl.edu.tw/pub/FreeBSD/test.tgz
14 chmod 变更档案使用权限 chmod -R 755 /usr/local/etc
15 chown 变更档案所有者 chown -R lin.wheel /usr/local/etc
16 fsck 修理档案系统 fsck -y
17 gzip/tar 压缩或解压缩档案或目录 tar -czvf 压缩档名.tar.gz 目录名称
18 mount 挂上档案系统或是设备 mount /cdrom
19 umount 卸下档案系统或是设备 umount /cdrom
20 df 查询系统的可使用档案空间 df
21 du 显示目录或档案所占的磁盘空间 du -a 檔名 (du -sh 可以获取当前文件夹下的磁盘使用空间)
22 ps 查询系统process状态 ps -aux|grep apach*
23 kill 砍除一个process kill pid
24 su 变换身份 su – root
25 adduser 新增使用者
26 rmuser 删除使用者
27 vipw 编辑使用者账户
28 passwd 变更密码
29 ping 侦测计算机之联机状态 ping 210.240.6.9
30 ifconfig 网络接口的设定与管理 ifconfig -a
31 route 可以设定routing table
32 traceroute 列出所经过的route traceroute 210.240.8.1
33 netstat 可以查询网络的使用及联机情形
34 pkg_add 安装package pkg_add bash-2.04.tgz
35 pkg_delete 移除已安装的package pkg_delete bash-2.04
36 pkg_info 查询安装纪录
37 sync 强迫系统将快取数据写回硬盘
38 reboot重新启动系统
39 halt 关闭系统
40 shutdown 通知使用者系统将关闭
41 init 0 直接关机

chown chown -R 所有者.群组 档案或目录
-R:表该目录下之所有档案之所有者与群组跟着便变更

chmod
drwxrwxrwx
lr–rwxr-x
1 2 3 4
d:表目录
r:表read
w:表write
x:表可执行
-:表关闭功能

l:表链接的档案
2:该档案或目录所有人之读取权限
3:该档案或目录所有人之相同群组的读取权限
4:网络上的人的读取权限
-R:表该目录下之所有档案之读取权限跟着便变更

gzip/tar
tar czvf 压缩档名.tar.gz 目录名称
z:采用gzip压缩
c:建立新的压缩档
v:采用verbose方式,观看压缩过程
f:强制进行

tar zxvf 压缩档名.tar.gz
z:采用gzip解压缩
x:解压缩
v:采用verbose方式,观看压缩过程
f:强制进行

ifconfig
查询所有网络接口的情形
ifconfig -a

设定网络接口的参数
ifconfig de0 192.168.1.10 netmask 255.255.255.0

停止网络接口
ifconfig de0 down

启动网络接口
ifconfig de0 up

route
改变 routing path 之gateway
route change default 192.168.1.254

netstat
查询 routing table
netstat -rn

查询网络接口流量统计
netstat -I
查询 TCP网络联机情形
netstat -t
查询所有网络联机情形
netstat -a

shutdown
通知使用者多久后关机,管理者需下reboot或halt
shutdown -k 时间 讯息
通知使用者多久后重新启动系统
shutdown -r 时间 讯息
通知使用者多久后关闭系统
shutdown -h 时间 讯息

时间:now或+3表三分钟后或yymmddhhmm
讯息:用双引号括起来或用-号开头

一些常用的其它组合命令:
shift+g 同win下的END键,让光标处在文档末尾.
:/ 功能是在文档内进行文本搜索
:find 这个是文件的搜索

ls -l |more 内容过多时候..分屏显示

原文链接:http://www.majormoves.net/post/222/

FreeBSD基本命令整理

FreeBSD基本命令整理

第一步

我如何离线?(exit)
我如何停止电脑?(shutdown -h now)
我如何重新激活计算机? (shutdown -r now)
我如何在单使用者模式下停止系统? (shutdown now)
我如何切换终端机? (ALT-F*)

文件

我如何阅读 manual page? (man)

使用者管理 (1)

我该如何增加一个使用者? (adduser)
我如何移除使用者? (rmuser)
我如何改变我的密码? (passwd)

“su” 指令

我如何 “su” 至 root 帐号? (su)
我如何 “su” 至其它使用者的帐号? (su username)

四处观察

我在哪? (pwd)
我如何观察目录下有什么? (ls)
我如何看到以点开始的隐藏档? (ls -a)
我如何看到更多的讯息 (存取许可,拥有者,群组,大小,日期)? (ls -l)
我如何看出那些档是什么? (ls -F)
这些是什么档: “..” 与 “.”? (ls -aF)

四处移动

我该如何改变工作目录? (cd)
如何回到上一层目录? (cd ..)
我如何回到自己的工作目录? (cd, cd ~/)

屏幕控制

我如何卷回 (在终端机中,非 X)? (The Scroll Lock Key)
我该如何清除屏幕? (clear)

文章

我如何不使用文书编辑器就可以观看小的档案? (more)
最普遍的文书编辑器是? (vi)
“vi” 看起来有点难,我可以从 “ee” 开始吗? (ee)

“visual” 编辑器

学习 “vi” 最有效的方法为何? (vilearn)
“vi” 是如何工作的? (man vi)
什么是储存指命? (:w)
什么是离开指令? (:q)
什么是可以储存与离开的命令? (:wq)
如何离开而不使用储存指令? (:q!)
我如何移动? (h, j, k, and l)
Esc 键有什么用途? (The Esc Key)
我如何加入新的文字? (a and i)
我如何建立新的一行? (o and O)
我如何删除文字? (x and dd)
我如何拷贝文章内容? (yy and p)
我如何替代文章? ®
我如何使用数个指令? (nCommand)
我如何搜寻文章? (/text)
我如何起动 “vi” 于只读模式? (view)

使用者管理 (2)
我如何新增使用者至群组? (vi /etc/group)

计算机信息

我如何能观看开机记录文件? (dmesg)
有什么方法可以让我慢慢地观看开机记录文件吗? (dmesg |more)

显示谁在系统上? (who)
他们正在做什么?? (w)
“w” 可以显示出所有的处理吗? (w)

何时

我如何显示或设定日期时间? (date)
我如何显示月历? (cal)
有什么方法可以让我慢慢地观看月历吗? (cal | more)

Communications(通讯)

我如何显示 (或不显示) 其它使用者送来的讯息? (mesg y, mesg n)
我如何传送讯息到其使用者的屏幕? (write)
我如何送讯息到每一个人的屏幕? (wall)
我如何与他人交谈 (chat)? (talk)

档案管理

我如何建立一个空档案? (touch)
我如何删除档案? (rm)
我如何建立一个目录? (mkdir)
我如何移除一个空的目录? (rmdir)
我如何移除一个目录包括里面所有的东西 (包括子目录)? (rm -r)
我如何移除以 “-” 起头的档案? (rm — -filename)
我如何拷贝档案? (cp)
我如何拷贝整个目录包括它所有的内容? (cp -R)
我该如何搬移档案与目录? (mv)
我如何改变档案/目录名称? (mv)
我如何执行 rm、cp 与 mv 时,须要我的许可? (-i)
我如何执行 rm、cp 与 mv 时,不须要我的确认? (-f)

档案连结

我如何连结一个档案或目录? (ln -s)
我如何 hard link 一个档案? (ln)

档案拥有权/存取许可

我如何观察谁是档案拥有者? (ls -l)
我如何观察档案/目录的存取许可? (ls -l)
我如何改变档案/目录的使用者拥有人? (chown)
我如何改变档案/目录的群组拥有人?s group owner? (chgrp)
我如何改变档案/目录的使用者与群组拥有人? (chown user:group)
我如何改变存取许可? (chmod)
如果我拥有这个目录,我可否修改不是我的档案? (yes)

软盘机装置

我如何挂上我的软盘? (mount)
我如何挂上 MS-DOS 格式的软盘机? (mount -t msdos)
我如何卸下我的软盘? (umount)

应用程序

我如何起动应用程序? (./)
我如何由文件名称来起动应用程序? (PATH)
我如何在背景起动应用程序? (&)
我如何知道我的 PATH 是? (echo $PATH)
所有的应用程序在那? (The FreeBSD Ports Collection)
我如何安装一个 port? (make install clean)
那里有编辑好的二进制文件? (The FreeBSD Packages Collection)
我如何移除应用程序? (pkg_delete)

使用者环境

使用者的 profile 档案在那? (vi ~/.profile)
我如何改变我的 shell? (chsh)

处理管理

我如何列出处理? (ps)
我如何列找到处理? (ps -waux | grep “name of the process”)
我如何砍掉处理? (kill)

磁盘管理

我如何检查可用的磁盘空间? (df)
我如何检查每个目录下用了多少磁盘空间? (du)

工具

哪里有计算器? (bc)

原文链接:http://www.majormoves.net/post/223/

FreeBSD下查看某目录下文件的个数

FreeBSD下查看某目录下文件的个数

ls -l |grep "^-"|wc -l

find ./company -type f | wc -l

查看某目录下文件的个数,包括子目录里的。

ls -lR|grep "^-"|wc -l

查看某文件夹下目录的个数,包括子目录里的。

ls -lR|grep "^d"|wc -l

说明:

ls -l

长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)

grep "^-"

这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc -l

统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

原文链接:http://www.majormoves.net/post/189/

FreeBSD find命令详解

FreeBSD find命令详解

find命令是功能最强的命令之一,但同时也是命令行结构最难以掌握的命令之一。
# find / -print | wc -l 显示系统中所有文件和目录的数目。
# find / -user $LOGNAME -print 显示系统中该用户所有文件和目录。
# find / -size 100 -print 显示文件大小为100 blocks。
# find / -size -100 -print 显示文件大小小于100 blocks 。
# find / -size +100 -print 显示文件大小大于100 blocks 。
# find / -name core -exec rm {} \;查找并删除core文件。
# find . -exec chown $LOGNAME {} \; 修改一个目录下的所有文件的用户所属。
# find .-type d -exec chmod 770 {} \;修改一个目录下的所有目录的权限。

find :(以下均在hp-unix下操作的)
find ./dir -mtime +10 -exec rm -rf {}\; 在dir目录下找到10天之前的文件,然后删除。 exec选项后面跟随着所要执行的命令,然后是一对儿{ },一个空格和一个\,最后是一个分号。
find ./dir -mtime +20 | xargs rm 在dir目录找到20天之前的文件并删除。 xargs 比直接带-exec选项的效率和性能都好
find ./dir -mtime -2 在dir目录下查找两天之内的文件
find ./dir -mtime +3 在dir目录下查找三天之前的文件
find ./dir -user fly 在dir目录下查找属于fly用户的文件
find ./dir -group user 在dir目录下查找属于user组的文件
find ./dir -type d 在dir目录下查找文件类型为目录的文件
find ./dir -name "*.sh" -depth  在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做

找unix机器中所有包含“jdbc/WapDataSource”字符串的文件

find / grep "jdbc/WapDataSource"

find / -name httpd.conf
find / -name access_log 2>/dev/null
find /etc -name ‘*srm*’
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -cmin -5 # 查找在系统中最后5分钟里被改变状态的文件
find / -ctime -1 #查找在系统中最后24小时里被改变状态的文件
find / -user reda #查找在系统中属于fred这个用户的文件
find / -not -user reda #查找在系统中不属于FRED这个用户的文件
find / -group redagrp # 查找在系统中属于redagrp组的文件
find / -gid 501 #查找系统中属于组id为501的文件
find / -user fred -a -group redagrp
find / -user reda -o -user tracy
find / -nouser #查找在系统中属于作废用户的文件
find / -empty # 查找在系统中为空的文件或者为空的文件夹
find / -false #查找系统中总是错误的文件
find / -size +5k #查找系统中大于5k字节的文件
find / -size +5c #查找系统中大于5字节的文件
find / -perm +6000
find / -type b
文件类型:
b 块(缓冲)设备.
c 字符设备.
d 目录.
p 有名管道(FIFO).
f 规则文件.
l 符号链结.
s 插座.
find / -maxdepth 2 -name fred
find /tmp -size +10000000c -and -mtime +2
find / -user reda -or -user tracy
find /tmp ! -user reda
find / -name ‘httpd.conf’ -ls
find / -user reda -exec ls -l {} \;
find / -user reda -ok #确认后执行
find / -user reda | xargs ls –l

原文链接:http://www.majormoves.net/post/188/

FreeBSD chgrp命令详解

FreeBSD chgrp命令详解

chgrp,修改文件或目录的所属组。

chgrp [options] newgroup files/directorys

组名可以用组的ID号,也可用/etc/group中的组名。只有文件的属主或特权用户(root)才可改变它的组。

options:

-c,–changes

只输出被改变文件的信息

-f,–silent,–quiet

当不能改变文件组属性时,不通知文件的用户

–help

输出帮助信息。

-R,–recursive

可递归遍历子目录,把修改应到目录下所有文件和子目录

–reference=filename

参照filename的组信息来设置当前文件的组

-v,–verbose

输出详细信息

–version

输出版本信息。

实例:

$ chgrp root test把test的所属组更改root组

$ chgrp -R mysql test递归地把test目录及该目录下所有文件和子目录的组属性设置成mysql

$ chgrp root * 把当前目录中所有文件的组属性设置成root

3、chown—-设置一个或多个文件或目录的属主身份

chown [options] newowner files/directorys

新的属主可以是用户的ID号,也可以是/etc/passwd里的登录名。chown也可接受这样的形式:newowner:newgroup或newowner.newgroup。同时改变所属组的属性。如果句点和冒号后没有组名,则组改变为新属主的组。只有文件或目录的当前属主才有权改变它的属性。

options:

-c,–changes

只输出被改变文件的信息

–dereference

跟踪符号链接

-h,–no-dereference

改变每一个符号链的属主身份,而不是被引用文件的属主身份

-f,–silent,–quiet

当不能改变文件属主属性时,不通知文件的用户

–help

输出帮助信息。

-R,–recursive

可递归遍历子目录,把修改应到目录下所有文件和子目录

–reference=filename

把属主改变成filename文件的属主

-v,–verbose

输出详细信息

–version

输出版本信息。

实例:

$ chown root test把test文件的属主改进root

$ chown -R root test_directory递归地把test_directory目录下的所有文件属主改成root

$ chown –dereference root test_link把test_link链接的原文件属主改成root,链接文件属主不变

$ chown –no-dereference root test_link把test_link的链接文件属主改成root,原文件属主不变

原文链接:http://www.majormoves.net/post/181/

用PuTTY进行远程管理FreeBSD初学者笔记

用PuTTY进行远程管理FreeBSD初学者笔记

本人是一个FreeBSD系统的初学者,在学习当中遇到许多困难,因此想把安装及使用的过程做一个记录。因为学习及笔记当中参考了网上许多先辈的教程,在此表示感谢。本文是在FreeBSD实际环境使用后,进行记录的笔记,有不妥当之处还希望各位多多指正。

一 SSH简介

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。

SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

二 PuTTY简介

PuTTY 是一套免费的 SSH / Telnet 程序,它可以连接上支持 SSH Telnet 联机的站台,并且可自动取得对方的系统指纹码 (Fingerprint)。建立联机以后,所有的通讯内容都是以加密的方式传输,因此你再也不用害怕使用 Telnet 在 Internet 或公司的内部网络传输资料时被他人获知内容了!

三 PuTTY下载

1 下载putty.exe
[url]http://the.earth.li/~sgtatham/putty/0.60/x86/putty.exe[/url]

2 下载puttygen.exe
[url]http://the.earth.li/~sgtatham/putty/0.60/x86/puttygen.exe[/url]

四 生成密钥
运行puttygen.exe,点Generate按钮开始生成密钥(如图1),等待直至生成密钥。点下面的Save private key把私钥保存为扩展名是 .ppk 的文件(如图2)。此时不要关闭程序。

图1:生成密钥 图2:保存密钥文件

五 连接远程服务器,上传密钥

使用PuTTY登陆远程服务器,地址如192.168.0.1。在Session–>Host Name(or IP address)中输入192.168.0.1,如图3。

图3:连接远程服务器

在Connection–>Data–>Login details–>Auto-login username中输入初装系统时创建的wheel组用户,如admin,如果没有创建则新建一个用户,如图4。点Open按钮登陆远程服务器。图4:设置自动输入用户名

六 创建~/.ssh/authorized_keys

在远程服务器admin用户下创建~/.ssh/authorized_keys
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ee authorized_keys
复制Puttygen.exe程序Public key for pasting into Open SSH authorized_keys file下面的内容,在服务器上的authorized_keys文件中按鼠标右键粘贴并保存退出。

七 使用Putty密钥方式验证自动登陆

打开Putty.exe,根据上述第五点,输入远程服务器IP地址及登陆用户名,并在Connection–>SSH–>Auth–>Private key file for authentication–>点Browser按钮选择上述第四点保存的.ppk文件,如图5。点Open按钮即可登陆远程服务器。

图5:设置密钥文件

原文链接:http://luhuayan.blog.51cto.com/261482/53636