免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3987 | 回复: 4
打印 上一主题 下一主题

Handbook读书笔记-第3章 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-29 08:45 |只看该作者 |倒序浏览
像俺这样半路出家的基础不牢,玩玩BSD还可以,真要用了还真的从头学学,有没有兄弟愿意共同讨论讨论Handbook?这几天,抽空把第3章看完了,整理了个笔记,大家共享共享,欢迎批评指正!最新的会更新到我的blog上:http://www.cublog.cn/u/4206/showart.php?id=106397

Handbook读书笔记-第3章

3.2.5 单用户模式的控制台
console none unknown off secure
改成
console none unknown off insecure
初始设置为secure表示系统重新启动之后,如果管理员要求进入单用户状态,将不询问root的口令进行验证,这是一个重要的安全漏洞。将secure更改为insecure可以使得进入单用户状态时首先验证root口令。当然它也有可能带来一定的问题,就是:一旦系统损坏了passwd文件(主要是 master.passwd文件),root口令无法认证,就没有办法进入单用户状态进行修复工作。解决方法是需要使用安装盘启动fixit 系统进行修正。或者用livecd开机,把系统挂上,chroot后再passwd修改密码。

如果使用了xwindow,大家可能都希望跟windows那样的图形界面登陆,在第5章有说明的。
# vi /etc/ttys
ttyv8  "/usr/X11R6/bin/xdm -nodaemon" xterm   off secure
改成
ttyv8  "/usr/X11R6/bin/xdm -nodaemon" xterm   on secure

# vi ~/.xsession
export  LC_ALL=zh_CN.eucCN
export  XMODIFIERS='@im=fcitx'
export  LANG=zh_CN.eucCN
export  LC_CTYPE=zh_CN.eucCN

fcitx &
gnome-session

3.3权限

chmod [-fhv] [-R [-H | -L | -P]] mode file ...
-f:权限无法被更改也不要显示错误讯息
-h:改变符号链接文件本身的属性,不是默认的改变符号链接所链接的目标文件属性。
-v:一个-v的时候显示权限变更的文件的名字,多个的时候,以八进制显示权限变更的详细情况。
-R:对目录下的文件及子目录进行相同的权限变更(不含连接文件),以递归的方式逐个改变。
-R –H:只对当前命令行里的符号链接文件起作用。
-R –L:相对于-R,它增加了一个功能:对所有的符号链接文件也起作用。
-R –P:跟chmod -R作用一样,对连接文件不起作用,这是default。


