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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

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

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

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

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

論壇徽章:
0
2 [報(bào)告]
發(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   符號(hào)模式        4
1.4.2   chmod命令舉例        5
1.4.3   絕對(duì)模式        5
1.4.4   chmod命令的其他例子        6
1.4.5   可以選擇使用符號(hào)模式或絕對(duì)模式        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   如何計(jì)算umask值        10
1.8.2   常用的umask值        11
1.9   符號(hào)鏈接        12
1.9.1   使用軟鏈接來保存文件的多個(gè)映像        12
1.9.2   符號(hào)鏈接舉例        12
1.10   小結(jié)        13
第2章   使用find和xargs        14
2.1   find命令選項(xiàng)        14
2.1.1   使用name選項(xiàng)        15
2.1.2   使用perm選項(xiàng)        16
2.1.3   忽略某個(gè)目錄        16
2.1.4   使用user和nouser選項(xiàng)        16
2.1.5   使用group和nogroup選項(xiàng)        16
2.1.6   按照更改時(shí)間查找文件        17
2.1.7   查找比某個(gè)文件新或舊的文件        17
2.1.8   使用type選項(xiàng)        17
2.1.9   使用size選項(xiàng)        18
2.1.10   使用depth選項(xiàng)        18
2.1.11   使用mount選項(xiàng)        18
2.1.12   使用cpio選項(xiàng)        18
2.1.13   使用exec或ok來執(zhí)行shell命令        19
2.1.14   find命令的例子        20
2.2   xargs        20
2.3   小結(jié)        21
第3章   后臺(tái)執(zhí)行命令        22
3.1   cron和crontab        22
3.1.1   crontab的域        22
3.1.2   crontab條目舉例        23
3.1.3   crontab命令選項(xiàng)        23
3.1.4   創(chuàng)建一個(gè)新的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    清除一個(gè)作業(yè)        27
3.3   &命令        27
3.3.1   向后臺(tái)提交命令        28
3.3.2   用ps命令查看進(jìn)程        28
3.3.3   殺死后臺(tái)進(jìn)程        28
3.4   nohup命令        29
3.4.1  使用nohup命令提交作業(yè)        29
3.4.2   一次提交幾個(gè)作業(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)準(zhǔn)輸入、輸出和錯(cuò)誤        40
5.6.1   標(biāo)準(zhǔn)輸入        40
5.6.2   標(biāo)準(zhǔn)輸出        40
5.6.3   標(biāo)準(zhǔn)錯(cuò)誤        40
5.7   文件重定向        40
5.7.1   重定向標(biāo)準(zhǔn)輸出        41
5.7.2   重定向標(biāo)準(zhǔn)輸入        42
5.7.3   重定向標(biāo)準(zhǔn)錯(cuò)誤        42
5.8   結(jié)合使用標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤        43
5.9   合并標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤        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章  正則表達(dá)式介紹        49
7.1  使用句點(diǎn)匹配單字符        50
7.2   在行首以^匹配字符串或字符序列        50
7.3   在行尾以$匹配字符串或字符        51
7.4   使用*匹配字符串中的單字符或其重復(fù)
序列        51
7.5   使用\屏蔽一個(gè)特殊字符的含義        52
7.6   使用[]匹配一個(gè)范圍或集合        52
7.7   使用\{\}匹配模式結(jié)果出現(xiàn)的次數(shù)        53
7.8   小結(jié)        55
第8章   grep家族        56
8.1   grep        57
8.1.1   雙引號(hào)引用        57
8.1.2   grep選項(xiàng)        57
8.1.3   查詢多個(gè)文件        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和正則表達(dá)式        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)機(jī)率        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   對(duì)一個(gè)字符串使用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   模式和動(dòng)作        67
9.2.2   域和記錄        67
9.2.3   awk中正則表達(dá)式及其操作        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和正則表達(dá)式        91
10.4   基本sed編程舉例        91
10.4.1   使用p(rint)顯示行        91
10.4.2   打印范圍        91
10.4.3   打印模式        92
10.4.4   使用模式和行號(hào)進(jìn)行查詢        92
10.4.5   匹配元字符        92
10.4.6   顯示整個(gè)文件        92
10.4.7   任意字符        92
10.4.8   首行        92
10.4.9   最后一行        93
10.4.10   打印行號(hào)        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   處理報(bào)文輸出        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選項(xiàng)        104
11.1.3   保存輸出        105
11.1.4   sort啟動(dòng)方式        105
11.1.5   sort對(duì)域的參照方式        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   將兩個(gè)分類文件合并        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   匹配多于一個(gè)字符        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   測(cè)試變量是否已經(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)出到子進(jìn)程        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章   引號(hào)        146
15.1   引用必要性        146
15.2   雙引號(hào)        146
15.3   單引號(hào)        147
15.4   反引號(hào)        147
15.5   反斜線        148
15.6   小結(jié)        149
第四部分   基礎(chǔ)shell編程
第16章   shell腳本介紹        151
16.1   使用shell腳本的原因        151
16.2   腳本內(nèi)容        151
16.3   運(yùn)行一段腳本        152
16.4   小結(jié)        153
第17章   條件測(cè)試        154
17.1   測(cè)試文件狀態(tài)        154
17.2   測(cè)試時(shí)使用邏輯操作符        155
17.3   字符串測(cè)試        155
17.4   測(cè)試數(shù)值        156
17.5   expr用法        157
17.5.1   增量計(jì)數(shù)        158
17.5.2   數(shù)值測(cè)試        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   簡(jiǎn)單的if語句        162
18.3.2   變量值測(cè)試        162
18.3.3   grep輸出檢查        163
18.3.4   用變量測(cè)試grep輸出        163
18.3.5   文件拷貝輸出檢查        164
18.3.6   當(dāng)前目錄測(cè)試        164
18.3.7   文件權(quán)限測(cè)試        165
18.3.8   測(cè)試傳遞到腳本中的參數(shù)        165
18.3.9   決定腳本是否為交互模式        165
18.3.10   簡(jiǎn)單的if else語句        166
18.3.11  變量設(shè)置測(cè)試        166
18.3.12   檢測(cè)運(yùn)行腳本的用戶        166
18.3.13   將腳本參數(shù)傳入系統(tǒng)命令        167
18.3.14   null:命令用法        167
18.3.15   測(cè)試目錄創(chuàng)建結(jié)果        168
18.3.16   另一個(gè)拷貝實(shí)例        169
18.3.17   多個(gè)if語句        169
18.3.18   測(cè)試和設(shè)置環(huán)境變量        169
18.3.19   檢測(cè)最后命令狀態(tài)        170
18.3.20   增加和檢測(cè)整數(shù)值        171
18.3.21   簡(jiǎn)單的安全登錄腳本        172
18.3.22   elif用法        173
18.3.23   使用elif進(jìn)行多條件檢測(cè)        173
18.3.24   多文件位置檢測(cè)        174
18.4   case語句        175
18.4.1   簡(jiǎn)單的case語句        175
18.4.2   對(duì)匹配模式使用|        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   簡(jiǎn)單的for循環(huán)        181
18.5.2   打印字符串列表        181
18.5.3   對(duì)for循環(huán)使用ls命令        181
18.5.4   對(duì)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)計(jì)數(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   簡(jiǎn)單的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   簡(jiǎn)單的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   帶有測(cè)試條件的文件處理        190
18.7.6   掃描文件行來進(jìn)行數(shù)目統(tǒng)計(jì)        191
18.7.7   每次讀一對(duì)記錄        193
18.7.8   忽略#字符        193
18.7.9   處理格式化報(bào)表        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ù)返回值測(cè)試        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命令簡(jiǎn)單用法        225
20.1.2   命令行輸入的最后一個(gè)參數(shù)        225
20.1.3   使用shift處理文件轉(zhuǎn)換        226
20.2   getopts        229
20.2.1   getopts腳本實(shí)例        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   一般錯(cuò)誤        274
23.1.1   循環(huán)錯(cuò)誤        274
23.1.2   典型的漏寫引號(hào)        274
23.1.3   測(cè)試錯(cuò)誤        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
第五部分   高級(jí)shell編程技巧
第25章   深入討論<<        281
25.1   快速創(chuàng)建一個(gè)文件        281
25.2   快速創(chuàng)建打印文檔        281
25.3   自動(dòng)選擇菜單        282
25.4   自動(dòng)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)建唯一的臨時(shí)文件        290
26.2   信號(hào)        291
26.2.1   殺死一個(gè)進(jìn)程        292
26.2.2   檢測(cè)信號(hào)        293
26.3   trap        294
26.3.1   捕獲信號(hào)并采取相應(yīng)的行動(dòng)        294
26.3.2   捕獲信號(hào)并采取行動(dòng)的另
一個(gè)例子        295
26.3.3   鎖住終端        297
26.3.4   忽略信號(hào)        298
26.4   eval        300
26.4.1   執(zhí)行含有字符串的命令        300
26.4.2   給每個(gè)值一個(gè)變量名        301
26.5   logger命令        302
26.5.1   使用logger命令        303
26.5.2   在腳本中使用logger命令        303
26.6   小結(jié)        305
第27章   幾個(gè)腳本例子        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章   運(yùn)行級(jí)別腳本        318
28.1   怎么知道系統(tǒng)中是否含有運(yùn)行
級(jí)別目錄        318
28.2   確定當(dāng)前的運(yùn)行級(jí)別        319
28.3   快速熟悉inittab        319
28.4   運(yùn)行級(jí)別        320
28.4.1   各種運(yùn)行級(jí)別        321
28.4.2   運(yùn)行級(jí)別腳本的格式        321
28.4.3   安裝運(yùn)行級(jí)別腳本        322
28.5   使用inittab來啟動(dòng)應(yīng)用程序        323
28.6   啟動(dòng)和停止服務(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   訪問計(jì)數(shù)器        330
29.4.5   使用一個(gè)鏈接來顯示當(dāng)前Web
環(huán)境變量        332
29.4.6   其他常用的環(huán)境變量        334
29.5   get和post方法簡(jiǎn)介        335
29.5.1   get方法        335
29.5.2   post方法        340
29.5.3   填充列表項(xiàng)        347
29.5.4   自動(dòng)刷新頁面        348
29.6   小結(jié)        349
附錄   常用shell命令        350

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

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

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

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

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

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

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

1) 文件屬主,創(chuàng)建該文件的用戶
。
2) 同組用戶,擁有該文件的用戶組中的任何用戶
。
3) 其他用戶,即不屬于擁有該文件的用戶組的某一用戶
。


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

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


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

total 4232:這一行告訴我們?cè)撃夸浿兴形募嫉目臻g
。


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

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

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

d 目錄
。
l 符號(hào)鏈接(指向另一個(gè)文件)

s 套接字文件
。
b 塊設(shè)備文件
。
c 字符設(shè)備文件

p 命名管道文件
。


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

$ touch myfile


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



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

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

r w -r- -r—

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

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

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

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

1) 文件屬主所擁有的權(quán)限
。
2) 文件屬主缺省組(一個(gè)用戶可以屬于很多的組)所擁有的權(quán)限

3) 系統(tǒng)中其他用戶的權(quán)限
。
在每一組字符中含有三個(gè)權(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)建的時(shí)候并未給屬主賦予執(zhí)行權(quán)限,在用戶創(chuàng)建文件時(shí),
系統(tǒng)不會(huì)自動(dòng)地設(shè)置執(zhí)行權(quán)限位。這是出于加強(qiáng)系統(tǒng)安全的考慮。必須手工修改這一權(quán)限位:
后面講到u m a s k命令時(shí),你就會(huì)明白為什么沒有獲得執(zhí)行權(quán)限。然而,你可以針對(duì)目錄設(shè)置執(zhí)
行權(quán)限位,但這與文件執(zhí)行權(quán)限位的意義有所不同,這一點(diǎn)我們將在后面討論。

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

更令人迷惑的是,對(duì)于文件屬主來說,在只有讀權(quán)限位被置位的情況下,仍然可以通過
文件重定向的方法向該文件寫入。過一會(huì)兒我們就會(huì)看到,能否刪除一個(gè)文件還依賴于該文
件所在目錄權(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 [報(bào)告]
發(fā)表于 2006-05-25 11:26 |只看該作者
原帖由 大螞蟻 于 2006-5-25 11:22 發(fā)表
廣告嫌疑
這本書不錯(cuò),我看的第一本就是這本書了,錯(cuò)誤不少,但都是很淺顯的錯(cuò)誤。


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

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

論壇徽章:
0
6 [報(bào)告]
發(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è)置,因?yàn)槿魏斡脩舳伎梢詫懭朐撐募?br />
1.4 改變權(quán)限位
對(duì)于屬于你的文件,可以按照自己的需要改變其權(quán)限位的設(shè)置。在改變文件權(quán)限位設(shè)置
之前,要仔細(xì)地想一想有哪些用戶需要訪問你的文件(包括你的目錄)?梢允褂胏 h m o d命令來
改變文件權(quán)限位的設(shè)置。這一命令有比較短的絕對(duì)模式和長(zhǎng)一些的符號(hào)模式。我們先來看一
看符號(hào)模式。

1.4.1 符號(hào)模式
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 針對(duì)文件屬主、同組用戶及其他用戶的操作

*在列文件或目錄時(shí),有時(shí)會(huì)遇到“t”位!皌”代表了粘性位。如果在一個(gè)目錄上出現(xiàn)
“t”位,這就意味著該目錄中的文件只有其屬主才可以刪除,即使某個(gè)同組用戶具有和屬主
同等的權(quán)限。不過有的系統(tǒng)在這一規(guī)則上并不十分嚴(yán)格。
如果在文件列表時(shí)看到“t”,那么這就意味著該腳本或程序在執(zhí)行時(shí)會(huì)被放在交換區(qū)(虛
存)。不過由于當(dāng)今的內(nèi)存價(jià)格如此之低,大可不必理會(huì)文件的“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文件時(shí),它具有這樣的權(quán)限:

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

$ chmod u+x o-w myfile


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

$ chmod u+x dt


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

chmod [mode] file


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

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


八進(jìn)制數(shù)含義

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

八進(jìn)制數(shù)含義

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

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

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

論壇徽章:
0
7 [報(bào)告]
發(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
有一個(gè)計(jì)算八進(jìn)制權(quán)限表示的更好辦法,如表1 - 4所示:

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

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

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

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

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

命令結(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)限


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


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


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

chmod 644*


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


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

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


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

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

1.5 目錄
還記得在前面介紹c h m o d命令時(shí)講過,目錄的權(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)建或刪除文件可以搜索或進(jìn)入該目錄
表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í)行

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

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

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

那么a d m i n組的用戶將無法編輯該文件,因?yàn)樗鶎俚哪夸洸痪哂羞@樣的權(quán)限。

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

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



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

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

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

有相當(dāng)一些U N I X命令也設(shè)置了s u i d和g u i d。如果想找出這些命令,可以進(jìn)入/ 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è)置它呢?下面就來介紹這個(gè)問題。如果希望設(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è)置了這一位,一個(gè)s將出現(xiàn)在x的位置上。記。涸谠O(shè)置s u i d或g u i d的同時(shí),相應(yīng)的
執(zhí)行權(quán)限位必須要被設(shè)置。例如,如果希望設(shè)置g u i d,那么必須要讓該用戶組具有執(zhí)行權(quán)限。

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

$ chmod 4741 logit

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

表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
下載
還可以使用符號(hào)方式來設(shè)置s u i d / g u i d。如果某個(gè)文件具有這樣的權(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的文件時(shí),沒準(zhǔn)會(huì)看到具有這樣權(quán)限的文件:rwS r-x r- x ,其中S為大寫。
它表示相應(yīng)的執(zhí)行權(quán)限位并未被設(shè)置,這是一種沒有什么用處的s u i d設(shè)置,可以忽略它的存在。

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

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

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

chmod -R -h owner file


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


文件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命令的格式差不多,下面給出一個(gè)例子。


用戶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)中的另外一個(gè)用戶組)。

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

在已經(jīng)登錄之后,可以按照個(gè)人的偏好使用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è)置的,每個(gè)用戶在登錄時(shí)都會(huì)引用這個(gè)文
件,所以如果希望改變所有用戶的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 如何計(jì)算umask值
u m a s k命令允許你設(shè)定文件創(chuàng)建時(shí)的缺省模式,對(duì)應(yīng)每一類用戶(文件屬主、同組用戶、
其他用戶)存在一個(gè)相應(yīng)的u m a s k值中的數(shù)字。對(duì)于文件來說,這一數(shù)字的最大值分別是6。系
統(tǒng)不允許你在創(chuàng)建一個(gè)文本文件時(shí)就賦予它執(zhí)行權(quán)限,必須在創(chuàng)建后用c h m o d命令增加這一
權(quán)限。目錄則允許設(shè)置執(zhí)行權(quán)限,這樣針對(duì)目錄來說,u m a s k中各個(gè)數(shù)字最大可以到7。

該命令的一般形式為:

umask nnn


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

讓我們來看一些例子。

計(jì)算出你的u m a s k值:

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

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

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

還有另外一種計(jì)算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

例如,對(duì)于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í)就能夠記住這種方法。

第四步,對(duì)于文件來說,在創(chuàng)建時(shí)不能具有文件權(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)限
下面是另外一個(gè)例子,假設(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值及它們所對(duì)應(yīng)的目錄和文件權(quán)限。

表1-9 常用的u m a s k值及對(duì)應(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 [報(bào)告]
發(fā)表于 2006-05-25 11:30 |只看該作者
12 第一部分shell
下載
如果想要改變u m a s k值,只要使用u m a s k命令設(shè)置一個(gè)新的值即可:

$ umask 002


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


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

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

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

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

該命令的一般形式為:

ln [-s] source_path target_path


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

1.9.2 符號(hào)鏈接舉例
假如系統(tǒng)中有4 0個(gè)銷售和管理用戶,銷售用戶使用一個(gè)銷售應(yīng)用程序,而管理用戶使用
一個(gè)管理應(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)建兩個(gè)p r o f i l e文件,一個(gè)是s a l e s . p r o f i l e,一
個(gè)是a d m i n . p r o f i l e,它們分別為銷售和管理人員提供了所需的環(huán)境,并引導(dǎo)他們進(jìn)入相應(yīng)的應(yīng)
用程序,F(xiàn)在我在所有銷售人員的$ H O M E目錄下分別創(chuàng)建一個(gè)指向s a l e s . p r o f i l e的鏈接,在所
有管理人員的$ H O M E目錄下分別創(chuàng)建一個(gè)指向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)文件,如果不存在這樣一個(gè)文件,l n命令會(huì)自動(dòng)創(chuàng)建該文


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


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

下面是另外一個(gè)例子。我所管理的系統(tǒng)中有一個(gè)網(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目錄下,這樣只需在該目錄
下建立一個(gè)指向原有文件的鏈接就可以在一個(gè)地方看所有的日志了,而不必花費(fèi)很多時(shí)間分
別進(jìn)入各個(gè)相應(yīng)的目錄。下面就是所用的鏈接命令:

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


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

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

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


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


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

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

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

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP