亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 10443 | 回復(fù): 36
打印 上一主題 下一主題

LINUX與UNIX SHELL編程指南 目錄和第一部分s h e l l [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-05-25 11:19 |只看該作者 |倒序瀏覽
本書共分五部分,詳細介紹了shell編程技巧,各種UNIX命令及語法,還涉及了UNIX下的文字處理以及少量的系統(tǒng)管理問題。本書內(nèi)容全面、文字簡潔流暢,適合Shell編程人員學(xué)習(xí)、參考。

[ 本帖最后由 sd-feng 于 2006-5-25 11:21 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2006-05-25 11:20 |只看該作者
目      錄
譯者序
前言
第一部分   shell
第1章   文件安全與權(quán)限        1
1.1   文件        1
1.2   文件類型        2
1.3   權(quán)限        2
1.4   改變權(quán)限位        4
1.4.1   符號模式        4
1.4.2   chmod命令舉例        5
1.4.3   絕對模式        5
1.4.4   chmod命令的其他例子        6
1.4.5   可以選擇使用符號模式或絕對模式        7
1.5   目錄        7
1.6   suid/guid        7
1.6.1   為什么要使用suid/guid        8
1.6.2   設(shè)置suid/guid的例子        8
1.7   chown和chgrp        9
1.7.1   chown舉例        9
1.7.2   chgrp舉例        9
1.7.3   找出你所屬于的用戶組        9
1.7.4   找出其他用戶所屬于的組        10
1.8   umask        10
1.8.1   如何計算umask值        10
1.8.2   常用的umask值        11
1.9   符號鏈接        12
1.9.1   使用軟鏈接來保存文件的多個映像        12
1.9.2   符號鏈接舉例        12
1.10   小結(jié)        13
第2章   使用find和xargs        14
2.1   find命令選項        14
2.1.1   使用name選項        15
2.1.2   使用perm選項        16
2.1.3   忽略某個目錄        16
2.1.4   使用user和nouser選項        16
2.1.5   使用group和nogroup選項        16
2.1.6   按照更改時間查找文件        17
2.1.7   查找比某個文件新或舊的文件        17
2.1.8   使用type選項        17
2.1.9   使用size選項        18
2.1.10   使用depth選項        18
2.1.11   使用mount選項        18
2.1.12   使用cpio選項        18
2.1.13   使用exec或ok來執(zhí)行shell命令        19
2.1.14   find命令的例子        20
2.2   xargs        20
2.3   小結(jié)        21
第3章   后臺執(zhí)行命令        22
3.1   cron和crontab        22
3.1.1   crontab的域        22
3.1.2   crontab條目舉例        23
3.1.3   crontab命令選項        23
3.1.4   創(chuàng)建一個新的crontab文件        24
3.1.5   列出crontab文件        24
3.1.6   編輯crontab文件        24
3.1.7   刪除crontab文件        25
3.1.8   恢復(fù)丟失的crontab文件        25
3.2   at命令        25
3.2.1   使用at命令提交命令或腳本        26
3.2.2   列出所提交的作業(yè)        27
3.2.3    清除一個作業(yè)        27
3.3   &命令        27
3.3.1   向后臺提交命令        28
3.3.2   用ps命令查看進程        28
3.3.3   殺死后臺進程        28
3.4   nohup命令        29
3.4.1  使用nohup命令提交作業(yè)        29
3.4.2   一次提交幾個作業(yè)        29
3.5   小結(jié)        30
第4章   文件名置換        31
4.1   使用*        31
4.2   使用?        32
4.3   使用[...]和[!...]        32
4.4   小結(jié)        33
第5章   shell輸入與輸出        34
5.1   echo        34
5.2   read        35
5.3   cat        37
5.4   管道        38
5.5   tee        39
5.6   標(biāo)準輸入、輸出和錯誤        40
5.6.1   標(biāo)準輸入        40
5.6.2   標(biāo)準輸出        40
5.6.3   標(biāo)準錯誤        40
5.7   文件重定向        40
5.7.1   重定向標(biāo)準輸出        41
5.7.2   重定向標(biāo)準輸入        42
5.7.3   重定向標(biāo)準錯誤        42
5.8   結(jié)合使用標(biāo)準輸出和標(biāo)準錯誤        43
5.9   合并標(biāo)準輸出和標(biāo)準錯誤        43
5.10   exec        44
5.11   使用文件描述符        44
5.12   小結(jié)        45
第6章   命令執(zhí)行順序        46
6.1   使用&&        46
6.2   使用||        46
6.3   用()和{ }將命令結(jié)合在一起        47
6.4   小結(jié)        48
第二部分   文本過濾
第7章  正則表達式介紹        49
7.1  使用句點匹配單字符        50
7.2   在行首以^匹配字符串或字符序列        50
7.3   在行尾以$匹配字符串或字符        51
7.4   使用*匹配字符串中的單字符或其重復(fù)
序列        51
7.5   使用\屏蔽一個特殊字符的含義        52
7.6   使用[]匹配一個范圍或集合        52
7.7   使用\{\}匹配模式結(jié)果出現(xiàn)的次數(shù)        53
7.8   小結(jié)        55
第8章   grep家族        56
8.1   grep        57
8.1.1   雙引號引用        57
8.1.2   grep選項        57
8.1.3   查詢多個文件        57
8.1.4   行匹配        57
8.1.5   行數(shù)        58
8.1.6   顯示非匹配行        58
8.1.7   精確匹配        58
8.1.8   大小寫敏感        58
8.2   grep和正則表達式        58
8.2.1   模式范圍        59
8.2.2   不匹配行首        59
8.2.3   設(shè)置大小寫        59
8.2.4   匹配任意字符        59
8.2.5   日期查詢        59
8.2.6   范圍組合        60
8.2.7   模式出現(xiàn)機率        60
8.2.8   使用grep匹配“與”或者“或”模式        61
8.2.9   空行        61
8.2.10   匹配特殊字符        61
8.2.11   查詢格式化文件名        61
8.2.12   查詢IP地址        61
8.3   類名        62
8.4   系統(tǒng)grep命令        62
8.4.1   目錄        63
8.4.2   passwd文件        63
8.4.3   使用ps命令        63
8.4.4   對一個字符串使用grep        64
8.5   egrep        64
8.6   小結(jié)        65
第9章   AWK介紹        66
9.1   調(diào)用awk        66
9.2   awk腳本        67
9.2.1   模式和動作        67
9.2.2   域和記錄        67
9.2.3   awk中正則表達式及其操作        70
9.2.4   元字符        70
9.2.5   條件操作符        70
9.2.6   awk內(nèi)置變量        73
9.2.7   NF、NR和FILENAME        74
9.2.8   awk操作符        75
9.2.9   內(nèi)置的字符串函數(shù)        78
9.2.10   字符串屏蔽序列        80
9.2.11   awk輸出函數(shù)printf        81
9.2.12   printf修飾符        81
9.2.13   awk數(shù)組        86
9.3   小結(jié)        88
第10章   sed 用法介紹        89
10.1   sed怎樣讀取數(shù)據(jù)        89
10.2   調(diào)用sed        89
10.2.1   保存sed輸出        90
10.2.2   使用sed在文件中查詢文本的方式        90
10.2.3   基本sed編輯命令        90
10.3   sed和正則表達式        91
10.4   基本sed編程舉例        91
10.4.1   使用p(rint)顯示行        91
10.4.2   打印范圍        91
10.4.3   打印模式        92
10.4.4   使用模式和行號進行查詢        92
10.4.5   匹配元字符        92
10.4.6   顯示整個文件        92
10.4.7   任意字符        92
10.4.8   首行        92
10.4.9   最后一行        93
10.4.10   打印行號        93
10.4.11   附加文本        93
10.4.12   創(chuàng)建sed腳本文件        94
10.4.13   插入文本        94
10.4.14   修改文本        95
10.4.15   刪除文本        96
10.4.16   替換文本        96
10.5   使用替換修改字符串        97
10.6   將sed結(jié)果寫入文件命令        97
10.7   從文件中讀文本        98
10.8   匹配后退出        98
10.9   顯示文件中的控制字符        99
10.10   使用系統(tǒng)sed        99
10.10.1   處理控制字符        99
10.10.2   處理報文輸出        101
10.10.3   去除行首數(shù)字        101
10.10.4   附加文本        102
10.10.5   從shell向sed傳值        102
10.10.6   從sed輸出中設(shè)置shell變量        102
10.11   快速一行命令        102
10.12   小結(jié)        103
第11章   合并與分割        104
11.1   sort用法        104
11.1.1   概述        104
11.1.2   sort選項        104
11.1.3   保存輸出        105
11.1.4   sort啟動方式        105
11.1.5   sort對域的參照方式        105
11.1.6   文件是否已分類        105
11.1.7   基本sort        106
11.1.8   sort分類求逆        106
11.1.9   按指定域分類        106
11.1.10   數(shù)值域分類        106
11.1.11   唯一性分類        107
11.1.12   使用k的其他sort方法        108
11.1.13   使用k做分類鍵排序        108
11.1.14   指定sort序列        108
11.1.15   pos用法        108
11.1.16   使用head和tail將輸出分類        109
11.1.17   awk使用sort輸出結(jié)果        109
11.1.18   將兩個分類文件合并        110
11.2   系統(tǒng)sort        110
11.3   uniq用法        111
11.4   join用法        112
11.5   cut用法        114
11.5.1   使用域分隔符        115
11.5.2   剪切指定域        115
11.6   paste用法        116
11.6.1    指定列        116
11.6.2   使用不同的域分隔符        116
11.6.3   paste命令管道輸入        117
11.7   split用法        117
11.8   小結(jié)        118
第12章   tr用法        119
12.1   關(guān)于tr        119
12.1.1   字符范圍        119
12.1.2   保存輸出        120
12.1.3   去除重復(fù)出現(xiàn)的字符        120
12.1.4   刪除空行        120
12.1.5   大寫到小寫        121
12.1.6   小寫到大寫        121
12.1.7   刪除指定字符        121
12.1.8   轉(zhuǎn)換控制字符        122
12.1.9   快速轉(zhuǎn)換        122
12.1.10   匹配多于一個字符        123
12.2   小結(jié)        123
第三部分   登錄環(huán)境
第13章   登錄環(huán)境        125
13.1   /etc/profile        125
13.2   用戶的$HOME.profile        128
13.3   stty用法        129
13.4   創(chuàng)建.logout文件        131
13.5   小結(jié)        131
第14章   環(huán)境和shell變量        132
14.1   什么是shell變量        132
14.2   本地變量        132
14.2.1    顯示變量        133
14.2.2   清除變量        133
14.2.3   顯示所有本地shell變量        133
14.2.4   結(jié)合變量值        134
14.2.5   測試變量是否已經(jīng)設(shè)置        134
14.2.6   使用變量來保存系統(tǒng)命令參數(shù)        135
14.2.7   設(shè)置只讀變量        135
14.3   環(huán)境變量        136
14.3.1   設(shè)置環(huán)境變量        136
14.3.2   顯示環(huán)境變量        136
14.3.3   清除環(huán)境變量        137
14.3.4   嵌入shell變量        137
14.3.5   其他環(huán)境變量        139
14.3.6   set命令        140
14.3.7   將變量導(dǎo)出到子進程        140
14.4   位置變量參數(shù)        141
14.4.1   在腳本中使用位置參數(shù)        142
14.4.2   向系統(tǒng)命令傳遞參數(shù)        142
14.4.3   特定變量參數(shù)        143
14.4.4   最后的退出狀態(tài)        144
14.5   小結(jié)        145
第15章   引號        146
15.1   引用必要性        146
15.2   雙引號        146
15.3   單引號        147
15.4   反引號        147
15.5   反斜線        148
15.6   小結(jié)        149
第四部分   基礎(chǔ)shell編程
第16章   shell腳本介紹        151
16.1   使用shell腳本的原因        151
16.2   腳本內(nèi)容        151
16.3   運行一段腳本        152
16.4   小結(jié)        153
第17章   條件測試        154
17.1   測試文件狀態(tài)        154
17.2   測試時使用邏輯操作符        155
17.3   字符串測試        155
17.4   測試數(shù)值        156
17.5   expr用法        157
17.5.1   增量計數(shù)        158
17.5.2   數(shù)值測試        158
17.5.3   模式匹配        158
17.6   小結(jié)        159
第18章   控制流結(jié)構(gòu)        160
18.1   退出狀態(tài)        160
18.2   控制結(jié)構(gòu)        160
18.2.1   流控制        161
18.2.2   循環(huán)        161
18.3   if then else語句        161
18.3.1   簡單的if語句        162
18.3.2   變量值測試        162
18.3.3   grep輸出檢查        163
18.3.4   用變量測試grep輸出        163
18.3.5   文件拷貝輸出檢查        164
18.3.6   當(dāng)前目錄測試        164
18.3.7   文件權(quán)限測試        165
18.3.8   測試傳遞到腳本中的參數(shù)        165
18.3.9   決定腳本是否為交互模式        165
18.3.10   簡單的if else語句        166
18.3.11  變量設(shè)置測試        166
18.3.12   檢測運行腳本的用戶        166
18.3.13   將腳本參數(shù)傳入系統(tǒng)命令        167
18.3.14   null:命令用法        167
18.3.15   測試目錄創(chuàng)建結(jié)果        168
18.3.16   另一個拷貝實例        169
18.3.17   多個if語句        169
18.3.18   測試和設(shè)置環(huán)境變量        169
18.3.19   檢測最后命令狀態(tài)        170
18.3.20   增加和檢測整數(shù)值        171
18.3.21   簡單的安全登錄腳本        172
18.3.22   elif用法        173
18.3.23   使用elif進行多條件檢測        173
18.3.24   多文件位置檢測        174
18.4   case語句        175
18.4.1   簡單的case語句        175
18.4.2   對匹配模式使用|        176
18.4.3   提示鍵入y或n        177
18.4.4   case與命令參數(shù)傳遞        177
18.4.5   捕獲輸入并執(zhí)行空命令        178
18.4.6   缺省變量值        179
18.5   for循環(huán)        180
18.5.1   簡單的for循環(huán)        181
18.5.2   打印字符串列表        181
18.5.3   對for循環(huán)使用ls命令        181
18.5.4   對for循環(huán)使用參數(shù)        182
18.5.5   使用for循環(huán)連接服務(wù)器        183
18.5.6   使用for循環(huán)備份文件        183
18.5.7   多文件轉(zhuǎn)換        183
18.5.8   多sed刪除操作        184
18.5.9    循環(huán)計數(shù)        184
18.5.10   for循環(huán)和本地文檔        184
18.5.11   for循環(huán)嵌入        185
18.6   until循環(huán)        186
18.6.1   簡單的until循環(huán)        186
18.6.2   監(jiān)視文件        187
18.6.3   監(jiān)視磁盤空間        187
18.7   while循環(huán)        188
18.7.1   簡單的while循環(huán)        188
18.7.2   使用while循環(huán)讀鍵盤輸入        188
18.7.3   用while循環(huán)從文件中讀取數(shù)據(jù)        189
18.7.4   使用IFS讀文件        189
18.7.5   帶有測試條件的文件處理        190
18.7.6   掃描文件行來進行數(shù)目統(tǒng)計        191
18.7.7   每次讀一對記錄        193
18.7.8   忽略#字符        193
18.7.9   處理格式化報表        194
18.7.10   while循環(huán)和文件描述符        196
18.8   使用break和continue控制循環(huán)        197
18.8.1   break        197
18.8.2   跳出case語句        197
18.8.3   continue        197
18.8.4   瀏覽文件行        198
18.9   菜單        199
18.10   小結(jié)        201
第19章   shell函數(shù)        202
19.1   在腳本中定義函數(shù)        203
19.2   在腳本中使用函數(shù)        203
19.3   向函數(shù)傳遞參數(shù)        203
19.4   從調(diào)用函數(shù)中返回        203
19.5   函數(shù)返回值測試        204
19.6   在shell中使用函數(shù)        204
19.7   創(chuàng)建函數(shù)文件        204
19.8   定位文件        205
19.9   檢查載入函數(shù)        205
19.10   執(zhí)行shell函數(shù)        205
19.10.1   刪除shell函數(shù)        206
19.10.2   編輯shell函數(shù)        206
19.10.3   函數(shù)舉例        207
19.10.4   將函數(shù)集中在一起        219
19.11   函數(shù)調(diào)用        219
19.11.1   在腳本中調(diào)用函數(shù)        219
19.11.2   從函數(shù)文件中調(diào)用函數(shù)        220
19.12   定位文件不只用于函數(shù)        222
19.13   小結(jié)        223
第20章   向腳本傳遞參數(shù)        224
20.1   shift命令        225
20.1.1   shift命令簡單用法        225
20.1.2   命令行輸入的最后一個參數(shù)        225
20.1.3   使用shift處理文件轉(zhuǎn)換        226
20.2   getopts        229
20.2.1   getopts腳本實例        229
20.2.2   getopts使用方式        231
20.2.3   使用getopts指定變量取值        231
20.2.4   訪問取值方式        232
20.2.5   使用getopts處理文件轉(zhuǎn)換        233
20.3   小結(jié)        235
第21章   創(chuàng)建屏幕輸出        236
21.1   tput用法        236
21.1.1   字符串輸出        236
21.1.2   數(shù)字輸出        237
21.1.3   布爾輸出        237
21.2   tput用法        237
21.2.1   設(shè)置tput命令        237
21.2.2   使用布爾輸出        237
21.2.3   在腳本中使用tput        237
21.2.4   產(chǎn)生轉(zhuǎn)義序列        238
21.2.5   光標(biāo)位置        239
21.2.6   在屏幕中心位置顯示文本        240
21.2.7   查找終端屬性        240
21.2.8   在腳本中使用功能鍵        241
21.2.9   使用顏色        242
21.2.10   產(chǎn)生顏色        243
21.2.11   創(chuàng)建精致菜單        246
21.3   小結(jié)        251
第22章   創(chuàng)建屏幕輸入        252
22.1   增加記錄        252
22.2   刪除記錄        262
22.3   修改記錄        266
22.4   查看記錄        270
22.5   小結(jié)        273
第23章   調(diào)試腳本        274
23.1   一般錯誤        274
23.1.1   循環(huán)錯誤        274
23.1.2   典型的漏寫引號        274
23.1.3   測試錯誤        274
23.1.4   字符大小寫        275
23.1.5   for循環(huán)        275
23.1.6   echo        275
23.2   set命令        275
23.3   小結(jié)        276
第24章   shell嵌入命令        277
24.1   shell嵌入命令完整列表        277
24.1.1   pwd        277
24.1.2   set        278
24.1.3   times        278
24.1.4   type        278
24.1.5   ulimit        279
24.1.6   wait        279
24.2   小結(jié)        279
第五部分   高級shell編程技巧
第25章   深入討論<<        281
25.1   快速創(chuàng)建一個文件        281
25.2   快速創(chuàng)建打印文檔        281
25.3   自動選擇菜單        282
25.4   自動ftp傳輸        283
25.5   訪問數(shù)據(jù)庫        286
25.6   小結(jié)        288
第26章   shell 工具        289
26.1   創(chuàng)建保存信息的文件        289
26.1.1   使用date命令創(chuàng)建日志文件        289
26.1.2   創(chuàng)建唯一的臨時文件        290
26.2   信號        291
26.2.1   殺死一個進程        292
26.2.2   檢測信號        293
26.3   trap        294
26.3.1   捕獲信號并采取相應(yīng)的行動        294
26.3.2   捕獲信號并采取行動的另
一個例子        295
26.3.3   鎖住終端        297
26.3.4   忽略信號        298
26.4   eval        300
26.4.1   執(zhí)行含有字符串的命令        300
26.4.2   給每個值一個變量名        301
26.5   logger命令        302
26.5.1   使用logger命令        303
26.5.2   在腳本中使用logger命令        303
26.6   小結(jié)        305
第27章   幾個腳本例子        306
27.1   pingall        306
27.2   backup_gen        306
27.3   del.lines        312
27.4   access.deny        313
27.5   logroll        316
27.6   nfsdown        317
27.7   小結(jié)        317
第28章   運行級別腳本        318
28.1   怎么知道系統(tǒng)中是否含有運行
級別目錄        318
28.2   確定當(dāng)前的運行級別        319
28.3   快速熟悉inittab        319
28.4   運行級別        320
28.4.1   各種運行級別        321
28.4.2   運行級別腳本的格式        321
28.4.3   安裝運行級別腳本        322
28.5   使用inittab來啟動應(yīng)用程序        323
28.6   啟動和停止服務(wù)的其他方法        324
28.7   小結(jié)        324
第29章   cgi腳本        325
29.1   什么是Web頁面?        325
29.2   cgi        325
29.3   連接Web服務(wù)器        326
29.4    cgi和HTM腳本        326
29.4.1   基本cgi腳本        326
29.4.2   顯示shell命令輸出        328
29.4.3   使用SSI        330
29.4.4   訪問計數(shù)器        330
29.4.5   使用一個鏈接來顯示當(dāng)前Web
環(huán)境變量        332
29.4.6   其他常用的環(huán)境變量        334
29.5   get和post方法簡介        335
29.5.1   get方法        335
29.5.2   post方法        340
29.5.3   填充列表項        347
29.5.4   自動刷新頁面        348
29.6   小結(jié)        349
附錄   常用shell命令        350

論壇徽章:
0
3 [報告]
發(fā)表于 2006-05-25 11:22 |只看該作者
廣告嫌疑
這本書不錯,我看的第一本就是這本書了,錯誤不少,但都是很淺顯的錯誤。

論壇徽章:
0
4 [報告]
發(fā)表于 2006-05-25 11:24 |只看該作者
第一部分s h e l l
第1章文件安全與權(quán)限

為了防止未授權(quán)用戶訪問你的文件,可以在文件和目錄上設(shè)置權(quán)限位。還可以設(shè)定文件
在創(chuàng)建時所具有的缺省權(quán)限:這些只是整個系統(tǒng)安全問題中的一小部分。在這里我們并不想
對系統(tǒng)安全問題的方方面面進行全面的探討,只是介紹一下有關(guān)文件和目錄的安全問題。

本章包含以下內(nèi)容:

. 文件和目錄的權(quán)限。
. setuid。
. chown和c h g r p。
. umask。
. 符號鏈接。
創(chuàng)建文件的用戶和他(她)所屬于的組擁有該文件。文件的屬主可以設(shè)定誰具有讀、寫、執(zhí)
行該文件的權(quán)限。當(dāng)然,根用戶或系統(tǒng)管理員可以改變?nèi)魏纹胀ㄓ脩舻脑O(shè)置。一個文件一經(jīng)
創(chuàng)建,就具有三種訪問方式:

1) 讀,可以顯示該文件的內(nèi)容
。
2) 寫,可以編輯或刪除它

