1. 程式人生 > >Linux 伺服器上建立使用者並分配許可權

Linux 伺服器上建立使用者並分配許可權

 

此貼轉自:https://www.cnblogs.com/SH-xuliang/p/8422753.html

檢視使用者

1 whoami  #要檢視當前登入使用者的使用者名稱
2 who am i  #表示開啟當前偽終端的使用者的使用者名稱
3 who mom likes

who 命令其它常用引數

1 引數  說明
2 -a  列印能列印的全部
3 -d  列印死掉的程序
4 -m  同am i,mom likes
5 -q  列印當前登入使用者數及使用者名稱
6 -u  列印當前登入使用者登入資訊
7 -r  列印執行等級

1. 建立使用者

adduser這個命令,我們很容易理解其作用,因為完全可以顧名思義:add是英語“新增”的意思,user是英語“使用者”的意思,因此adduser就是用於新增使用者。

1 adduser newname // 新建使用者newname

useradd 只建立使用者,建立完了用 passwd lilei 去設定新使用者的密碼。 
adduser 會建立使用者,建立目錄,建立密碼(提示你設定),做這一系列的操作。 
其實 useradd、userdel 這類操作更像是一種命令,執行完了就返回。而 adduser 更像是一種程式,需要你輸入、確定等一系列操作


刪除使用者

deluser是delete和user的縮寫,delete是英語“刪除”的意思,user是“使用者”的意思。

1 userdel newname

單單用deluser命令,不加引數的話,只會刪除使用者,但是不會刪除在/home目錄中的使用者家目錄。如果你想要連此使用者的家目錄也一併刪除,可以加上 –remove-home 這個引數,如下:

deluser –remove-home newname

這樣,不僅刪除了newname這個使用者,連/home/newname這個目錄也會刪除。


注意:adduser和deluser命令只是Debian一族(包括Ubuntu)才有的命令。其他的LInux發行版,一般來說,新增使用者和刪除使用者是用useradd和userdel命令。 
而且,用useradd新增使用者之後,在預設的情況下,該賬號是暫時被封鎖的, 也就是說,該賬號是無法登入,須要用passwd命令來給新建立的使用者設定密碼之後才可以使用。


建立組

addgroup是add和group的縮寫,add是英語“新增”的意思,group是英語“群組”的意思。所以addgroup命令用於新增一個新的群組。

1 sudo addgroup siatstudent

1 groupadd testgroup

* 修改組*

1 groupmod -n test2group testgroup

刪除組

delgroup是delete和group的縮寫,delete是英語“刪除”的意思,group是英語“群組”的意思。所以delgroup命令用於刪除一個已存在的群組。

1 delgroup happy
2 就刪除了happy這個群組。

1 groupdel test2group

注意:addgroup和delgroup命令只是Debian一族(包括Ubuntu)才有的命令。其他的LInux發行版,一般來說,新增使用者和刪除使用者是用groupadd和groupdel命令。


檢視組


1 cd /home
2 ls -l
3 #第三列表示檔案或目錄的所有者,第四列表示檔案或目錄的所在群組

 


1 groups  #檢視當前登陸使用者所在的組
2 groups testnewuser #檢視testnewuser 所在的組
3 cat /etc/group  #檢視所有組

 

passwd命令:修改密碼

passwd命令是password這個英語單詞的縮寫,表示“密碼”

1 passwd newname

 


usermod命令:修改使用者賬戶

usermod是user和modify的縮寫,user是英語“使用者”的意思,modify是“修改”的意思。usermod命令用於修改使用者的賬戶。

1 -l:對使用者重新命名,但是/home目錄中的使用者家目錄名不會改變,需要手動修改。
2 -g:修改使用者所在群組

 

1  usermod -g siatstudent newname

 

當然我們也可以一次將一個使用者新增到多個群組,就用 -G 引數(大寫的G)。用法如下:

1 usermod -G friends,happy,funny newname

 

以上命令把newname新增到friends,happy和funny三個群組。記得群組名之間要用逗號分隔,而且沒有空格。


注意:使用usermod時要小心,因為配合-g或-G引數時,它會把使用者從原先的群組裡剔除,加入到新的群組。如果你不想離開原先的群組,又想加入新的群組,可以在-G引數的基礎上加上-a引數,a是英語append的縮寫,表示“追加”。例如:

1 usermod -aG happy newname

 

以上命令就把newname追加到群組happy裡了,這樣newname就屬於兩個群組:siatstudent和happy

1 groups newname #檢視newname所屬群組

 


2. 設定檔案的許可權

1 udo chmod 600 ××× (只有所有者有讀和寫的許可權)
2 sudo chmod 644 ××× (所有者有讀和寫的許可權,組使用者只有讀的許可權)
3 sudo chmod 700 ××× (只有所有者有讀和寫以及執行的許可權)
4 sudo chmod 666 ××× (每個人都有讀和寫的許可權)
5 sudo chmod 777 ××× (每個人都有讀和寫以及執行的許可權)

 


chmod命令詳細用法 
chmod命令:修改檔案的訪問許可權 
chmod是change和mode的縮寫,change是英語“改變”的意思,mode是“模式”的意思。chmod命令用於修改檔案的各種訪問許可權。

指令名稱 : chmod 
使用許可權 : 所有使用者 
使用方式 : chmod [-cfvR] [–help] [–version] mode file…

說明 : Linux/Unix 的檔案呼叫許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所呼叫。 
引數 : 
mode : 許可權設定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中 
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o表示其他以外的人,a 表示這三者皆是。 
+ 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。 
r 表示可讀取,w 表示可寫入,x 表示可執行。

1     d:是英語directory的縮寫,表示“目錄”。就是說這是一個目錄。
2     l:是英語link的縮寫,表示“連結”。就是說這是一個連結。
3     r:是英語read的縮寫,表示“讀”。就是說可以讀這個檔案。
4     w:是英語write的縮寫,表示“寫”。就是說可以寫這個檔案,也就是可以修改。
5     x:是英語execute的縮寫,表示“執行,執行”。就是說可以執行這個檔案

 

訪問許可權是按照使用者來劃分的

這裡寫圖片描述


如上圖,除開第一個表示檔案或目錄屬性的符號(此處是d,表示目錄。如果是l,則是連結。如果是短橫-,那麼是普通檔案。),其他的9個符號被劃分為三組,從左到右分別

1 第一組rwx表示檔案的所有者對於此檔案的訪問許可權。
2 第二組rwx表示檔案所屬的群組的其他使用者對於此檔案的訪問許可權。
3 第三組rwx表示除前兩組之外的其他使用者對於此檔案的訪問許可權。

 


舉例分析

1 ls -l file.txt
2 -rw-r--r--

我們從左到右來分析這些符號都表示什麼:

1     -:第一個短橫表示這是一個普通檔案。如果此處是d,那麼表示目錄;如果是l,那麼表示連結,等等。
2     rw-:表明了檔案的所有者(此處是newname)對檔案有讀,寫的許可權,但是沒有執行的許可權。也很好理解,因為這是一個普通檔案,預設沒有可執行的屬性。記住:如果有w許可權(寫的許可權),那麼表明也有刪除此檔案的許可權。
3     r--:表明檔案所在的群組(此處是newname)的其他使用者(除了newname之外)只可以讀此檔案,但不能寫也不能執行。“可遠觀而不可褻玩焉”。
4     r--:表示其他使用者(除去newname這個群組的使用者)只可以讀此檔案,但不能寫也不能執行。

 

綜上所述,file.txt 這個檔案是一個普通檔案,不是一個目錄,也不是連結檔案,它的所有者newname可以讀寫它,但不能執行;其他的使用者只能讀。


記住:root是超級管家,它有所有許可權,”只有它想不到的,沒有它做不到的”。 
它可以讀、寫、執行任意檔案。


用數字來分配許可權:chmod的絕對用法

事實上,Linux系統對每種許可權(r,w和x)分配了對應的數字:

1 許可權  數字
2 r    4
3 w    2
4 x    1

 

所以,如果我們要合併這些許可權,就需要做簡單的加法了:將對應的數字相加。

假如我們要分配讀,寫許可權,那麼我們就要用4+2,就等於6。數字6表示具有讀和寫許可權。

以下是可能的組合形式:

1 許可權   數字     計算
2 ---     0    0 + 0 + 0
3 r--     4    4 + 0 + 0
4 -w-     2    0 + 2 + 0
5 --x     1    0 + 0 + 1
6 rw-     6    4 + 2 + 0
7 -wx     3    0 + 2 + 1
8 r-x     5    4 + 0 + 1
9 rwx     7    4 + 2 + 1

所以,對於訪問許可權的三組(所有者的許可權,群組使用者的許可權,其他使用者的許可權),我們只要分別做加法就可以了,然後把三個和連起來。

1 chmod 600 file.txt

例如:640分別表示:

1 檔案的所有者有讀和寫的許可權。
2 檔案所在群組的其他使用者具有讀的許可權。
3 除此之外的其他使用者沒有任何許可權。

 

因此,我們可以給的最寬泛的許可權就是 777:所有者,群組使用者,其他使用者都有讀,寫和執行的許可權。這樣,所有人就都可以對此檔案“為所欲為”了。

相反,如果許可權是000,那麼沒有人能對此檔案做什麼。當然,除了root,root可以做任何事。


用字母來分配許可權:chmod的相對用法

我們需要知道不同的字母代表什麼:

1 u:user的縮寫,是英語“使用者”的意思。表示所有者。
2 g:group的縮寫,是英語“群組”的意思。表示群組使用者。
3 o:other的縮寫,是英語“其他”的意思。表示其他使用者。
4 a:all的縮寫,是英語“所有”的意思。表示所有使用者。

 

當然了,和這些字母配合的還有幾個符號:

1 +:加號,表示新增許可權。
2 -:減號,表示去除許可權。
3 =:等號,表示分配許可權。

 

接下來,我們舉例說明如何使用:

 1 #檔案file.txt的所有者增加讀和執行的許可權。
 2 chmod u+rx file.txt
 3 
 4 #檔案file.txt的群組其他使用者增加讀的許可權。
 5 chmod g+r file.txt 
 6 
 7 #檔案file.txt的其他使用者移除讀的許可權。
 8 chmod o-r file.txt 
 9 
10 #檔案file.txt的群組其他使用者增加讀的許可權,其他使用者移除讀的許可權。
11 chmod g+r o-r file.txt 
12 
13 #檔案file.txt的群組其他使用者和其他使用者均移除讀的許可權。
14 chmod go-r file.txt 
15 
16 #檔案file.txt的所有使用者增加執行的許可權。
17 chmod +x file.txt 
18 
19 #檔案file.txt的所有者分配讀,寫和執行的許可權;群組其他使用者分配讀的許可權,不能寫或執行;其他使用者沒有任何許可權。
20 chmod u=rwx,g=r,o=- file.txt

-R引數:遞迴地修改訪問許可權

chmod配合-R引數可以遞迴地修改檔案訪問許可權。

假如我要只允許newname這個使用者能讀,寫,執行/home/newname這個目錄的所有檔案(當然,root不算,root可以做任何事),該怎麼做呢?

1 chmod -R 700 /home/newname

 


chown命令

chown是change和owner的縮寫,change是英語“改變”的意思,owner是英語“所有者”的意思。

因此chown命令用於改變檔案的所有者。

chown命令:改變檔案的所有者

後接新的所有者的使用者名稱,再接檔名。例如:

1 chown newname file.txt

 


chown命令也可以改變檔案的群組,用法如下:

1 chown newname:friends file.txt

 

這句命令就把file.txt這個檔案的所有者改為newname,群組改為friends了。用法也很簡單,就是在所有者和群組之間用冒號隔開。


-R引數:遞迴設定子目錄和子檔案

R是recursive的縮寫,表示“遞迴”。所以如果chown命令配上-R引數,就會使得被修改的目錄的所有子目錄和子檔案都改變所有者(或者連群組也改變,如果用上述冒號的方法來同時修改所有者和群組)。

想要把使用者newname的家目錄的所有子目錄和檔案都佔為己有。我可以這麼做:

1 chown -R bids:bids /home/newname

這樣不但使/home/newname這個目錄的所有者和群組都變成bids,而且其子目錄和子檔案也都是如此。


chmod命令:修改訪問許可權

在Linux系統裡,每個檔案和目錄都有一列許可權屬性。這一列訪問許可權指明瞭誰有讀的權利,誰有修改的權利,誰有執行的權利。


chgrp命令:改變檔案的群組

chgrp是change和group的縮寫,change是英語“改變”的意思,group是英語“群組”的意思。

chgrp命令用於改變檔案的群組。

後接新的群組名,再接檔名。例如:
1 chgrp newname file.txt

-----------------------

舉例說明:Linux系統新掛載了一個硬碟,命名為publicspace。 
設定一個公共盤publicshare,所有使用者都可以訪問該資料夾來分享檔案

1 chmod 777 publicshare -R

 

若在該資料夾新建資料夾newname,只能讓使用者newname有許可權對資料夾newname

1 #更改檔案的所有者和組
2 sudo chown newname:newname newname

 

1 #更改檔案的讀寫許可權
2 sudo chmod go-rw newname

————————————————————————————

3. /etc/skel 目錄

/etc/skel目錄一般是存放使用者啟動檔案的目錄,這個目錄是由root許可權控制,當我們新增使用者時,這個目錄下的檔案自動複製到新新增的使用者的家目錄下;/etc/skel 目錄下的檔案都是隱藏檔案,也就是類似.file格式的;我們可通過修改、新增、刪除/etc/skel目錄下的檔案,來為使用者提供一個統一、標準的、預設的使用者環境;

/etc/skel 目錄下的檔案,一般是我們用useradd 和adduser 命令新增使用者(user)時,系統自動複製到新新增使用者(user)的家目錄下;如果我們通過修改 /etc/passwd 來新增使用者時,我們可以自己建立使用者的家目錄,然後把/etc/skel 下的檔案複製到使用者的家目錄下,然後要用chown 來改變新使用者家目錄的屬主;

———————————————————————————— 
4. 新建使用者的獨立性 
修改目錄許可權,使得Linux 每個賬戶只能檢視自己的根目錄,無法檢視其它賬戶的目錄。 
首先要進入Linux系統下所有使用者所在的資料夾

1 cd /home/

 

然後

1   chmod go-rw XXX.XXX 

 

 

表示刪除 XXX.XXX中組群和其他人的讀和寫的許可權。 
例如

1 chmod go-rw lili

這就是說設定lili這個目錄只有lili可以檢視,Linux下的其它賬戶無法檢視。