Linux使用者及許可權管理
一、使用者管理
1、建立使用者
//建立monitor使用者,使用者id為501,所屬組為monitor,附加群組為admin,起始目錄為/monitor
useradd -u 501 -g monitor -G admin -d /monitor monitor
-u:直接給出userID
-g:指定使用者所屬的群組
-G 指定使用者所屬的附加群組
-d:指定使用者登入時的啟始目錄
-s:定義shell
Linux系統下新建一個使用者會在以下幾個檔案中做記錄,下面以admin使用者為例:
- /etc/passwd:使用者資訊檔案
//查閱/etc/passwd檔案,結果如下
cat /etc/passwd
admin:x:503:501::/home/admin:/bin/bash
- /etc/shadow:使用者密碼檔案
//查閱/etc/shadow檔案,結果如下
cat /etc/shadow
admin:Dnakfw28zf38w:8764:0:168:7:::
- /etc/group:使用者組檔案
//查閱/etc/group檔案,結果如下
cat /etc/group
admin:x:1:root,bin,admin
- 最後是使用者的家目錄
cd /home/admin
2、修改使用者
//修改使用者使用usermod命令
usermod
3、修改密碼
- 修改普通使用者的密碼
//修改普通使用者的密碼使用passwd命令
passwd
- 修改root使用者的密碼
很多時候,當前使用者沒有許可權操作檔案和目錄,需要切換到root使用者進行操作,但是又不知道root使用者的密碼,這個時候,可以用下面的方法來解決。
su passwd root
系統會提示你輸入密碼和確認密碼。
然後 su - root
輸入剛才的密碼即可。
詳情請參考:
http://jingyan.baidu.com/article/5225f26b0ac250e6fb09084e.html
4、建立組
//建立monitor組
groupadd monitor
-g gid:指定組ID號
5、修改組
groupmod
6、切換使用者
su - [使用者名稱]
附:su [使用者名稱] 與 su - [使用者名稱]的區別
前者只是切換了使用者身份,但Shell環境仍然是原使用者的Shell;而後者連使用者和Shell環境一起切換成使用者身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。
二、/etc/passwd檔案詳解
使用者名稱 : 口令 : 使用者標識號 : 組標識號 : 註釋性描述 : 主目錄 : 登入Shell
使用者名稱(login_name):是代表使用者賬號的字串。通常長度不超過8個字元,並且由大小寫字母和/或數字組成。登入名中不能有冒號(:),因為冒號在這裡是分隔符。為了相容起見,登入名中最好不要包含點字元(.),並且不使用連字元(-)和加號(+)打頭。
口令(passwd):一些系統中,存放著加密後的使用者口令字。雖然這個欄位存放的只是使用者口令的加密串,不是明文,但是由於/etc/passwd檔案對所有使用者都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密後的使用者口令字存放到/etc/shadow檔案中,而在/etc/passwd檔案的口令欄位中只存放一個特殊的字元,例如“x”或者“*”。
使用者標識號(UID):是一個整數,系統內部用它來標識使用者。一般情況下它與使用者名稱是一一對應的。如果幾個使用者名稱對應的使用者標識號是一樣的,系統內部將把它們視為同一個使用者,但是它們可以有不同的口令、不同的主目錄以及不同的登入Shell等。取值範圍是0-65535。0是超級使用者root的標識號,1-99由系統保留,作為管理賬號,普通使用者的標識號從100開始。在Linux系統中,這個界限是500。
組標識號(GID):欄位記錄的是使用者所屬的使用者組。它對應著/etc/group檔案中的一條記錄。
註釋性描述(users):欄位記錄著使用者的一些個人情況,例如使用者的真實姓名、電話、地址等,這個欄位並沒有什麼實際的用途。在不同的Linux系統中,這個欄位的格式並沒有統一。在許多Linux系統中,這個欄位存放的是一段任意的註釋性描述文字,用做finger命令的輸出。
主目錄(home_directory):也就是使用者的起始工作目錄,它是使用者在登入到系統之後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同一個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名。各使用者對自己的主目錄有讀、寫、執行(搜尋)許可權,其他使用者對此目錄的訪問許可權則根據具體情況設定。
登入Shell(Shell):使用者登入後,要啟動一個程序,負責將使用者的操作傳給核心,這個程序是使用者登入到系統後執行的命令直譯器或某個特定的程式,即Shell。Shell是使用者與Linux系統之間的介面。Linux的Shell有許多種,每種都有不同的特點。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系統管理員可以根據系統情況和使用者習慣為使用者指定某個Shell。如果不指定Shell,那麼系統使用sh為預設的登入Shell,即這個欄位的值為/bin/sh。
三、許可權管理
1、檢視檔案許可權設定
//檢視/bin/bash檔案的許可權
ls -al /bin/bash
//結果如下
-rwxr-xr-x 1 root root 938736 Apr 23 2012 /bin/bash
第1位給出了該項的屬性,即是檔案還是目錄,或者是連結檔案等。
-:表示是檔案,如上面的案例就是一個檔案;
d:表示是目錄;
l:表示是連結檔案。
第2、3、4位給出了檔案或目錄所有者的許可權。
第5、6、7位給出了檔案或目錄所屬使用者組的許可權。
第8、9、10位給出了其他使用者許可權。
r:為讀許可權。
w:為寫許可權。
x:為執行許可權。目錄的執行許可權的意思是可以用cd命令進入該目錄
2、修改檔案許可權
chmod命令:該命令用來修改檔案或目錄的訪問許可權。
一般有兩種使用方式:
第一種方式為:chmod a+r 檔案或目錄名
其中a可用u、g、o替換,+可用=、-替換,r可用w、x替換
a:表示修改所有使用者的許可權。包括u、g、o
u:表示只給檔案或目錄所有者修改許可權
g:表示給檔案所有組修改許可權
o:表示給其他使用者修改許可權
+:表示增加某種許可權
-:表示減去某種許可權
=:表示賦予某種許可權
第二種方式為:用數字表示許可權,r:用4表示 w:用2表示 x:用1表示
則1~7表示的許可權如下:
1:–x
2::-w-
3:-wx
4:r–
5:r-x
6:rw-
7:rwx
於是可用“chmod 777 檔案或目錄名”命令來修改許可權。三個7中第一個代表所有者許可權,第二個代表所有組許可權,第三個代表其他使用者許可權。當然,也可用類似於“chmod u+2檔案目錄名”的方式來修改許可權。
附:
例項一:將/usr/local/test目錄及其子目錄的讀、寫、執行許可權開放給所有使用者
-R表示修改當前目錄及其子目錄,不加-R僅修改當前目錄
chmod -R 777 /usr/local/test