3) 執(zhí)行,如果該文件是一個s h e l l腳本或程序
。
按照所針對的用戶,文件的權(quán)限可分為三類

1) 文件屬主,創(chuàng)建該文件的用戶

2) 同組用戶,擁有該文件的用戶組中的任何用戶

3) 其他用戶,即不屬于擁有該文件的用戶組的某一用戶
。


1.1 文件
當(dāng)你創(chuàng)建一個文件的時候,系統(tǒng)保存了有關(guān)該文件的全部信息,包括:

. 文件的位置。
. 文件類型。
. 文件長度。
. 哪位用戶擁有該文件,哪些用戶可以訪問該文件。
. i節(jié)點。
. 文件的修改時間。
. 文件的權(quán)限位
。
讓我們使用ls -l 命令,來看一個典型的文件


2 第一部分shell
下載
下面讓我們來分析一下該命令所得結(jié)果的前面兩行,看看都包含了哪些信息

total 4232:這一行告訴我們該目錄中所有文件所占的空間
。


- r w x r- x r- x:這是該文件的權(quán)限位。如果除去最前面的橫杠,這里一共是9個字符,他們
分別對應(yīng)9個權(quán)限位。通過這些權(quán)限位,可以設(shè)定用戶對文件的訪問權(quán)限。這9個字符可以分
為三組:
r w x:文件屬主權(quán)限這是前面三位
r- x :同組用戶權(quán)限這是中間三位
r- x :其他用戶權(quán)限這是最后三位
后面我們還將對這些權(quán)限位作更詳細的介紹。出現(xiàn)在r、w、x位置上的橫杠表示相應(yīng)的訪

問權(quán)限被禁止。
1 該文件硬鏈接的數(shù)目。
root 文件的屬主。
root 文件的屬主r o o t所在的缺省組(也叫做r o o t )。
3578 用字節(jié)來表示的文件長度,記住,不是K字節(jié)!
Oct 14 04:44 文件的更新時間。
dmesg 文件名。

1.2 文件類型
還記得前面一節(jié)所提到的文件權(quán)限位前面的那個字符嗎?我們現(xiàn)在就解釋一下這個橫杠
所代表的意思,文件類型有七種,它可以從ls -l命令所列出的結(jié)果的第一位看出,這七種類型
是:

d 目錄
。
l 符號鏈接(指向另一個文件)
。
s 套接字文件

b 塊設(shè)備文件
。
c 字符設(shè)備文件
。
p 命名管道文件



-普通文件,或者更準確地說,不屬于以上幾種類型的文件。
1.3 權(quán)限
讓我們用t o u c h命令創(chuàng)建一個文件:

$ touch myfile


現(xiàn)在對該目錄使用ls -l 命令:



第1章文件安全與權(quán)限3
下載
我們已經(jīng)創(chuàng)建了一個空文件,正如我們所希望的那樣,第一個橫杠告訴我們該文件是一
個普通文件。你將會發(fā)現(xiàn)所創(chuàng)建的文件絕大多數(shù)都是普通文件或符號鏈接文件(后面將會出現(xiàn)
更多的符號鏈接文件)。

文件屬主權(quán)限組用戶權(quán)限其他用戶權(quán)限

r w -r- -r—

接下來的三個權(quán)限位是文件屬主所具有的權(quán)限;再接下來的三位是與你同組用戶所具有
的權(quán)限,這里是a d m i n組;最后三位是其他用戶所具有的權(quán)限。在該命令的結(jié)果中,我所屬于
的缺省組也顯示了出來。下面是對該文件權(quán)限的精確描述:

表1-1 ls -l命令輸出的含義

(第一個字符) 普通文件
(接下來的三個字符) r w 文件屬主的權(quán)限
(再接下來的三個字符) r- 同組用戶的權(quán)限
(最后三個字符) r- 其他用戶的權(quán)限

因此,這三組字符(除了第一個字符)分別定義了

1) 文件屬主所擁有的權(quán)限
。
2) 文件屬主缺省組(一個用戶可以屬于很多的組)所擁有的權(quán)限
。
3) 系統(tǒng)中其他用戶的權(quán)限

在每一組字符中含有三個權(quán)限位

r 讀權(quán)

w 寫/更改權(quán)

x 執(zhí)行該腳本或程序的權(quán)

這里我們采用另外一種方式來表示剛才所列出m y f i l e的文件權(quán)限



-r w -r- -r--

文件類型為普通文件文件屬主可以讀、寫同組用戶可以讀其他用戶可以讀

你可能已經(jīng)注意到了,m y f i l e在創(chuàng)建的時候并未給屬主賦予執(zhí)行權(quán)限,在用戶創(chuàng)建文件時,
系統(tǒng)不會自動地設(shè)置執(zhí)行權(quán)限位。這是出于加強系統(tǒng)安全的考慮。必須手工修改這一權(quán)限位:
后面講到u m a s k命令時,你就會明白為什么沒有獲得執(zhí)行權(quán)限。然而,你可以針對目錄設(shè)置執(zhí)
行權(quán)限位,但這與文件執(zhí)行權(quán)限位的意義有所不同,這一點我們將在后面討論。

上面這段關(guān)于權(quán)限位的內(nèi)容可能不太好理解,讓我們來看幾個例子(見表1 - 2 )。

更令人迷惑的是,對于文件屬主來說,在只有讀權(quán)限位被置位的情況下,仍然可以通過
文件重定向的方法向該文件寫入。過一會兒我們就會看到,能否刪除一個文件還依賴于該文
件所在目錄權(quán)限位的設(shè)置。

表1-2 文件權(quán)限及含義

權(quán)限所代表的含義
r-- --- --文件屬主可讀,但不能寫或執(zhí)行
r-- r-- --文件屬主和同組用戶(一般來說,是文件屬主所在的缺省組)可讀
r-- r-- r- 任何用戶都可讀,但不能寫或執(zhí)行
rwx r-- r- 文件屬主可讀、寫、執(zhí)行,同組用戶和其他用戶只可讀
rwx r-x --文件屬主可讀、寫、執(zhí)行,同組用戶可讀、執(zhí)行

論壇徽章:
0
5 [報告]
發(fā)表于 2006-05-25 11:26 |只看該作者
原帖由 大螞蟻 于 2006-5-25 11:22 發(fā)表
廣告嫌疑
這本書不錯,我看的第一本就是這本書了,錯誤不少,但都是很淺顯的錯誤。


靠!打擊俺發(fā)帖積極性!
有需要的就到我的ftp去下吧.

[ 本帖最后由 sd-feng 于 2006-5-25 11:32 編輯 ]

論壇徽章:
0
6 [報告]
發(fā)表于 2006-05-25 11:28 |只看該作者
4 第一部分shell
下載
(續(xù))

權(quán)限所代表的含義
rwx r-x r- x 文件屬主可讀、寫、執(zhí)行,同組用戶和其他用戶可讀、執(zhí)行
rw- rw- --文件屬主和同組用戶可讀、寫
rw- rw- r- 文件屬主和同組用戶可讀、寫,其他用戶可讀
rw- rw- --文件屬主和同組用戶及其他用戶讀可以讀、寫,慎用這種權(quán)限
設(shè)置,因為任何用戶都可以寫入該文件

1.4 改變權(quán)限位
對于屬于你的文件,可以按照自己的需要改變其權(quán)限位的設(shè)置。在改變文件權(quán)限位設(shè)置
之前,要仔細地想一想有哪些用戶需要訪問你的文件(包括你的目錄)?梢允褂胏 h m o d命令來
改變文件權(quán)限位的設(shè)置。這一命令有比較短的絕對模式和長一些的符號模式。我們先來看一
看符號模式。

1.4.1 符號模式
c h m o d命令的一般格式為:

chmod [who] operator [permission] filename


w h o的含義是:

u 文件屬主權(quán)限。

g 同組用戶權(quán)限。

o 其他用戶權(quán)限
。
a 所有用戶(文件屬主、同組用戶及其他用戶)
。
o p e r a t o r的含義:
+ 增加權(quán)限。
-取消權(quán)限
。
= 設(shè)定權(quán)限
。
p e r m i s s i o n的含義

r 讀權(quán)限
。
w 寫權(quán)限
。
x 執(zhí)行權(quán)限
。
s 文件屬主和組s e t - I D
。
t 粘性位*
。
l 給文件加鎖,使其他用戶無法訪問
。
u,g,o 針對文件屬主、同組用戶及其他用戶的操作
。
*在列文件或目錄時,有時會遇到“t”位。“t”代表了粘性位。如果在一個目錄上出現(xiàn)
“t”位,這就意味著該目錄中的文件只有其屬主才可以刪除,即使某個同組用戶具有和屬主
同等的權(quán)限。不過有的系統(tǒng)在這一規(guī)則上并不十分嚴格。
如果在文件列表時看到“t”,那么這就意味著該腳本或程序在執(zhí)行時會被放在交換區(qū)(虛
存)。不過由于當(dāng)今的內(nèi)存價格如此之低,大可不必理會文件的“t”的使用。


第1章文件安全與權(quán)限5
下載
1.4.2 chmod命令舉例
現(xiàn)在讓我們來看一些使用c h m o d命令的例子。假定m y f i l e文件最初具有這樣的權(quán)限:r w x
rwx rwx


命令結(jié)果含義
chmod a-x myfile
chmod og-w myfile
chmod g+w myfile
chmod u+x myfile
chmod go+x myfile
rw- rw- rwrw- r-- r-
rw- rw- r-
rwx rw- r-
rwx rwx r- x
收回所有用戶的執(zhí)行權(quán)限
收回同組用戶和其他用戶的寫權(quán)限
賦予同組用戶寫權(quán)限
賦予文件屬主執(zhí)行權(quán)限
賦予同組用戶和其他用戶執(zhí)行權(quán)限

當(dāng)創(chuàng)建m y f i l e文件時,它具有這樣的權(quán)限:

如果這是我寫的一個腳本,我希望能夠具有執(zhí)行權(quán)限,并取消其他用戶(所有其他用戶)
的寫權(quán)限,可以用:

$ chmod u+x o-w myfile


這樣,該文件的權(quán)限變?yōu)椋?br />
現(xiàn)在已經(jīng)使文件屬主對m y f i l e文件具有讀、寫執(zhí)行的權(quán)限,而a d m i n組的用戶對該文件具
有讀權(quán)限。
如果希望某個腳本文件對你自己來說可執(zhí)行,而且你對該文件的缺省權(quán)限很放心,那么
只要使它對你來說具有執(zhí)行權(quán)限即可。

$ chmod u+x dt


1.4.3 絕對模式
c h m o d命令絕對模式的一般形式為:

chmod [mode] file


其中m o d e是一個八進制數(shù)。
在絕對模式中,權(quán)限部分有著不同的含義。每一個權(quán)限位用一個八進制數(shù)來代表,如表
1 - 3所示。

表1-3 八進制目錄/文件權(quán)限表示


八進制數(shù)含義

0 4 0 0 文件屬主可讀
0 2 0 0 文件屬主可寫
0 1 0 0 文件屬主可執(zhí)行
0 0 4 0 同組用戶可讀
0 0 2 0 同組用戶可寫

八進制數(shù)含義

0 0 1 0 同組用戶可執(zhí)行
0 0 0 4 其他用戶可讀
0 0 0 2 其他用戶可寫
0 0 0 1 其他用戶可執(zhí)行

在設(shè)定權(quán)限的時候,只需按照表1 - 3查出與文件屬主、同組用戶和其他用戶所具有的權(quán)限
相對應(yīng)的數(shù)字,并把它們加起來,就是相應(yīng)的權(quán)限表示。

從表1 - 3中可以看出,文件屬主、同組用戶和其他用戶分別所能夠具有的最大權(quán)限值就是7。

論壇徽章:
0
7 [報告]
發(fā)表于 2006-05-25 11:28 |只看該作者
6 第一部分shell
下載
再來看看前面舉的例子:


相應(yīng)的權(quán)限表示應(yīng)為6 4 4,它的意思就是:
0 4 0 0 + 0 2 0 0 (文件屬主可讀、寫) = 0 6 0 0
0 0 4 0 (同組用戶可讀) = 0 0 4 0
0 0 0 4 (其他用戶可讀) = 0 0 0 4

0 6 4 4
有一個計算八進制權(quán)限表示的更好辦法,如表1 - 4所示:

表1-4 計算權(quán)限值

文件屬主同組用戶其他用戶
r w x r w x r w x
4 + 2 + 1 4 + 2 + 1 4 + 2 + 1

使用表1 - 4,可以更容易地計算出相應(yīng)的權(quán)限值,只要分別針對文件屬主、同組用戶和其

他用戶把相應(yīng)權(quán)限下面的數(shù)字加在一起就可以了。
m y f i l e文件具有這樣的權(quán)限:
r w -r --r -
4 + 24 4
把相應(yīng)權(quán)限位所對應(yīng)的值加在一起,就是6 4 4。

1.4.4 chmod命令的其他例子
以下是一些c h m o d命令絕對模式的例子:

命令結(jié)果含義
chmod 666
chmod 644
chmod 744
chmod 664
chmod 700
chmod 444
rw- rw- rwrw- r-- r-
rwx r-- r-
rw- rw- r-
rwx --- --
r-- r-- r-
賦予所有用戶讀和寫的權(quán)限
賦予所有文件屬主讀和寫的權(quán)限,所有其他用戶讀權(quán)限
賦予文件屬主讀、寫和執(zhí)行的權(quán)限,所有其他用戶讀的權(quán)限
賦予文件屬主和同組用戶讀和寫的權(quán)限,其他用戶讀權(quán)限
賦予文件屬主讀、寫和執(zhí)行的權(quán)限
賦予所有用戶讀權(quán)限


下面舉一個例子,假定有一個名為y o a的文件,具有如下權(quán)限:
我現(xiàn)在希望使自己對該文件可讀、寫和執(zhí)行,a d m i n組用戶對該文件只讀,可以鍵入:


如果希望自己對該文件可讀、寫和執(zhí)行,對其他所有用戶只讀,我可以用:


如果希望一次設(shè)置目錄下所有文件的權(quán)限,可以用:

chmod 644*


這將使文件屬主和同組用戶都具有讀和寫的權(quán)限,其他用戶只具有讀權(quán)限。


第1章文件安全與權(quán)限7
下載
還可以通過使用- R選項連同子目錄下的文件一起設(shè)置:

chmod -R 664 /usr/local/home/dave/
*


這樣就可以一次將/ u s r / l o c a l / h o m e / d a v e目錄下的所有文件連同各個子目錄下的文件的權(quán)限
全部設(shè)置為文件屬主和同組用戶可讀和寫,其他用戶只讀。使用- R選項一定要謹慎,只有在
需要改變目錄樹下全部文件權(quán)限時才可以使用。

1.4.5 可以選擇使用符號模式或絕對模式
上面的例子中既有絕對模式的,也有符號模式的,我們可以從中看出,如果使用該命令
的符號模式,可以設(shè)置或取消個別權(quán)限位,而在絕對模式中則不然。我個人傾向于使用符號
模式,因為它比絕對模式方便快捷。

1.5 目錄
還記得在前面介紹c h m o d命令時講過,目錄的權(quán)限位和文件有所不同。現(xiàn)在我們來看看其
中的區(qū)別。目錄的讀權(quán)限位意味著可以列出其中的內(nèi)容。寫權(quán)限位意味著可以在該目錄中創(chuàng)
建文件,如果不希望其他用戶在你的目錄中創(chuàng)建文件,可以取消相應(yīng)的寫權(quán)限位。執(zhí)行權(quán)限
位則意味著搜索和訪問該目錄(見表1 - 5、表1 - 6)。

表1-5 目錄權(quán)限

r w x
可以列出該目錄中的文件可以在該目錄中創(chuàng)建或刪除文件可以搜索或進入該目錄
表1-6 目錄權(quán)限舉例
權(quán)限文件屬主同組用戶其他用戶
drwx rwx r- x ( 7 7 5 ) 讀、寫、執(zhí)行讀、寫、執(zhí)行讀、執(zhí)行
drwx r-x r- - ( 7 5 4 ) 讀、寫、執(zhí)行讀、執(zhí)行讀
drwx r-x r- x ( 7 5 5 ) 讀、寫、執(zhí)行讀、執(zhí)行讀、執(zhí)行

如果把同組用戶或其他用戶針對某一目錄的權(quán)限設(shè)置為- - x,那么他們將無法列出該目錄
中的文件。如果該目錄中有一個執(zhí)行位置位的腳本或程序,只要用戶知道它的路徑和文件名,
仍然可以執(zhí)行它。用戶不能夠進入該目錄并不妨礙他的執(zhí)行。

目錄的權(quán)限將會覆蓋該目錄中文件的權(quán)限。例如,如果目錄d o c s具有如下的權(quán)限:

而其中的文件p a y的權(quán)限為:

那么a d m i n組的用戶將無法編輯該文件,因為它所屬的目錄不具有這樣的權(quán)限。

該文件對任何用戶都可讀,但由于它所在的目錄并未給a d m i n組的用戶賦予執(zhí)行權(quán)限,所
以該組的用戶都將無法訪問該目錄,他們將會得到“訪問受限”的錯誤消息。

1.6 suid/guid
我們在前面曾經(jīng)提到過s u i d和g u i d。這種權(quán)限位近年來成為一個棘手的問題。很多系統(tǒng)供



8 第一部分shell
下載
應(yīng)商不允許實現(xiàn)這一位,或者即使它被置位,也完全忽略它的存在,因為它會帶來安全性風(fēng)
險。那么人們?yōu)楹稳绱舜篌@小怪呢?

s u i d意味著如果某個用戶對屬于自己的s h e l l腳本設(shè)置了這種權(quán)限,那么其他用戶在執(zhí)行這
一腳本時也會具有其屬主的相應(yīng)權(quán)限。于是,如果根用戶的某一個腳本設(shè)置了這樣的權(quán)限,
那么其他普通用戶在執(zhí)行它的期間也同樣具有根用戶的權(quán)限。同樣的原則也適用于g u i d,執(zhí)
行相應(yīng)腳本的用戶將具有該文件所屬用戶組中用戶的權(quán)限。

1.6.1 為什么要使用suid/guid
為什么要使用這種類型的腳本?這里有一個很好的例子。我管理著幾個大型的數(shù)據(jù)庫系
統(tǒng),而對它們進行備份需要有系統(tǒng)管理權(quán)限。我寫了幾個腳本,并設(shè)置了它們的g u i d,這樣
我指定的一些用戶只要執(zhí)行這些腳本就能夠完成相應(yīng)的工作,而無須以數(shù)據(jù)庫管理員的身份
登錄,以免不小心破壞了數(shù)據(jù)庫服務(wù)器。通過執(zhí)行這些腳本,他們可以完成數(shù)據(jù)庫備份及其
他管理任務(wù),但是在這些腳本運行結(jié)束之后,他們就又回復(fù)到他們作為普通用戶的權(quán)限。

有相當(dāng)一些U N I X命令也設(shè)置了s u i d和g u i d。如果想找出這些命令,可以進入/ b i n或/ s b i n目
錄,執(zhí)行下面的命令:

$ ls -l | grep '^...s'


上面的命令是用來查找s u i d文件的;

$ ls -l | grep '^...s..s'


上面的命令是用來查找s u i d和g u i d的。

現(xiàn)在我們明白了什么是s u i d,可是如何設(shè)置它呢?下面就來介紹這個問題。如果希望設(shè)置
s u i d,那么就將相應(yīng)的權(quán)限位之前的那一位設(shè)置為4;如果希望設(shè)置g u i d,那么就將相應(yīng)的權(quán)限
位之前的那一位設(shè)置為2;如果希望兩者都置位,那么將相應(yīng)的權(quán)限位之前的那一位設(shè)置為4+2。

一旦設(shè)置了這一位,一個s將出現(xiàn)在x的位置上。記。涸谠O(shè)置s u i d或g u i d的同時,相應(yīng)的
執(zhí)行權(quán)限位必須要被設(shè)置。例如,如果希望設(shè)置g u i d,那么必須要讓該用戶組具有執(zhí)行權(quán)限。

如果想要對文件l o g i n設(shè)置s u i d,它當(dāng)前所具有的權(quán)限為rwx rw- r-- (741) ,需要在使用
c h m o d命令時在該權(quán)限數(shù)字的前面加上一個4,即chmod 4741,這將使該文件的權(quán)限變?yōu)閞 w s
rw- r- -。

$ chmod 4741 logit

論壇徽章:
0
8 [報告]
發(fā)表于 2006-05-25 11:29 |只看該作者
1.6.2 設(shè)置suid/guid的例子
下面給出幾個例子:

表1-7 設(shè)置s u i d / g u i d

命令結(jié)果含義
chmod 4755
chmod 6711
chmod 4764
rws r-x r- x
rws --s --s
rws rw- r-
文件被設(shè)置了s u i d,文件屬主具有讀、寫和執(zhí)行的權(quán)限,所有其
他用戶具有讀和執(zhí)行的權(quán)限
文件被設(shè)置了s u i d和g u i d,文件屬主具有讀、寫和執(zhí)行的權(quán)限,
所有其他用戶具有執(zhí)行的權(quán)限
文件被設(shè)置了s u i d,文件屬主具有讀、寫和執(zhí)行的權(quán)限,同組用
戶具有讀和執(zhí)行的權(quán)限,其他用戶具有讀權(quán)限


第1章文件安全與權(quán)限9
下載
還可以使用符號方式來設(shè)置s u i d / g u i d。如果某個文件具有這樣的權(quán)限:rwx r-x r- x ,那么
可以這樣設(shè)置其s u i d:

chmod u+s <filename>


于是該文件的權(quán)限將變?yōu)椋簉ws r-x r-x

在查找設(shè)置了s u i d的文件時,沒準會看到具有這樣權(quán)限的文件:rwS r-x r- x ,其中S為大寫。
它表示相應(yīng)的執(zhí)行權(quán)限位并未被設(shè)置,這是一種沒有什么用處的s u i d設(shè)置,可以忽略它的存在。

注意,c h m o d命令不進行必要的完整性檢查,可以給某一個沒用的文件賦予任何權(quán)限,但
chmod 命令并不會對所設(shè)置的權(quán)限組合做什么檢查。因此,不要看到一個文件具有執(zhí)行權(quán)限,
就認為它一定是一個程序或腳本。

1.7 chown和chgrp
當(dāng)你創(chuàng)建一個文件時,你就是該文件的屬主。一旦你擁有某個文件,就可以改變它的所
有權(quán),把它的所有權(quán)交給另外一個/ e t c / p a s s w d文件中存在的合法用戶?梢允褂糜脩裘蛴
戶I D號來完成這一操作。在改變一個文件的所有權(quán)時,相應(yīng)的s u i d也將被清除,這是出于安
全性的考慮。只有文件的屬主和系統(tǒng)管理員可以改變文件的所有權(quán)。一旦將文件的所有權(quán)交
給另外一個用戶,就無法再重新收回它的所有權(quán)。如果真的需要這樣做,那么就只有求助于
系統(tǒng)管理員了。

c h o w n命令的一般形式為:

chmod -R -h owner file


- R選項意味著對所有子目錄下的文件也都進行同樣的操作。- h選項意味著在改變符號鏈
接文件的屬主時不影響該鏈接所指向的目標(biāo)文件。
1.7.1 chown舉例
這里給出幾個例子:


文件p r o j e c t的所有權(quán)現(xiàn)在由用戶l o u i s e交給了用戶p a u l i n e。

1.7.2 chgrp舉例
c h g r p命令和c h o w n命令的格式差不多,下面給出一個例子。


用戶p a u l i n e現(xiàn)在把該文件所屬的組由a d m i n變?yōu)閟 y b a d m i n(系統(tǒng)中的另外一個用戶組)。

1.7.3 找出你所屬于的用戶組
如果你希望知道自己屬于哪些用戶組,可以用如下的命令:


10 第一部分shell
下載
或者可以使用i d命令:


1.7.4 找出其他用戶所屬于的組
為了找出其他用戶所屬于的組,可以用如下的命令:


上面的命令告訴我們用戶m a t t y屬于s y b a d m i n、a p p s g e n和p o s t用戶組。

1.8 umask
當(dāng)最初登錄到系統(tǒng)中時,u m a s k命令確定了你創(chuàng)建文件的缺省模式。這一命令實際上和
c h m o d命令正好相反。你的系統(tǒng)管理員必須要為你設(shè)置一個合理的u m a s k值,以確保你創(chuàng)建的
文件具有所希望的缺省權(quán)限,防止其他非同組用戶對你的文件具有寫權(quán)限。

在已經(jīng)登錄之后,可以按照個人的偏好使用u m a s k命令來改變文件創(chuàng)建的缺省權(quán)限。相應(yīng)
的改變直到退出該s h e l l或使用另外的u m a s k命令之前一直有效。

一般來說,u m a s k命令是在/ e t c / p r o f i l e文件中設(shè)置的,每個用戶在登錄時都會引用這個文
件,所以如果希望改變所有用戶的u m a s k,可以在該文件中加入相應(yīng)的條目。如果希望永久性
地設(shè)置自己的u m a s k值,那么就把它放在自己$ H O M E目錄下的. p r o f i l e或. b a s h _ p r o f i l e文件中。

1.8.1 如何計算umask值
u m a s k命令允許你設(shè)定文件創(chuàng)建時的缺省模式,對應(yīng)每一類用戶(文件屬主、同組用戶、
其他用戶)存在一個相應(yīng)的u m a s k值中的數(shù)字。對于文件來說,這一數(shù)字的最大值分別是6。系
統(tǒng)不允許你在創(chuàng)建一個文本文件時就賦予它執(zhí)行權(quán)限,必須在創(chuàng)建后用c h m o d命令增加這一
權(quán)限。目錄則允許設(shè)置執(zhí)行權(quán)限,這樣針對目錄來說,u m a s k中各個數(shù)字最大可以到7。

該命令的一般形式為:

umask nnn


其中n n n為u m a s k置0 0 0 - 7 7 7。

讓我們來看一些例子。

計算出你的u m a s k值:

可以有幾種計算u m a s k值的方法,通過設(shè)置u m a s k值,可以為新創(chuàng)建的文件和目錄設(shè)置缺
省權(quán)限。表1 - 8列出了與權(quán)限位相對應(yīng)的u m a s k值。

在計算u m a s k值時,可以針對各類用戶分別在這張表中按照所需要的文件/目錄創(chuàng)建缺省
權(quán)限查找對應(yīng)的u m a s k值。

例如,u m a s k值002 所對應(yīng)的文件和目錄創(chuàng)建缺省權(quán)限分別為6 6 4和7 7 5。

還有另外一種計算u m a s k值的方法。我們只要記住u m a s k是從權(quán)限中“拿走”相應(yīng)的位即
可。


第1章文件安全與權(quán)限11
下載
表1-8 umask值與權(quán)限

u m a s k 文件目錄
0 6 7
1 6 6
2 4 5
3 4 4
4 2 3
5 2 2
6 0 1
7 0 0

例如,對于u m a s k值0 0 2,相應(yīng)的文件和目錄缺省創(chuàng)建權(quán)限是什么呢?
第一步,我們首先寫下具有全部權(quán)限的模式,即7 7 7 (所有用戶都具有讀、寫和執(zhí)行權(quán)限)。
第二步,在下面一行按照u m a s k值寫下相應(yīng)的位,在本例中是0 0 2。
第三步,在接下來的一行中記下上面兩行中沒有匹配的位。這就是目錄的缺省創(chuàng)建權(quán)限。

稍加練習(xí)就能夠記住這種方法。

第四步,對于文件來說,在創(chuàng)建時不能具有文件權(quán)限,只要拿掉相應(yīng)的執(zhí)行權(quán)限比特即
可。

這就是上面的例子,其中u m a s k值為0 0 2:

