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下的其它賬戶無法檢視。