-f:权限无法被更改也不要显示错误讯息
ll
total 0
-rw-r--r--  1 root  wheel  0 Apr 19 10:32 test
chflags schg test
ls -lo
total 0
-rw-r--r--  1 root  wheel  schg 0 Apr 19 10:32 test
chmod 777 test
chmod: test: Operation not permitted
chmod -f 777 test
ls -lo
total 0
-rw-r--r--  1 root  wheel  schg 0 Apr 19 10:32 test
-R:对目录下的文件及子目录进行相同的权限变更(不含连接文件),以递归的方式逐个改变。
mkdir /test
touch /link
cd /test
touch test1
touch test2
mkdir test3
cd test3
touch test4
touch test5
ln –s /link link1
lvs1# chmod -R 777 /test
lvs1# cd /test
lvs1# ll
total 2
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:51 test1
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:51 test2
drwxrwxrwx  2 root  wheel  512 Apr 19 10:52 test3
lvs1# cd test3
lvs1# ll
total 0
lrwxr-xr-x  1 root  wheel  5 Apr 19 10:51 link1 -> /link
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:51 test4
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:51 test5
lvs1# ll /link
-rw-r--r--  1 root  wheel  0 Apr 19 10:51 /link
-R –P:跟chmod -R作用一样,对连接文件不起作用,这是default。
mkdir /test
touch /link
cd /test
touch test1
touch test2
mkdir test3
cd test3
touch test4
touch test5
ln –s /link link1
lvs1# chmod -R -P 777 /test
lvs1# cd /test
lvs1# ll
total 2
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:54 test1
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:54 test2
drwxrwxrwx  2 root  wheel  512 Apr 19 10:54 test3
lvs1# cd test3
lvs1# ll
total 0
lrwxr-xr-x  1 root  wheel  5 Apr 19 10:54 link1 -> /link
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:54 test4
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:54 test5
lvs1# ll /link
-rw-r--r--  1 root  wheel  0 Apr 19 10:54 /link
-R –L:相对于-R,它增加了一个功能:对所有的符号链接文件也起作用。
mkdir /test
touch /link
cd /test
touch test1
touch test2
mkdir test3
cd test3
touch test4
touch test5
ln –s /link link1
lvs1# cd /test
lvs1# ll
total 2
-rw-r--r--  1 root  wheel    0 Apr 19 10:50 test1
-rw-r--r--  1 root  wheel    0 Apr 19 10:50 test2
drwxr-xr-x  2 root  wheel  512 Apr 19 10:50 test3
lvs1# cd test3
lvs1# ll
total 0
lrwxr-xr-x  1 root  wheel  5 Apr 19 10:50 link1 -> /link
-rw-r--r--  1 root  wheel  0 Apr 19 10:50 test4
-rw-r--r--  1 root  wheel  0 Apr 19 10:50 test5
lvs1# ll /link
-rw-r--r--  1 root  wheel  0 Apr 19 10:50 /link
lvs1# chmod -R -L 777 /test
lvs1# cd /test
lvs1# ll
total 2
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:50 test1
-rwxrwxrwx  1 root  wheel    0 Apr 19 10:50 test2
drwxrwxrwx  2 root  wheel  512 Apr 19 10:50 test3
lvs1# cd test3
lvs1# ll
total 0
lrwxr-xr-x  1 root  wheel  5 Apr 19 10:50 link1 -> /link
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:50 test4
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:50 test5
lvs1# ll /link
-rwxrwxrwx  1 root  wheel  0 Apr 19 10:50 /link
-R –H:只对当前命令行里的符号链接文件起作用。
mkdir /test
touch /link1
touch /link2
cd /test
ln –s /link1 link1
ln –s /link2 link2
lvs1# chmod -R -H 777 /test/link1
lvs1# ll
total 0
lrwxr-xr-x  1 root  wheel  6 Apr 19 15:24 link1 -> /link1
lrwxr-xr-x  1 root  wheel  6 Apr 19 15:24 link2 -> /link2
lvs1# ll /link1
-rwxrwxrwx  1 root  wheel  0 Apr 19 15:24 /link1
lvs1# ll /link2
-rw-r--r--  1 root  wheel  0 Apr 19 15:24 /link2

-P、-H、-L只有在有-R的时候才起作用,否则将被忽略,而且它们互相覆盖,即最后面的那个参数起作用。

-h:改变符号链接文件本身的属性,不是默认的改变符号链接所链接的文件属性。
mkdir /test
touch test1
touch test2
cd /test
ln –s /test1 link1
ln –s /test2 link2
lvs1# chmod -h 777 link1
lvs1# ll
total 0
lrwxrwxrwx  1 root  wheel  6 Apr 19 15:32 link1 -> /test1
lrwxr-xr-x  1 root  wheel  6 Apr 19 15:32 link2 -> /test2
lvs1# ll /test1
-rw-r--r--  1 root  wheel  0 Apr 19 15:32 /test1
-v:一个-v的时候显示权限变更的文件的名字,多个的时候,以八进制显示权限变更的详细情况。
lvs1# mkdir test
lvs1# cd test
lvs1# touch test1
lvs1# touch test2
lvs1# ll
total 0
-rw-r--r--  1 root  wheel  0 Apr 19 15:34 test1
-rw-r--r--  1 root  wheel  0 Apr 19 15:34 test2
lvs1# chmod -v 777 test1
test1
lvs1# ll
total 0
-rwxrwxrwx  1 root  wheel  0 Apr 19 15:34 test1
-rw-r--r--  1 root  wheel  0 Apr 19 15:34 test2
lvs1# chmod -v -v 777 test2
test2: 0100644 [-rw-r--r-- ] -> 0100777 [-rwxrwxrwx ]
lvs1# ll
total 0
-rwxrwxrwx  1 root  wheel  0 Apr 19 15:34 test1
-rwxrwxrwx  1 root  wheel  0 Apr 19 15:34 test2


chflags [-h] [-R [-H | -L | -P]] flags file ...

-h:改变符号链接文件本身的属性,不是默认的改变符号链接所链接的目标文件属性。
-R:对目录下的文件及子目录进行相同的权限变更(不含连接文件),以递归的方式逐个改变。
-R –H:只对当前命令行里的符号链接文件起作用。
-R –L:相对于-R,它增加了一个功能:对所有的符号链接文件也起作用。
-R –P:跟chmod -R作用一样,对连接文件不起作用,这是default。

有如下flags可用:
schg, schange, simmutable
set the system immutable flag (super-user only)
防止误删或被修改,root要改回来也是只有在单用户模式或者securelevel在0或以下
uchg, uchange, uimmutable
set the user immutable flag (owner or super-user only)
跟schg一样,唯一区别是除了root之外文件所有者也有权限修改
nodump  
set the nodump flag (owner or super-user only)
不让备份,dump(备份的时候不备份该文件
sappnd, sappend
set the system append-only flag (super-user only)
只能在文件后面添加内容
uappnd, uappend
set the user append-only flag (owner or super-user only)
跟sappnd一样,但是文件所有者也可以设置
sunlnk, sunlink
set the system undeletable flag (super-user only)
系统禁删标志,不管上层目录的权限如何都不让删除
uunlnk, uunlink
set the user undeletable flag (owner or super-user only)
跟sunlnk类似,但是文件所有者也可以设置
opaque  
set the opaque flag (owner or super-user only)
让那些以unionfs方式mount的目录看起来跟正常的mount一样。
arch, archived
set the archived flag (super-user only)
似乎没什么用处,其他程序都忽略了它

ls –lo可以看到这些标志是否被设置了。Flags前面加no或者去掉原来的no就是相反的作用了。如果要偷懒,chflags 0 foo,就会把foo文件的所有flags都去掉,但不推荐。


mount_unionfs [-br] [-o options] directory uniondir
测试如下:
$ pwd
/home/test1
$ mkdir lower
$ echo lowerfile1 > lower/file1
$ echo lowerfile2 > lower/file2
$ cat lower/file*
lowerfile1
lowerfile2
$ ls -l lower
total 4
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file1
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file2
$ su
Password:
lvs1# mkdir upper
lvs1# mount -t unionfs /home/test1/upper /home/test1/lower
lvs1# echo newfile > lower/file3
lvs1# ls -l lower
total 6
total 6
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file1
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file2
-rw-r--r--  1 root   wheel   8 Apr 28 10:50 file3
lvs1# cat lower/file*
lowerfile1
lowerfile2
newfile
lvs1# ls -l upper
total 2
-rw-r--r--  1 root  wheel  8 Apr 28 10:50 file3
lvs1# cat upper/file*
newfile
修改一下file1文件:
lvs1# echo upperfile1 > lower/file1
此时看看lower目录的情况:
lvs1# ls -l lower
total 6
-rw-r--r--  1 root   wheel  11 Apr 28 10:51 file1
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file2
-rw-r--r--  1 root   wheel   8 Apr 28 10:50 file3
lvs1# cat lower/file*
upperfile1
lowerfile2
newfile
再看看upper目录的情况:
lvs1# ls -l upper
total 4
-rw-r--r--  1 root  wheel  11 Apr 28 10:51 file1
-rw-r--r--  1 root  wheel   8 Apr 28 10:50 file3
lvs1# cat upper/file*
upperfile1
newfile
upper目录没有file2,因为我们没有修改file2,因此upper目录中不会产生“备份”文件。
注意此时upper目录下的file1文件,属主是root,不再是test1用户了。因为我们刚才编辑了与lower目录下同名的文件file1。
mount之后我们的操作其实都是针对upper的,lower并未改动,现在我们再让两个目录恢复正常。
lvs1# umount /home/test1/lower
lvs1# ls -l lower
total 4
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file1
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file2
lvs1# cat lower/file*
lowerfile1
lowerfile2
会发现跟mount之前的lower目录是一模一样的,并没有任何的变化,我们的操作实际上都是针对upper目录的。

我们重新mount起来
lvs1# mount -t unionfs /home/test1/upper /home/test1/lower
lvs1# rm lower/file1
rm: lower/file1: Operation not supported
不让删除lower目录原本存在已经在upper目录产生了“备份”的文件file1,即使把目录及文件权限改成777也不可以,但是没有产生“备份”的文件是可以的。
lvs1# rm lower/file2
lvs1# ls -l lower
total 4
-rw-r--r--  1 root  wheel  11 Apr 28 10:51 file1
-rw-r--r--  1 root  wheel   8 Apr 28 10:50 file3
假设我们本来是希望修改另外的文件的,不是file1,file1文件也不想要了,而现在直接删除lower目录下的file1文件是不行的,得先删除upper目录的,然后再删除lower目录的。
lvs1# rm upper/file1
lvs1# rm lower/file1
lvs1# ls -l lower
total 2
-rw-r--r--  1 root  wheel  8 Apr 28 10:50 file3
lvs1# ls -l upper
total 2
-rw-r--r--  1 root  wheel  8 Apr 28 10:50 file3
似乎file1文件已经被干掉了,但实际上哪?
lvs1# umount /home/test1/lower
lvs1# ls -l lower
total 4
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file1
-rw-r--r--  1 test1  wheel  11 Apr 28 10:50 file2
lvs1# cat lower/file*
lowerfile1
lowerfile2
file1文件依然存在,我们只是把mount union出来的目录的file1文件删除了而已,对底层目录lower不会有任何的影响。

结论:在mount unionfs之后,再在lower目录新建文件,实际上是在upper目录里的,对lower目录中原有文件的修改也是在upper目录里的,lower目录并无变化,对lower目录的任何修改都会在upper目录生成一个“备份”,而我们的操作都是针对这些“备份”文件的,不应该lower目录的文件。在ls时仅以遇到的第一个文件名有效,因此在lower目录中的同名文件予以忽略。所以在union文件系统内部是无法访问到底层目录中的同名文件。

如果没有union文件系统,我如果想在不影响系统源码的情况下另外搞一个目录做开发的话,就得把系统源码整个拷到另外一个目录中。。。而现在就可以通过union文件系统把自己的改动悄悄地“融合”到原始的系统源码目录中,自己的改动又不会实际影响到原来的代码。直到有把握之后在把自己改过的文件merge回去。

在union文件系统内部是无法访问到底层目录中的同名文件的,如果想访问的话,就需要和null文件系统结合起来。
$ mkdir sys
$ echo sys-file1 > sys/file1
$ echo sys-file2 > sys/file2
$ ls -l sys
total 4
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file1
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file2
$ su
Password:
lvs1# mkdir sys1
lvs1# mount_nullfs /home/test1/sys /home/test1/sys1
lvs1# ls -l sys1
total 4
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file1
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file2
lvs1# mkdir sys2
lvs1# mount -t unionfs /home/test1/sys2 /home/test1/sys
修改一下sys目录下的file1文件
lvs1# echo newfile1 > sys/file1
此时再看sys2目录
lvs1# ls -l sys2
total 2
-rw-r--r--  1 root  wheel  9 Apr 28 10:55 file1
lvs1# cat sys2/file1
newfile1
因为我们修改了sys目录的文件,所以sys2目录就会生成它的“备份”。
lvs1# ls -l sys
total 4
-rw-r--r--  1 root   wheel   9 Apr 28 10:55 file1
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file2
lvs1# cat sys/file1
newfile1
“好像”sys目录下的file1文件被我们修改了,看看sys1目录吧
lvs1# ls -l sys1
total 4
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file1
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file2
lvs1# cat sys1/file1
sys-file1
sys1目录下实际的文件依然没有变化,所以我们看到的sys目录其实是sys2和sys结合的东西,从文件属主也可以看出来,ls sys的时候看到的是“备份”的file1。
lvs1# umount /home/test1/sys
lvs1# umount /home/test1/sys1
lvs1# ls -l sys
total 4
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file1
-rw-r--r--  1 test1  wheel  10 Apr 28 10:54 file2
lvs1# cat sys/file*
sys-file1
sys-file2
lvs1# ls -l sys2
total 2
-rw-r--r--  1 root  wheel  9 Apr 28 10:55 file1
lvs1# cat sys2/file*
newfile1
可以看到sys目录的文件没有变化,我们的修改只是改变了sys2目录的内容。

chmod涉及到权限的问题,在另外一篇文章中有比较详细的介绍了,发在我的blog中了,地址是:http://www.cublog.cn/u/4206/showart.php?id=103766

3.5 磁盘组织
文件系统是固定大小的。 当安装FreeBSD时新建一个文件系统并设定一个大小,您会在稍后发觉到必须去建一个大的分区。 如果配置不当, 则需要备份、 重新创建文件系统,然后再恢复数据。
重要: FreeBSD 4.4 或更高的版本提供了 growfs( 命令。这使得能够实时地调整文件系统的大小, 因而不再受其限制。

在以前,比如,我的/usr文件系统可以已经108%,这时怎么办呢?  一般的做法是:  
mv /usr/share/X11R6 /dev/ad0s8  #把占用磁盘最大的那个目录搬到新的地方,这里我是把我的新分区/dev/ad0s8挂上了,当然,如果你愿意,你也可以挂到/tmp  /var这样的地方也行。
ln -s /dev/ad0s8/X11R6 /usr/share/X11R6 #东西搬走了,你还要回过头来在原来的位置做软链接。
现在可以用growfs命令了。这是一个具体的例子http://www.cublog.cn/u/4206/showart.php?id=106112

3.8守护进程,信号和杀死进程

为什么使用 /bin/kill?: 许多shell提供了内建kill命令, 这样, shell就能直接发送信号,而不是运行 /bin/kill。 这点非常有用,但不同shell有不同的语法来指定发送信号的名字, 与其试图把它们学完倒不如简单地直接使用 /bin/kill ...。

以前都是直接kill的,还真没注意过,下回注意。

3.9.1 改变您用的Shell

经常有人问chsh错了进不到系统了,简单总结一下解决办法。
一:单用户模式下修改
1:系统启动时,选择“4”,进入“单用户”模式,输入“boot -s”进入单用户的提示符“#”,依次键入如下命令:
fsck -p
mount -u /
mount -a -t ufs
swapon -a
chsh -s /bin/csh
2:进入单用户模式以后,把/etc/passwd和/etc/master.passwd里root的shell都改成/bin/csh,然后执行pwd_mkdb
fsck -p
mount -u /
mount -a -t ufs
swapon -a
ee /etc/passwd
ee /etc/master.passwd
pwd_mkdb /etc/master.passwd
这是因为login的时候读取的是/etc/pwd.db和/etc/spwd.db,所以在你更改了/etc/passwd和/etc/master.passwd之后还需要重新生成这两个文件。
二:FB安装完之后除了root用户外还有个备用的管理员账号toor,就是root倒过来,所以刚装了系统之后记得passwd toor,給它设置个密码,shell改错了就可以用它登陆改回来了。

3.13 取得更多的资讯

英文太菜了,所以很少用man,现在开始尽量的多man,BSD中文的资料还是少,不会看英文的可实在不行啊,好多问题用中文搜不到答案,换成英文的就很有可能找到答案。

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
2 [报告]
发表于 2006-04-29 08:46 |只看该作者
还是blog好,从word复制的格式都不变,发到论坛就变样了,郁闷

论坛徽章:
0
3 [报告]
发表于 2006-04-29 08:56 |只看该作者
版主的权限该有所见即所得的权限,复制过来的时候该能把格式也复制过来!!!

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
4 [报告]
发表于 2006-04-29 09:10 |只看该作者
原帖由 小猴儿 于 2006-4-29 08:56 发表
版主的权限该有所见即所得的权限,复制过来的时候该能把格式也复制过来!!!

哪有啊,没见啊

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
5 [报告]
发表于 2006-04-29 10:41 |只看该作者
原帖由 剑心通明 于 2006-4-29 08:46 发表
还是blog好,从word复制的格式都不变,发到论坛就变样了,郁闷

同样的事,同样郁闷
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP