注:內容來自網絡
Linux 系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,並為用戶提供安全性保護。每個用戶賬號都擁有一個惟一的用戶名和各自的密碼。用戶在登錄時鍵入正確的用戶名和密碼后,就能夠進入系統和自己的主目錄。
實現用戶賬號的管理,要完成的工作主要有如下幾個方面:
?用戶賬號的添加、刪除與修改。
?用戶密碼的管理。
?用戶組的管理。
一、Linux系統用戶賬號的管理
用戶賬號的管理工作主要涉及到用戶賬號的添加、修改和刪除。
添加用戶賬號就是在系統中創建一個新賬號,然后為新賬號分配用戶號、用戶組、主目錄和登錄Shell等資源。剛添加的賬號是被鎖定的,無法使用。
1、添加新的用戶賬號使用 useradd 命令,其語法如下:
useradd 選項 用戶名
其中各選項含義如下:
-c comment 指定一段注釋性描述。
-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
-g 用戶組 指定用戶所屬的用戶組。
-G 用戶組,用戶組 指定用戶所屬的附加組。
-s Shell文件 指定用戶的登錄Shell。
-u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。
用戶名 指定新賬號的登錄名。
例1:
# useradd –d /usr/sam -m sam
此命令創建了一個用戶sam,
其中-d和-m選項用來為登錄名sam產生一個主目錄/usr/sam(/usr為默認的用戶主目錄所在的父目錄)。
例2:
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一個用戶gem,該用戶的登錄Shell是/bin/sh,它屬於group用戶組,同時又屬於adm和root用戶組,其中group用戶組是其主組。
這里可能新建組:
#groupadd group 及 groupadd adm
增加用戶賬號就是在 /etc/passwd 文件中為新用戶增加一條記錄,同時更新其他系統文件如 /etc/shadow, /etc/group等。
Linux提供了集成的系統管理工具userconf,它可以用來對用戶賬號進行統一管理。
2、刪除帳號
如果一個用戶的賬號不再使用,可以從系統中刪除。刪除用戶賬號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。刪除一個已有的用戶賬號使用userdel命令,其格式如下:
userdel 選項 用戶名
常用的選項是 -r,它的作用是把用戶的主目錄一起刪除。
例如:
# userdel sam
此命令刪除用戶sam在系統文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時刪除用戶的主目錄。
3、修改帳號
修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。
修改已有用戶的信息使用usermod命令,其格式如下:
usermod 選項 用戶名
常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值。另外,有些系統可以使用如下選項:
-l 新用戶名
這個選項指定一個新的賬號,即將原來的用戶名改為新的用戶名。
例如:
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令將用戶sam的登錄Shell修改為ksh,主目錄改為/home/z,用戶組改為developer。
4、用戶密碼的管理
用戶管理的一項重要內容是用戶密碼的管理。用戶賬號剛創建時沒有密碼,但是被系統鎖定,無法使用,必須為其指定密碼后才可以使用,即使是指定空密碼。
指定和修改用戶密碼的Shell命令是passwd。超級用戶可以為自己和其他用戶指定密碼,普通用戶只能用它修改自己的密碼。命令的格式為:
passwd 選項 用戶名
可使用的選項:
-l 鎖定密碼,即禁用賬號。
-u 密碼解鎖。
-d 使賬號無密碼。
-f 強迫用戶下次登錄時修改密碼。
如果默認用戶名,則修改當前用戶的密碼。
例如,假設當前用戶是sam,則下面的命令修改該用戶自己的密碼:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超級用戶,可以用下列形式指定任何用戶的密碼:
# passwd sam
New password:*******
Re-enter new password:*******
普通用戶修改自己的密碼時,passwd命令會先詢問原密碼,驗證后再要求用戶輸入兩遍新密碼,如果兩次輸入的密碼一致,則將這個密碼指定給用戶;而超級用戶為用戶指定密碼時,就不需要知道原密碼。
為了系統安全起見,用戶應該選擇比較復雜的密碼,例如最好使用8位長的密碼,密碼中包含有大寫、小寫字母和數字,並且應該與姓名、生日等不相同。
為用戶指定空密碼時,執行下列形式的命令:
# passwd -d sam
此命令將用戶sam的密碼刪除,這樣用戶sam下一次登錄時,系統就不再詢問密碼。
passwd命令還可以用-l(lock)選項鎖定某一用戶,使其不能登錄,例如:
# passwd -l sam
新建用戶異常:
useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop
1 Creating mailbox file: 文件已存在
刪除即可 rm -rf /var/spool/mail/用戶名
2 useradd: invalid numeric argument 'hadoop'
這是由於hadoop組不存在 請先建hadoop組
通過cat /etc/passwd 可以查看用戶的pass
cat /etc/shadow 可以查看用戶名
cat /etc/group 可以查看 組
二、Linux系統用戶組的管理
每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。
1、增加一個新的用戶組使用groupadd命令。 其格式如下:
groupadd 選項 用戶組
可以使用的選項有:
-g GID 指定新用戶組的組標識號(GID)。
-o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
例1:
# groupadd group1
此命令向系統中增加了一個新組group1,新組的組標識號是在當前已有的最大組標識號的基礎上加1。
例2:
#groupadd -g 101 group2
此命令向系統中增加了一個新組group2,同時指定新組的組標識號是101。
2、如果要刪除一個已有的用戶組,使用groupdel命令, 其格式如下:
groupdel 用戶組
例如:
#groupdel group1
此命令從系統中刪除組group1。
3、修改用戶組的屬性使用groupmod命令。 其語法如下:
groupmod 選項 用戶組
常用的選項有:
-g GID 為用戶組指定新的組標識號。
-o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
-n新用戶組 將用戶組的名字改為新名字
例1:
# groupmod -g 102 group2
此命令將組group2的組標識號修改為102。
例2:
# groupmod –g 10000 -n group3 group2
此命令將組group2的標識號改為10000,組名修改為group3。
4、如果一個用戶同時屬於多個用戶組,那么用戶可以在用戶組之間切換,以便具有其他用戶組的權限。用戶可以在登錄后,使用命令newgrp切換到其他用戶組,這個命令的參數就是目的用戶組。
例如:
$ newgrp root
這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似於用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。
--------------------------------------------------------------------------------
權限分配
分配權限
chown -R hadoop:hadoop /usr/hadoop/
讓普通用戶擁有root的權限
1.root登錄
2.adduser 用戶名
3.passwd 用戶名
確定密碼
4.修改/etc/passwd即可,把用戶名的ID和ID組修改成0。
新建用戶,且不讓用戶直接登錄:
1 #添加nginx用戶組及用戶
2 groupadd www
3 useradd -g www -s /usr/sbin/nologin www #不讓www用戶直接登錄
--------------------------------------------------------------------------------
Linux修改用戶所在組方法
強行設置某個用戶所在組
usermod -g 用戶組 用戶名
把某個用戶改為 group(s)
usermod -G 用戶組 用戶名
把用戶添加進入某個組(s),注意:原來的用戶組還存在
usermod -a -G 用戶組 用戶名
usermod使用說明:
修改用戶帳號
語 法:usermod [-LU][-c <備注>][-d <登入目錄>][-e <有效期限>][-f <緩沖天數>][-g <群組>][-G <群組>][-l <帳號名稱>][-s <shell>][-u <uid>][用戶帳號]
補充說明:usermod可用來修改用戶帳號的各項設定。
參 數:
-c<備注> 修改用戶帳號的備注文字。
-d登入目錄> 修改用戶登入時的目錄。
-e<有效期限> 修改帳號的有效期限。
-f<緩沖天數> 修改在密碼過期后多少天即關閉該帳號。
-g<群組> 修改用戶所屬的群組。
-G<群組> 修改用戶所屬的附加群組。
-l<帳號名稱> 修改用戶帳號名稱。
-L 鎖定用戶密碼,使密碼無效。
-s<shell> 修改用戶登入后所使用的shell。
-u<uid> 修改用戶ID。
-U 解除密碼鎖定。
1、添加用戶
首先用adduser命令添加一個普通用戶,命令如下:
#adduser tommy //添加一個名為tommy的用戶
#passwd tommy //修改密碼
Changing password for user tommy.
New UNIX password: //在這里輸入新密碼
Retype new UNIX password: //再次輸入新密碼
passwd: all authentication tokens updated successfully.
2、賦予root權限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注釋(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用戶,使其屬於root組(wheel),命令如下:
#usermod -g root tommy
修改完畢,現在可以用tommy帳號登錄,然后用命令 su - ,即可獲得root權限進行操作。
方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完畢,現在可以用tommy帳號登錄,然后用命令 su - ,即可獲得root權限進行操作。
方法三:修改 /etc/passwd 文件,找到如下行,把用戶ID修改為 0 ,如下所示:
tommy:x:0:33:tommy:/data/webroot:/bin/bash
>>參考2====================================
用useradd新增的用戶不能直接用ssh遠程訪問,需要修改ssh相關配置
如下:
vi /etc/ssh/sshd_config
添加
AllowUsers root@192.168.1.32 admin
多個用戶用空格隔開
>>參考3====================================
如何讓普通用戶獲得root用戶的權限執行操作而不需要知道root用戶的密碼或向root用戶進行切換呢?有一個命令sudo可以實現這個功能.
Sudo的工作流程:
(1)root用戶編輯/etc/sudoers文件,添加要分配的普通用戶記錄,其中有這么一行記錄:root ALL=(ALL) ALL,在這行后面添加:Sam ALL=(ALL) ALL
(2) 那么sam用戶在執行操作時,如果所執行的操作自己沒有權限,則會去/etc/sudoers文件中查找是否有對應的記錄,如果有的話則臨時獲得root權限,執行只有root才能執行的操作.
注意:這里會提示輸入密碼,但是輸入的是sam用戶的密碼,而不是root用戶的密碼.例如:
Shell> sudo mkdir –p a/b/c/d
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Password: #這里的密碼是sam用戶自己的密碼,而不是root的密碼
幾個操作:
1) 編輯/etc/sudoers文件,使用visudo命令,
Shell> visudo
其實visudo命令也是調用vi去編輯sudoer文件的,但是在保存時會去檢查你修改后文件的語法,如果錯誤是不能保存的,但是如果直接用vi來編輯該文件,強制保存雖然成功,但是如果有語
法錯誤這里並不能給出提示,也就導致了后面sudo命令的不可用.
2) 記錄解析:
Sam ALL=(ALL) ALL
使用者帳戶 登入的主機=(可以變換的身份) 可以下達的命令
上述語句的意思是 sam用戶可以在任何地方登錄,並可切換成任何用戶進行任何操作.這里如果(ALL)不寫,只寫為 sam ALL=ALL,他默認只能切換為root用戶.
>>參考4====================================
linux chown命令參數及用法詳解--改變檔案的所有者:
要更改文件 program.c 的所有者: chown jim program.c
program.c 的用戶訪問權限現在應用到 jim。作為所有者,jim 可以使用 chmod 命令允許或拒絕其他用戶訪問 program.c。
要將目錄 /tmp/src 中所有文件的所有者和組更改為用戶 john 和組 build:chown -R john:build /tmp/src
如: tomcat的安裝目錄的所有者修改(#chown -R user:group /usr/java/tomcat5.5)