1) 文件的最大權(quán)限r(nóng)wx rwx rwx (777)
2) umask值為0 0 2 - - - - - - -w3) 目錄權(quán)限r(nóng)wx rwx r-x (775) 這就是目錄創(chuàng)建缺省權(quán)限
4) 文件權(quán)限r(nóng)w- rw- r-- (664) 這就是文件創(chuàng)建缺省權(quán)限
下面是另外一個例子,假設(shè)這次u m a s k值為0 2 2:
1) 文件的最大權(quán)限r(nóng)wx rwx rwx (777)
2 ) u m a s k 值為0 2 2 - - - -w- -w3) 目錄權(quán)限r(nóng)wx r-x r-x (755) 這就是目錄創(chuàng)建缺省權(quán)限
4) 文件權(quán)限r(nóng)w- r-- r-- (644) 這就是文件創(chuàng)建缺省權(quán)限

1.8.2 常用的umask值
表1 - 9列出了一些u m a s k值及它們所對應(yīng)的目錄和文件權(quán)限。

表1-9 常用的u m a s k值及對應(yīng)的文件和目錄權(quán)限

u m a s k值目錄文件
0 2 2
0 2 7
0 0 2
0 0 6
0 0 7
7 5 5
7 5 0
7 7 5
7 7 1
7 7 0
6 4 4
6 4 0
6 6 4
6 6 0
6 6 0

如果想知道當(dāng)前的umask 值,可以使用u m a s k命令:

論壇徽章:
0
9 [報告]
發(fā)表于 2006-05-25 11:30 |只看該作者
12 第一部分shell
下載
如果想要改變u m a s k值,只要使用u m a s k命令設(shè)置一個新的值即可:

$ umask 002


確認一下系統(tǒng)是否已經(jīng)接受了新的u m a s k值:


在使用u m a s k命令之前一定要弄清楚到底希望具有什么樣的文件/目錄創(chuàng)建缺省權(quán)限。否
則可能會得到一些非常奇怪的結(jié)果;例如,如果將u m a s k值設(shè)置為6 0 0,那么所創(chuàng)建的文件/目
錄的缺省權(quán)限就是0 6 6!

1.9 符號鏈接
存在兩種不同類型的鏈接,軟鏈接和硬鏈接,這里我們只討論軟鏈接。軟鏈接實際上就
是一個指向文件的指針。你將會發(fā)現(xiàn)這種軟鏈接使用起來非常方便。

1.9.1 使用軟鏈接來保存文件的多個映像
下面我們就解釋一下符號鏈接是怎么回事。比方說在/ u s r / l o c a l / a d m i n / s a l e s目錄下有一個
含有銷售信息的文件,銷售部門的每一個人都想看這份文件。你可以在每一位用戶的$ H O M E
目錄下建立一個指向該文件的鏈接,而不是在每個目錄下拷貝一份。這樣當(dāng)需要更改這一文
件時,只需改變一個源文件即可。每個銷售$ H O M E目錄中的鏈接可以起任何名字,不必和源
文件一致。

如果有很多子目錄,而進入這些目錄很費時間,在這種情況下鏈接也非常有用。可以針
對$ H O M E目錄下的一個很深的子目錄創(chuàng)建一個鏈接。還有,比如在安裝一個應(yīng)用程序時,它
的日志被保存到/ u s r / o p t / a p p / l o g目錄下,如果想把它保存在另外一個你認為更方便目錄下,可
以建立一個指向該目錄的鏈接。

該命令的一般形式為:

ln [-s] source_path target_path


其中的路徑可以是目錄也可以是文件。讓我們來看幾個例子。

1.9.2 符號鏈接舉例
假如系統(tǒng)中有4 0個銷售和管理用戶,銷售用戶使用一個銷售應(yīng)用程序,而管理用戶使用
一個管理應(yīng)用程序。我作為系統(tǒng)管理員該怎么做呢?首先刪除它們各自$ H O M E目錄下的所
有. p r o f i l e文件。然后在/ u s r / l o c a l / m e n u s /目錄下創(chuàng)建兩個p r o f i l e文件,一個是s a l e s . p r o f i l e,一
個是a d m i n . p r o f i l e,它們分別為銷售和管理人員提供了所需的環(huán)境,并引導(dǎo)他們進入相應(yīng)的應(yīng)
用程序,F(xiàn)在我在所有銷售人員的$ H O M E目錄下分別創(chuàng)建一個指向s a l e s . p r o f i l e的鏈接,在所
有管理人員的$ H O M E目錄下分別創(chuàng)建一個指向a d m i n . p r o f i l e文件的鏈接。注意,不必在上面
命令格式中的t a rg e t _ p a t h端創(chuàng)建相應(yīng)文件,如果不存在這樣一個文件,l n命令會自動創(chuàng)建該文


第1章文件安全與權(quán)限13
下載
件。下面就是我對銷售人員m a t t y所做的操作。


(你所看到的可能會與此稍有差別)。
這就是我所要做的全部工作;對于管理人員也是如此。而且如果需要作任何修改的話,
只要改變銷售和管理人員的p r o f i l e文件即可,而不必對4 0個用戶逐一進行修改。

下面是另外一個例子。我所管理的系統(tǒng)中有一個網(wǎng)絡(luò)監(jiān)視器,它將日志寫在/ u s r / o p t /
m o n i t o r / r e g s t a r目錄下,但其他所有的日志都保存在/ v a r / a d m / l o g s目錄下,這樣只需在該目錄
下建立一個指向原有文件的鏈接就可以在一個地方看所有的日志了,而不必花費很多時間分
別進入各個相應(yīng)的目錄。下面就是所用的鏈接命令:

$ ln -s /usr/opt/monitor/regstar/reg.log /var/adm/logs/monitor.log


如果鏈接太多的話,可以刪掉一些,不過切記不要刪除源文件。

不管是否在同一個文件系統(tǒng)中,都可以創(chuàng)建鏈接。在創(chuàng)建鏈接的時候,不要忘記在原有
目錄設(shè)置執(zhí)行權(quán)限。鏈接一旦創(chuàng)建,鏈接目錄將具有權(quán)限7 7 7或rwx rwx rwx,但是實際的原
有文件的權(quán)限并未改變。

在新安裝的系統(tǒng)上,通常要進行這樣的操作,在/ v a r目錄中創(chuàng)建一個指向/ t m p目錄的鏈接,
因為有些應(yīng)用程序認為存在/ v a r / t m p目錄(然而它實際上并不存在),有些應(yīng)用程序在該目錄中
保存一些臨時文件。為了使所有的臨時文件都放在一個地方,可以使用l n命令在/ v a r目錄下建
立一個指向/ t m p目錄的鏈接。


現(xiàn)在如果我在/ v a r目錄中列文件,就能夠看到剛才建立的鏈接:


1.10 小結(jié)
本章介紹了一些有關(guān)文件安全的基本概念。如果這些命令能夠使用得當(dāng)而且使用得比較
謹慎,應(yīng)該不會有什么問題。手指輕輕一敲就有可能輸入chmod -R這樣的命令,它將改變整
個文件系統(tǒng)的權(quán)限,如果沒有做備份的話,沒有幾年的時間恐怕是無法恢復(fù)了,所以在輸入
這些命令時,千萬不要在手指上貼膏藥!

是否使用設(shè)置了s u i d的腳本完全取決于你自己。如果使用的話,一定要確保能夠監(jiān)控它的
使用,而且不要以根用戶身份設(shè)置s u i d。

論壇徽章:
0
10 [報告]
發(fā)表于 2006-05-25 11:30 |只看該作者
置頂?shù)奈母颩M的基礎(chǔ)12篇,不知道是不是學(xué)習(xí)這本書的學(xué)習(xí)心得,相同的地方很多,都很不錯。
可以看的書很多,不過關(guān)鍵是看書的人
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP