<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Unix 傳統中的操作系統不同于那些 MS-DOS 傳統中的系統,區別在于它們不僅是多任務系統,而且也是 多用戶系統。這到底意味著什么?它意味著多個用戶可以在同一時間使用同一臺計算機。然而一個 典型的計算機可能只有一個鍵盤和一個監視器,但是它仍然可以被多個用戶使用。例如,如果一臺 計算機連接到一個網絡或者因特網,那么遠程用戶通過 ssh(安全 shell)可以登錄并操縱這臺電腦。 事實上,遠程用戶也能運行圖形界面應用程序,并且圖形化的輸出結果會出現在遠端的顯示器上。 X 窗口系統把這個作為基本設計理念的一部分,并支持這種功能。 Linux 系統的多用戶性能,不是最近的“創新”,而是一種特性,它深深地嵌入到了 Linux 操作系統的 設計過程中。想一下 Unix 系統的誕生環境,這會很有意義。多年前,在個人電腦出現之前,計算機 都是大型的,昂貴的,集中化的。一個典型的大學計算機系統,例如,是由坐落在一座建筑中的一臺 大型中央計算機和許多散布在校園各處的終端機組成,每個終端都連接到這臺大型中央計算機。 這臺計算機可以同時支持很多用戶。 為了使多用戶特性付諸實踐,那么必須發明一種方法來阻止用戶彼此之間受到影響。畢竟,一個 用戶的行為不能導致計算機崩潰,也不能亂動屬于另一個用戶的文件。 在這一章中,我們將看看這一系統安全的本質部分,會介紹以下命令: > * id – 顯示用戶身份號 > * chmod – 更改文件模式 > * umask – 設置默認的文件權限 > * su – 以另一個用戶的身份來運行 shell > * sudo – 以另一個用戶的身份來執行命令 > * chown – 更改文件所有者 > * chgrp – 更改文件組所有權 > * passwd – 更改用戶密碼 ## 擁有者,組成員,和其他人 在第四章探究文件系統時,當我們試圖查看一個像/etc/shadow 那樣的文件的時候,我們會遇到一個問題。 ~~~ [me@linuxbox ~]$ file /etc/shadow /etc/shadow: regular file, no read permission [me@linuxbox ~]$ less /etc/shadow /etc/shadow: Permission denied ~~~ 產生這種錯誤信息的原因是,作為一個普通用戶,我們沒有權限來讀取這個文件。 在 Unix 安全模型中,一個用戶可能擁有文件和目錄。當一個用戶擁有一個文件或目錄時, 用戶對這個文件或目錄的訪問權限擁有控制權。用戶,反過來,又屬于一個由一個或多個 用戶組成的用戶組,用戶組成員由文件和目錄的所有者授予對文件和目錄的訪問權限。除了 對一個用戶組授予權限之外,文件所有者可能會給每個人一些權限,在 Unix 術語中,每個人 是指整個世界。可以用 id 命令,來找到關于你自己身份的信息: ~~~ [me@linuxbox ~]$ id uid=500(me) gid=500(me) groups=500(me) ~~~ 讓我們看一下輸出結果。當用戶創建帳戶之后,系統會給用戶分配一個號碼,叫做用戶 ID 或者 uid,然后,為了符合人類的習慣,這個 ID 映射到一個用戶名。系統又會給這個用戶 分配一個原始的組 ID 或者是 gid,這個 gid 可能屬于另外的組。上面的例子來自于 Fedora 系統, 比方說 Ubuntu 的輸出結果可能看起來有點兒不同: ~~~ [me@linuxbox ~]$ id uid=1000(me) gid=1000(me) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(v ideo),46(plugdev),108(lpadmin),114(admin),1000(me) ~~~ 正如我們能看到的,兩個系統中用戶的 uid 和 gid 號碼是不同的。原因很簡單,因為 Fedora 系統 從500開始進行普通用戶帳戶的編號,而 Ubuntu 從1000開始。我們也能看到 Ubuntu 的用戶屬于 更多的用戶組。這和 Ubuntu 管理系統設備和服務權限的方式有關系。 那么這些信息來源于哪里呢?像 Linux 系統中的許多東西一樣,來自一系列的文本文件。用戶帳戶 定義在/etc/passwd 文件里面,用戶組定義在/etc/group 文件里面。當用戶帳戶和用戶組創建以后, 這些文件隨著文件/etc/shadow 的變動而修改,文件/etc/shadow 包含了關于用戶密碼的信息。 對于每個用戶帳號,文件/etc/passwd 定義了用戶(登錄)名,uid,gid,帳號的真實姓名,家目錄, 和登錄 shell。如果你查看一下文件/etc/passwd 和文件/etc/group 的內容,你會注意到除了普通 用戶帳號之外,還有超級用戶(uid 0)帳號,和各種各樣的系統用戶。 在下一章中,當我們討論進程時,你會知道這些其他的“用戶”是誰,實際上,他們相當忙碌。 然而許多像 Unix 的系統會把普通用戶分配到一個公共的用戶組中,例如“users”,現在的 Linux 會創建一個獨一無二的,只有一個成員的用戶組,這個用戶組與用戶同名。這樣使某種類型的 權限分配更容易些。 ## 讀取,寫入,和執行 對于文件和目錄的訪問權力是根據讀訪問,寫訪問,和執行訪問來定義的。如果我們看一下 ls 命令的輸出結果,我們能得到一些線索,這是怎樣實現的: ~~~ [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt ~~~ 列表的前十個字符是文件的屬性。這十個字符的第一個字符表明文件類型。下表是你可能經常看到 的文件類型(還有其它的,不常見類型): 表10-1: 文件類型 | 屬性 | 文件類型 | |--------|-------| | - | 一個普通文件 | | d | 一個目錄 | | l | 一個符號鏈接。注意對于符號鏈接文件,剩余的文件屬性總是"rwxrwxrwx",而且都是 虛擬值。真正的文件屬性是指符號鏈接所指向的文件的屬性。 | | c | 一個字符設備文件。這種文件類型是指按照字節流,來處理數據的設備。 比如說終端機,或者調制解調器 | | b | 一個塊設備文件。這種文件類型是指按照數據塊,來處理數據的設備,例如一個硬盤,或者 CD-ROM 盤。 | 剩下的九個字符,叫做文件模式,代表著文件所有者,文件組所有者,和其他人的讀,寫,執行權限。 當設置文件模式后,r,w,x 模式屬性對文件和目錄會產生以下影響: ## chmod - 更改文件模式 更改文件或目錄的模式(權限),可以利用 chmod 命令。注意只有文件的所有者或者超級用戶才 能更改文件或目錄的模式。chmod 命令支持兩種不同的方法來改變文件模式:八進制數字表示法,或 符號表示法。首先我們討論一下八進制數字表示法。 > 究竟什么是八進制? > > 八進制(以8為基數),和她的親戚,十六進制(以16為基數)都是數字系統,通常 被用來表示計算機中的數字。我們人類,因為這個事實(或者至少大多數人)天生具有 十個手指,利用以10為基數的數字系統來計數。計算機,從另一方面講,生來只有一個 手指,因此它以二進制(以2為基數)來計數。它們的數字系統只有兩個數值,0和1。 因此在二進制中,計數看起來像這樣: > > 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011… > > 在八進制中,逢八進一,用數字0到7來計數,像這樣: > > 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21… > > 十六進制中,使用數字0到9,加上大寫字母”A”到”F”來計數,逢16進一: > > 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13… > > 雖然我們能知道二進制的意義(因為計算機只有一個手指),但是八進制和十六進制對什么 好處呢? 答案是為了人類的便利。許多時候,在計算機中,一小部分數據以二進制的形式表示。 以 RGB 顏色為例來說明。大多數的計算機顯示器,每個像素由三種顏色組成:8位紅色,8位綠色, 8位藍色。這樣,一種可愛的中藍色就由24位數字來表示: > > 010000110110111111001101 > > 我不認為你每天都喜歡讀寫這類數字。另一種數字系統對我們更有幫助。每個十六進制 數字代表四個二進制。在八進制中,每個數字代表三個二進制數字。那么代表中藍色的24位 二進制能夠壓縮成6位十六進制數: > > 436FCD > > 因為十六進制中的兩個數字對應二進制的8位數字,我們可以看到”43“代表紅色,“6F” 代表綠色,“CD”代表藍色。 > > 現在,十六進制表示法(經常叫做“hex”)比八進制更普遍,但是我們很快會看到,用八進制 來表示3個二進制數非常有用處… 通過八進制表示法,我們使用八進制數字來設置所期望的權限模式。因為每個八進制數字代表了 3個二進制數字,這種對應關系,正好映射到用來存儲文件模式所使用的方案上。下表展示了 我們所要表達的意思: | Octal | Binary | File Mode | |--------|-------|-----------| | 0 | 000 | --- | | 1 | 001 | --x | | 2 | 010 | -w- | | 3 | 011 | -wx | | 4 | 100 | r-- | | 5 | 101 | r-x | | 6 | 110 | rw- | | 7 | 111 | rwx | 通過使用3個八進制數字,我們能夠設置文件所有者,用戶組,和其他人的權限: ~~~ [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw------- 1 me me 0 2008-03-06 14:52 foo.txt ~~~ 通過傳遞參數 “600”,我們能夠設置文件所有者的權限為讀寫權限,而刪除用戶組和其他人的所有 權限。雖然八進制到二進制的映射看起來不方便,但通常只會用到一些常見的映射關系: 7 (rwx),6 (rw-),5 (r-x),4 (r--),和 0 (---)。 chmod 命令支持一種符號表示法,來指定文件模式。符號表示法分為三部分:更改會影響誰, 要執行哪個操作,要設置哪種權限。通過字符 “u”,“g”,“o”,和 “a” 的組合來指定 要影響的對象,如下所示: 表10-4: chmod 命令符號表示法 ||| |-----|-----------| | u | "user"的簡寫,意思是文件或目錄的所有者。 | | g | 用戶組。 | | o | "others"的簡寫,意思是其他所有的人。 | | a | "all"的簡寫,是"u", "g"和“o”三者的聯合。 | 如果沒有指定字符,則假定使用”all”。執行的操作可能是一個“+”字符,表示加上一個權限, 一個“-”,表示刪掉一個權限,或者是一個“=”,表示只有指定的權限可用,其它所有的權限被刪除。 權限由 “r”,“w”,和 “x” 來指定。這里是一些符號表示法的實例: 表10-5: chmod 符號表示法實例 ||| |-----|-----------| | u+x | 為文件所有者添加可執行權限。 | | u-x | 刪除文件所有者的可執行權限。 | | +x | 為文件所有者,用戶組,和其他所有人添加可執行權限。 等價于 a+x。 | | o-rw | 除了文件所有者和用戶組,刪除其他人的讀權限和寫權限。 | | go=rw | 給群組的主人和任意文件擁有者的人讀寫權限。如果群組的主人或全局之前已經有了執行的權限,他們將被移除。 | | u+x,go=rw | 給文件擁有者執行權限并給組和其他人讀和執行的權限。多種設定可以用逗號分開。 | 一些人喜歡使用八進制表示法,而另些人真正地喜歡符號表示法。符號表示法的優點是, 允許你設置文件模式的單個組成部分的屬性,而沒有影響其他的部分。 看一下 chmod 命令的手冊頁,可以得到更詳盡的信息和 chmod 命令的各個選項。要注意”--recursive”選項: 它可以同時作用于文件和目錄,所以它并不是如我們期望的那么有用處,因為我們很少希望文件和 目錄擁有同樣的權限。 ## 借助 GUI 來設置文件模式 現在我們已經知道了怎樣設置文件和目錄的權限,這樣我們就可以更好的理解 GUI 中的設置 權限對話框。在 Nautilus (GNOME)和 Konqueror (KDE)中,右擊一個文件或目錄圖標將會彈出一個屬性對話框。下面這個例子來自 KDE 3.5: ![2015-06-23/558922ba407cd](https://box.kancloud.cn/2015-06-23_558922ba407cd.png) 圖 2: KDE 3.5 文件屬性對話框 從這個對話框中,我們看到可以設置文件所有者,用戶組,和其他人的訪問權限。 在 KDE 中,右擊”Advanced Permissions”按鈕,會打開另一個對話框,這個對話框允許 你單獨設置各個模式屬性。這也可以通過命令行來理解! ## umask - 設置默認權限 當創建一個文件時,umask 命令控制著文件的默認權限。umask 命令使用八進制表示法來表達 從文件模式屬性中刪除一個位掩碼。大家看下面的例子: ~~~ [me@linuxbox ~]$ rm -f foo.txt [me@linuxbox ~]$ umask 0002 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2008-03-06 14:53 foo.txt ~~~ 首先,刪除文件 foo.txt,以此確定我們從新開始。下一步,運行不帶參數的 umask 命令, 看一下當前的掩碼值。響應的數值是0002(0022是另一個常用值),這個數值是掩碼的八進制 表示形式。下一步,我們創建文件 foo.txt,并且保留它的權限。 我們可以看到文件所有者和用戶組都得到讀權限和寫權限,而其他人只是得到讀權限。 其他人沒有得到寫權限的原因是由掩碼值決定的。重復我們的實驗,這次自己設置掩碼值: ~~~ [me@linuxbox ~]$ rm foo.txt [me@linuxbox ~]$ umask 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-rw- 1 me me 0 2008-03-06 14:58 foo.txt ~~~ 當掩碼設置為0000(實質上是關掉它)之后,我們看到其他人能夠讀寫文件。為了弄明白這是 怎么回事,我們需要看一下掩碼的八進制形式。把掩碼展開成二進制形式,然后與文件屬性 相比較,看看有什么區別: ||| |------|-----------| | Original file mode | --- rw- rw- rw- | | Mask | 000 000 000 010 | | Result | --- rw- rw- r-- | 此刻先忽略掉開頭的三個零(我們一會兒再討論),注意掩碼中若出現一個數字1,則 刪除文件模式中和這個1在相同位置的屬性,在這是指其他人的寫權限。這就是掩碼要完成的 任務。掩碼的二進制形式中,出現數字1的位置,相應地關掉一個文件模式屬性。看一下 掩碼0022的作用: ||| |------|-----------| | Original file mode | --- rw- rw- rw- | | Mask | 000 000 010 010 | | Result | --- rw- r-- r-- | 又一次,二進制中數字1出現的位置,相對應的屬性被刪除。再試一下其它的掩碼值(一些帶數字7的) ,習慣于掩碼的工作原理。當你實驗完成之后,要記得清理現場: ~~~ [me@linuxbox ~]$ rm foo.txt; umask 0002 ~~~ 大多數情況下,你不必修改掩碼值,系統提供的默認掩碼值就很好了。然而,在一些高 安全級別下,你要能控制掩碼值。 > 一些特殊權限 > > 雖然我們通常看到一個八進制的權限掩碼用三位數字來表示,但是從技術層面上來講, 用四位數字來表示它更確切些。為什么呢?因為,除了讀取,寫入,和執行權限之外,還有 其它的,較少用到的權限設置。 > > 其中之一是 setuid 位(八進制4000)。當應用到一個可執行文件時,它把有效用戶 ID 從真正的用戶(實際運行程序的用戶)設置成程序所有者的 ID。這種操作通常會應用到 一些由超級用戶所擁有的程序。當一個普通用戶運行一個程序,這個程序由根用戶(root) 所有,并且設置了 setuid 位,這個程序運行時具有超級用戶的特權,這樣程序就可以 訪問普通用戶禁止訪問的文件和目錄。很明顯,因為這會引起安全方面的問題,所有可以 設置 setuid 位的程序個數,必須控制在絕對小的范圍內。 > > 第二個是 setgid 位(八進制2000),這個相似于 setuid 位,把有效用戶組 ID 從真正的 用戶組 ID 更改為文件所有者的組 ID。如果設置了一個目錄的 setgid 位,則目錄中新創建的文件 具有這個目錄用戶組的所有權,而不是文件創建者所屬用戶組的所有權。對于共享目錄來說, 當一個普通用戶組中的成員,需要訪問共享目錄中的所有文件,而不管文件所有者的主用戶組時, 那么設置 setgid 位很有用處。 > > 第三個是 sticky 位(八進制1000)。這個繼承于 Unix,在 Unix 中,它可能把一個可執行文件 標志為“不可交換的”。在 Linux 中,會忽略文件的 sticky 位,但是如果一個目錄設置了 sticky 位, 那么它能阻止用戶刪除或重命名文件,除非用戶是這個目錄的所有者,或者是文件所有者,或是 超級用戶。這個經常用來控制訪問共享目錄,比方說/tmp。 > > 這里有一些例子,使用 chmod 命令和符號表示法,來設置這些特殊的權限。首先, 授予一個程序 setuid 權限。 > > chmod u+s program > > 下一步,授予一個目錄 setgid 權限: > > chmod g+s dir > > 最后,授予一個目錄 sticky 權限: > > chmod +t dir > > 當瀏覽 ls 命令的輸出結果時,你可以確認這些特殊權限。這里有一些例子。首先,一個程序被設置為setuid屬性: > > -rwsr-xr-x > > 具有 setgid 屬性的目錄: > > drwxrwsr-x > > 設置了 sticky 位的目錄: > > drwxrwxrwt ## 更改身份 在不同的時候,我們會發現很有必要具有另一個用戶的身份。經常地,我們想要得到超級 用戶特權,來執行一些管理任務,但是也有可能”變為”另一個普通用戶,比如說測試一個帳號。 有三種方式,可以擁有多重身份: 1. 注銷系統并以其他用戶身份重新登錄系統。 2. 使用 su 命令。 3. 使用 sudo 命令。 我們將跳過第一種方法,因為我們知道怎樣使用它,并且它缺乏其它兩種方法的方便性。 在我們自己的 shell 會話中,su 命令允許你,假定為另一個用戶的身份,以這個用戶的 ID 啟動一個新的 shell 會話,或者是以這個用戶的身份來發布一個命令。sudo 命令允許一個管理員 設置一個叫做/etc/sudoers 的配置文件,并且定義了一些具體命令,在假定的身份下,特殊用戶 可以執行這些命令。選擇使用哪個命令,很大程度上是由你使用的 Linux 發行版來決定的。 你的發行版可能這兩個命令都包含,但系統配置可能會偏袒其中之一。我們先介紹 su 命令。 ## su - 以其他用戶身份和組 ID 運行一個 shell su 命令用來以另一個用戶的身份來啟動 shell。這個命令語法看起來像這樣: ~~~ su [-[l]] [user] ~~~ 如果包含”-l”選項,那么會為指定用戶啟動一個需要登錄的 shell。這意味著會加載此用戶的 shell 環境, 并且工作目錄會更改到這個用戶的家目錄。這通常是我們所需要的。如果不指定用戶,那么就假定是 超級用戶。注意(不可思議地),選項”-l”可以縮寫為”-“,這是經常用到的形式。啟動超級用戶的 shell, 我們可以這樣做: ~~~ [me@linuxbox ~]$ su - Password: [root@linuxbox ~]# ~~~ 按下回車符之后,shell 提示我們輸入超級用戶的密碼。如果密碼輸入正確,出現一個新的 shell 提示符, 這表明這個 shell 具有超級用戶特權(提示符的末尾字符是”#”而不是”$”),并且當前工作目錄是超級用戶的家目錄 (通常是/root)。一旦進入一個新的 shell,我們能執行超級用戶所使用的命令。當工作完成后, 輸入”exit”,則返回到原來的 shell: ~~~ [root@linuxbox ~]# exit [me@linuxbox ~]$ ~~~ 以這樣的方式使用 su 命令,也可以只執行單個命令,而不是啟動一個新的可交互的 shell: ~~~ su -c 'command' ~~~ 使用這種模式,命令傳遞到一個新 shell 中執行。把命令用單引號引起來很重要,因為我們不想 命令在我們的 shell 中展開,但需要在新 shell 中展開。 ~~~ [me@linuxbox ~]$ su -c 'ls -l /root/*' Password: -rw------- 1 root root 754 2007-08-11 03:19 /root/anaconda-ks.cfg /root/Mail: total 0 [me@linuxbox ~]$ ~~~ ## sudo - 以另一個用戶身份執行命令 sudo 命令在很多方面都相似于 su 命令,但是 sudo 還有一些非常重要的功能。管理員能夠配置 sudo 命令,從而允許一個普通用戶以不同的身份(通常是超級用戶),通過一種非常可控的方式 來執行命令。尤其是,只有一個用戶可以執行一個或多個特殊命令時,(更體現了 sudo 命令的方便性)。 另一個重要差異是 sudo 命令不要求超級用戶的密碼。使用 sudo 命令時,用戶使用他/她自己的密碼 來認證。比如說,例如,sudo 命令經過配置,允許我們運行一個虛構的備份程序,叫做”backup_script”, 這個程序要求超級用戶權限。通過 sudo 命令,這個程序會像這樣運行: ~~~ [me@linuxbox ~]$ sudo backup_script Password: System Backup Starting... ~~~ 按下回車鍵之后,shell 提示我們輸入我們的密碼(不是超級用戶的)。一旦認證完成,則執行 具體的命令。su 和 sudo 之間的一個重要區別是 sudo 不會重新啟動一個 shell,也不會加載另一個 用戶的 shell 運行環境。這意味者命令不必用單引號引起來。注意通過指定各種各樣的選項,這 種行為可以被推翻。詳細信息,閱讀 sudo 手冊頁。 想知道 sudo 命令可以授予哪些權限,使用”-l”選項,列出所有權限: ~~~ [me@linuxbox ~]$ sudo -l User me may run the following commands on this host: (ALL) ALL ~~~ > Ubuntu 與 sudo > > 普通用戶經常會遇到這樣的問題,怎樣完成某些需要超級用戶權限的任務。這些任務 包括安裝和更新軟件,編輯系統配置文件,和訪問設備。在 Windows 世界里,這些任務是 通過授予用戶管理員權限來完成的。這允許用戶執行這些任務。然而,這也會導致用戶所 執行的程序擁有同樣的能力。在大多數情況下,這是我們所期望的,但是它也允許 malware (惡意軟件),比方說電腦病毒,自由地支配計算機。 > > 在 Unix 世界中,由于 Unix 是多用戶系統,所以在普通用戶和管理員之間總是存在很大的 差別。Unix 采取的方法是只有在需要的時候,才授予普通用戶超級用戶權限。這樣,普遍會 用到 su 和 sudo 命令。 > > 幾年前,大多數的 Linux 發行版都依賴于 su 命令,來達到目的。su 命令不需要 sudo 命令 所要求的配置,su 命令擁有一個 root 帳號,是 Unix 中的傳統。但這會引起問題。所有用戶 會企圖以 root 用戶帳號來操縱系統。事實上,一些用戶專門以 root 用戶帳號來操作系統, 因為這樣做,的確消除了所有那些討厭的“權限被拒絕”的消息。相比于 Windows 系統安全性而言, 這樣做,你就削弱了 Linux 系統安全性能。不是一個好主意。 > > 當引進 Ubuntu 的時候,它的創作者們采取了不同的策略。默認情況下,Ubuntu 不允許用戶登錄 到 root 帳號(因為不能為 root 帳號設置密碼),而是使用 sudo 命令授予普通用戶超級用戶權限。 通過 sudo 命令,最初的用戶可以擁有超級用戶權限,也可以授予隨后的用戶帳號相似的權力。 ## chown - 更改文件所有者和用戶組 chown 命令被用來更改文件或目錄的所有者和用戶組。使用這個命令需要超級用戶權限。chown 命令 的語法看起來像這樣: ~~~ chown [owner][:[group]] file... ~~~ chown 命令可以更改文件所有者和/或文件用戶組,依據于這個命令的第一個參數。這里有 一些例子: 表10-6: chown 參數實例 | 參數 | 結果 | |------|----------| | bob | 把文件所有者從當前屬主更改為用戶 bob。 | | bob:users | 把文件所有者改為用戶 bob,文件用戶組改為用戶組 users。 | | :admins | 把文件用戶組改為組 admins,文件所有者不變。 | | bob: | 文件所有者改為用戶 bob,文件用戶組改為,用戶 bob 登錄系統時,所屬的用戶組。 | 比方說,我們有兩個用戶,janet,擁有超級用戶訪問權限,而 tony 沒有。用戶 jant 想要從 她的家目錄復制一個文件到用戶 tony 的家目錄。因為用戶 jant 想要 tony 能夠編輯這個文件, janet 把這個文件的所有者更改為 tony: ~~~ [janet@linuxbox ~]$ sudo cp myfile.txt ~tony Password: [janet@linuxbox ~]$ sudo ls -l ~tony/myfile.txt -rw-r--r-- 1 root root 8031 2008-03-20 14:30 /home/tony/myfile.txt [janet@linuxbox ~]$ sudo chown tony: ~tony/myfile.txt [janet@linuxbox ~]$ sudo ls -l ~tony/myfile.txt -rw-r--r-- 1 tony tony 8031 2008-03-20 14:30 /home/tony/myfile.txt ~~~ 這里,我們看到用戶 janet 把文件從她的目錄復制到 tony 的家目錄。下一步,janet 把文件所有者 從 root(使用 sudo 命令的原因)改到 tony。通過在第一個參數中使用末尾的”:”字符,janet 同時把 文件用戶組改為 tony 登錄系統時,所屬的用戶組,碰巧是用戶組 tony。 注意,第一次使用 sudo 命令之后,為什么(shell)沒有提示 janet 輸入她的密碼?這是因為,在 大多數的配置中,sudo 命令會相信你幾分鐘,直到計時結束。 ## chgrp - 更改用戶組所有權 在舊版 Unix 系統中,chown 命令只能更改文件所有權,而不是用戶組所有權。為了達到目的, 使用一個獨立的命令,chgrp 來完成。除了限制多一點之外,chgrp 命令與 chown 命令使用起來很相似。 ## 練習使用權限 到目前為止,我們已經知道了,權限這類東西是怎樣工作的,現在是時候炫耀一下了。我們 將展示一個常見問題的解決方案,這個問題是如何設置一個共享目錄。假想我們有兩個用戶, 他們分別是 “bill” 和 “karen”。他們都有音樂 CD 收藏品,也愿意設置一個共享目錄,在這個 共享目錄中,他們分別以 Ogg Vorbis 或 MP3 的格式來存儲他們的音樂文件。通過 sudo 命令, 用戶 bill 具有超級用戶訪問權限。 我們需要做的第一件事,是創建一個以 bill 和 karen 為成員的用戶組。使用圖形化的用戶管理工具, bill 創建了一個叫做 music 的用戶組,并且把用戶 bill 和 karen 添加到用戶組 music 中: ![2015-06-23/5589231a6aacc](https://box.kancloud.cn/2015-06-23_5589231a6aacc.png) 圖 3: 用 GNOME 創建一個新的用戶組 下一步,bill 創建了存儲音樂文件的目錄: ~~~ [bill@linuxbox ~]$ sudo mkdir /usr/local/share/Music password: ~~~ 因為 bill 正在他的家目錄之外操作文件,所以需要超級用戶權限。這個目錄創建之后,它具有 以下所有權和權限: ~~~ [bill@linuxbox ~]$ ls -ld /usr/local/share/Music drwxr-xr-x 2 root root 4096 2008-03-21 18:05 /usr/local/share/Music ~~~ 正如我們所見到的,這個目錄由 root 用戶擁有,并且具有權限755。為了使這個目錄共享,允許(用戶 karen)寫入,bill 需要更改目錄用戶組所有權和權限: ~~~ [bill@linuxbox ~]$ sudo chown :music /usr/local/share/Music [bill@linuxbox ~]$ sudo chmod 775 /usr/local/share/Music [bill@linuxbox ~]$ ls -ld /usr/local/share/Music drwxrwxr-x 2 root music 4096 2008-03-21 18:05 /usr/local/share/Music ~~~ 那么這是什么意思呢? 它的意思是,現在我們擁有一個目錄,/usr/local/share/Music,這個目錄由 root 用戶擁有,并且 允許用戶組 music 讀取和寫入。用戶組 music 有兩個成員 bill 和 karen,這樣 bill 和 karen 能夠在目錄 /usr/local/share/Music 中創建文件。其他用戶能夠列出目錄中的內容,但是不能在其中創建文件。 但是我們仍然會遇到問題。通過我們目前所擁有的權限,在 Music 目錄中創建的文件,只具有用戶 bill 和 karen 的普通權限: ~~~ [bill@linuxbox ~]$ > /usr/local/share/Music/test_file [bill@linuxbox ~]$ ls -l /usr/local/share/Music -rw-r--r-- 1 bill bill 0 2008-03-24 20:03 test_file ~~~ 實際上,存在兩個問題。第一個,系統中默認的掩碼值是0022,這會禁止用戶組成員編輯屬于同 組成員的文件。如果共享目錄中只包含文件,這就不是個問題,但是因為這個目錄將會存儲音樂, 通常音樂會按照藝術家和唱片的層次結構來組織分類。所以用戶組成員需要在同組其他成員創建的 目錄中創建文件和目錄。我們將把用戶 bill 和 karen 使用的掩碼值改為0002。 第二個問題是,用戶組成員創建的文件和目錄的用戶組,將會設置為用戶的主要組,而不是用戶組 music。 通過設置此目錄的 setgid 位來解決這個問題: ~~~ [bill@linuxbox ~]$ sudo chmod g+s /usr/local/share/Music [bill@linuxbox ~]$ ls -ld /usr/local/share/Music drwxrwsr-x 2 root music 4096 2008-03-24 20:03 /usr/local/share/Music ~~~ 現在測試一下,看看是否新的權限解決了這個問題。bill 把他的掩碼值設為0002,刪除 先前的測試文件,并創建了一個新的測試文件和目錄: ~~~ [bill@linuxbox ~]$ umask 0002 [bill@linuxbox ~]$ rm /usr/local/share/Music/test_file [bill@linuxbox ~]$ > /usr/local/share/Music/test_file [bill@linuxbox ~]$ mkdir /usr/local/share/Music/test_dir [bill@linuxbox ~]$ ls -l /usr/local/share/Music drwxrwsr-x 2 bill music 4096 2008-03-24 20:24 test_dir -rw-rw-r-- 1 bill music 0 2008-03-24 20:22 test_file [bill@linuxbox ~]$ ~~~ 現在,創建的文件和目錄都具有正確的權限,允許用戶組 music 的所有成員在目錄 Music 中創建 文件和目錄。 剩下一個問題是關于 umask 命令的。umask 命令設置的掩碼值只能在當前 shell 會話中生效,若當前 shell 會話結束后,則必須重新設置。在這本書的第三部分,我們將看一下,怎樣使掩碼值永久生效。 ## 更改用戶密碼 這一章最后一個話題,我們將討論自己帳號的密碼(和其他人的密碼,如果你具有超級用戶權限)。 使用 passwd 命令,來設置或更改用戶密碼。命令語法如下所示: ~~~ passwd [user] ~~~ 只要輸入 passwd 命令,就能更改你的密碼。shell 會提示你輸入你的舊密碼和你的新密碼: ~~~ [me@linuxbox ~]$ passwd (current) UNIX password: New UNIX password: ~~~ passwd 命令將會試著強迫你使用“強”密碼。這意味著,它會拒絕接受太短的密碼,與先前相似的密碼, 字典中的單詞作為密碼,或者是太容易猜到的密碼: ~~~ [me@linuxbox ~]$ passwd (current) UNIX password: New UNIX password: BAD PASSWORD: is too similar to the old one New UNIX password: BAD PASSWORD: it is WAY too short New UNIX password: BAD PASSWORD: it is based on a dictionary word ~~~ 如果你具有超級用戶權限,你可以指定一個用戶名作為 passwd 命令的參數,這樣可以設置另一個 用戶的密碼。還有其它的 passwd 命令選項對超級用戶有效,允許帳號鎖定,密碼失效,等等。 詳細內容,參考 passwd 命令的手冊頁。 ## 拓展閱讀 * Wikipedia 上面有一篇關于 malware(惡意軟件)好文章: [http://en.wikipedia.org/wiki/Malware](http://en.wikipedia.org/wiki/Malware) 還有一系列的命令行程序,可以用來創建和維護用戶和用戶組。更多信息,查看以下命令的手冊頁: * adduser * useradd * groupadd
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看