1. Linux禁止使用者登入的一種方法
usermod -Ldduyoung ##Lock 帳號dduyoung
usermod -Udduyoung ##Unlock 帳號dduyoung
2. 命令:ls –l輸出詳解:
比如一個輸出:
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash
檔案許可權 連結數 檔案所有者 所屬群組 檔案大小 檔案修改時間 檔案名稱
第一個欄位: -rwxr-xr-x 包含該特殊檔案的許可權的符號表示。該欄位中的首字元(-)指定該檔案的類型,本例中它是一個常規檔案。其它可能的首字元還有:
“d”目錄
“l”符號連結
“c”字元專門裝置檔案
“b”塊專門裝置檔案
“p”先進先出
“s”通訊端三個三元組
第一欄位的其餘部分由三個三元組字元組成。第一個三元字元組代表檔案所有者的許可權,第二個代表檔案的組的許可權,第三個代表所有其他使用者的許可權:
所有者的許可權: "rwx"
組的許可權: "r-x"
其他使用者的許可權: "r-x"
上面,r 表示允許讀(查看檔案中的資料),w 表示允許寫(修改檔案以及刪除),x 表示允許“執行”(運行程式)。
3. 一些指令:
查看當前使用的使用者:whoami
查看目前使用者所屬的組:groups
查看其它使用者所屬的組:groups user
在一個目錄下建立一個帳號: useradd –d path name
建立一個帳號加入一個組裡面:useradd –g groupsname, 多個組:useradd –ggroups1,groups2 … name
建立一個組:groupadd [-g group] name
把一個使用者添加到另外一個組裡面:gpasswd -a user group
4. 改變使用者和組所有權
用chown 或 chgrp,可以改變檔案或其它檔案系統對象的所有者或組,除非是超級使用者,否則您不可以使用 chown,然而任何人都可以使用 chgrp 來將檔案的組所有權改為他們所屬的組。用法:
chown [OPTION]... [OWNER][:[GROUP]] FILE
如:
# chown root /etc/passwd
# chgrp wheel /etc/passwd
還可以用 chown 命令的另一種形式同時設定所有者和組:
# chown root.wheel /etc/passwd
改變一個組以及所有者:chown user:groups path
5. usermod:改變使用者的資料許可權:
usermod [-LU][-c<備忘>][-d <登入目錄>][-e <有效期間限>][-f <緩衝天數>][-g <群組>][-G <群組>][-l <帳號名稱>][-s ][-u ][使用者帳號]
6. chmod:
chown 和 chgrp 可以用來改變檔案系統對象的所有者和組, 而另一個程式 — 叫做 chmod — 用來改變我們可以在 ls -l 清單中看到的 rwx 許可權。
比如:chmod +x scriptfile.sh
中的+是增加一個許可權,而-是減少一個許可權, 但是是對於所有組。
chmod [who] +x filename,增加who(u:所有者user; g:組groups;o:其他使用者other;a:所以使用者all),加許可權(-為減許可權)。
執行個體:
$ chmod u+xfile 給file的屬主增加執行許可權
$ chmod 751file 給file的屬主分配讀、寫、執行(7)的許可權,給file的所在組分配讀、執行(5)的許可權,給其他使用者指派執行(1)的許可權
$ chmodu=rwx,g=rx,o=x file 上例的另一種形式
$ chmod =rfile 為所有使用者指派讀許可權
$ chmod 444file 同上例
$ chmoda-wx,a+r file 同上例
$ chmod -Ru+r directory 遞迴地給directory目錄下所有檔案和子目錄的屬主分配讀的許可權
$ chmod 4755 設定用ID,給屬主分配讀、寫和執行許可權,給組和其他使用者指派讀、執行的許可權。
7. 數字與許可權
r :4 w:2 x:1
8. SUID和SGID的詳細解析
由於SUID和SGID是在執行程式(程式的可執行位被設定)時起作用,而可執行位只對普通檔案和目錄檔案有意義,所以設定其他種類檔案的SUID和SGID位是沒有多大意義的。
首先講普通檔案的SUID和SGID的作用。例子:
如果普通檔案myfile是屬於foo使用者的,是可執行檔,現在沒設SUID位,ls命令顯示如下:
-rwxr-xr-x 1foo staff 7734 Apr 05 17:07 myfile
任何使用者都可以執行這個程式。UNIX的核心是根據什麼來確定一個進程對資源的存取權限的呢。是這個進程的運行使用者的(有效)ID,包括user id和group id。使用者可以用id命令來查到自己的或其他使用者的user id和group id。
除了一般的user id 和group id外,還有兩個稱之為effective 的id,就是有效id,上面的四個id表示為:uid,gid,euid,egid。核心主要是根據euid和egid來確定進程對資源的存取權限。
一個進程如果沒有SUID或SGID位,則euid=uid egid=gid,分別是運行這個程式的使用者的uid和gid。例如kevin使用者的uid和gid分別為204和202,foo使用者的uid和gid為200,201,kevin運行myfile程式形成的進程的euid=uid=204,egid=gid=202,核心根據這些值來判斷進程對資源訪問的限制,其實就是kevin使用者對資源訪問的許可權,和foo沒關係。
如果一個程式設定了SUID,則euid和egid變成被啟動並執行程式的所有者的uid和gid,例如kevin使用者運行myfile,euid=200,egid=201,uid=204,gid=202,則這個進程具有它的屬主foo的資源存取權限。SUID的作用就是這樣:讓本來沒有相應許可權的使用者運行這個程式時,可以訪問他沒有許可權訪問的資源。passwd就是一個很鮮明的例子。SUID的優先順序比SGID高,當一個可執行程式設定了SUID,則SGID會自動變成相應的egid。