Linux之用戶管理--初級上
管理用戶命令匯總
命令 | 註釋說明(特殊顏色的必須掌握) |
---|---|
useradd增 | 同adduser命令,執行此命令可在系統中添加用戶。(更改4個用戶文件) |
userdel刪 | 執行此命令可刪除用戶及相關用戶的配置或文件(更改4個用戶文件) |
passwd | 執行此命令可為用戶設置或修改密碼。更改/etc/shadow文件 |
chage | 修改用戶密碼屬性。管理/etc/shadow文件 |
usermod改 | 修改用戶信息的命令,可以通過usermod來修改登錄名,用戶的家目錄等等 |
id查 | 查看用戶的UID,GID及所歸屬的用戶組 |
su | 用戶角色切換工具。su - |
sudo |
|
visudo | visudo配置sudo權限的編輯命令;也可以不用這個命令,直接用vi來編輯/etc/sudoers實現。但推薦用visudo來操作(會自動檢查語法) |
管理用戶組命令匯總
命令 | 註釋說明(特殊顏色標記需要掌握) |
---|---|
groupadd | 添加用戶組 |
groupdel | 刪除用戶組 |
/etc/skel目錄是用來存放新用戶環境變量文件的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被復制到新添加的用戶的家目錄下:默認情況下,/etc/skel目錄下的所有文件都是隱藏文件(以.點開頭的文件);通過修改、添加、刪除/etc/skel目錄下的文件,我們可為新創建的用戶提供統一的,標準的,初始化用戶環境。
[[email protected] ~]# cd /etc/skel [[email protected]skel]# ls readme [[email protected] skel]# ls -al total 20 drwxr-xr-x. 2 root root 4096 May 12 22:14 . drwxr-xr-x. 79 root root 4096 May 16 17:07 .. -rw-r--r--. 1 root root 18 May 11 2016 .bash_logout -rw-r--r--. 1 root root 176 May 11 2016 .bash_profile -rw-r--r--. 1 root root 124 May 11 2016 .bashrc -rw-r--r--. 1 root root 0 May 12 22:14 readme [[email protected] skel]#
命令說明: 在/etc/skel/目錄下創建一個文件readme,然後我們創建一個新用戶,發現在用戶的家目錄裏也默認有一個readme。因此,得出結論,/etc/skel/目錄下的所有文件都會默認出現在新建用戶的家目錄裏。
[[email protected] ~]# su - cheng [[email protected] ~]$ ls -al total 24 drwx------. 2 cheng cheng 4096 May 13 01:23 . drwxr-xr-x. 7 root root 4096 May 12 22:15 .. -rw-------. 1 cheng cheng 125 May 13 01:23 .bash_history -rw-r--r--. 1 cheng cheng 18 May 11 2016 .bash_logout -rw-r--r--. 1 cheng cheng 176 May 11 2016 .bash_profile -rw-r--r--. 1 cheng cheng 124 May 11 2016 .bashrc -rw-r--r--. 1 cheng cheng 0 May 12 22:14 readme [[email protected] ~]$
企業面試題:請問如下登錄故障的原理及解決辦法?
-bash-4.1$ -bash-4.1$
問題示例: 命令說明:普通用戶強制刪除了家目錄裏的變量文件就會出現這種問題。
[[email protected] ~]$ ls -al total 20 drwx------. 2 teacher teacher 4096 May 30 23:32 . drwxr-xr-x. 7 root root 4096 May 12 22:15 .. -rw-------. 1 teacher teacher 149 May 30 23:32 .bash_history -rw-r--r--. 1 teacher teacher 176 May 11 2016 .bash_profile -rw-r--r--. 1 teacher teacher 124 May 11 2016 .bashrc [[email protected] ~]$ rm ./.bash* [[email protected] ~]$ ls -al total 8 drwx------. 2 teacher teacher 4096 May 30 23:34 . drwxr-xr-x. 7 root root 4096 May 12 22:15 .. [[email protected] ~]$ exit logout [[email protected] ~]# su - teacher -bash-4.1$
解決方法:我們去把/etc/skel/目錄下的變量文件復制回來就好了
[[email protected] ~]# su - teacher -bash-4.1$ -bash-4.1$ cp /etc/skel/.bash* ~ -bash-4.1$ exit logout [[email protected] ~]# su - teacher [[email protected] ~]$ ls -al total 24 drwx------. 2 teacher teacher 4096 May 30 23:36 . drwxr-xr-x. 7 root root 4096 May 12 22:15 .. -rw-------. 1 teacher teacher 80 May 30 23:36 .bash_history -rw-r--r--. 1 teacher teacher 18 May 30 23:36 .bash_logout -rw-r--r--. 1 teacher teacher 176 May 30 23:36 .bash_profile -rw-r--r--. 1 teacher teacher 124 May 30 23:36 .bashrc [[email protected] ~]$
知識擴展*和.*的問題
[[email protected] etc]# cp /etc/skel/* /tmp/ [[email protected] etc]# cd /tmp/ [[email protected] tmp]# ls etc mysql.sock readme [[email protected] tmp]# ls -al total 16 drwxrwxrwt. 4 root root 4096 May 30 23:48 . dr-xr-xr-x. 24 root root 4096 May 12 15:28 .. drwxrwxrwt. 2 root root 4096 Nov 12 2016 .ICE-unix drwxr-xr-x. 8 root root 4096 Nov 20 2016 etc srwxrwxrwx. 1 mysql mysql 0 May 10 21:08 mysql.sock -rw-r--r--. 1 root root 0 May 30 23:48 readme [[email protected] tmp]#
*不復制隱藏文件,所以/etc/skel/目錄下的隱藏文件不會復制到/tmp/目錄下
那麽在運行cp /etc/skel/.*之前,我們先看看.*裏都有什麽東西? [[email protected] ~]# ls /etc/skel/.* /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc /etc/skel/.: readme /etc/skel/..: ConsoleKit inputrc quotatab DIR_COLORS iproute2 rc DIR_COLORS.256color issue rc.d DIR_COLORS.lightbgcolor issue.bak rc.local NetworkManager issue.net rc.sysinit X11 issue.net.bak rc0.d abrt kdump-adv-conf rc1.d acpi kdump.conf rc2.d adjtime krb5.conf rc3.d aliases latrace.conf rc4.d aliases.db latrace.d rc5.d alsa ld.so.cache rc6.d 東西太多以下省略....
.*連etc下的東西都復制出來了,這是為什麽呢?別忘了,目錄下都還有些什麽東西,還有.和..
.代表當前目錄,..代表上級目錄。因此.*就把上級目錄的所有文件也復制了。所以我們在復制隱藏文件的時候不能用.*來代表所有。
用戶管理命令詳解
添加用戶命令useradd
- 添加用戶的命令有useradd和adduser,這兩個命令所能達到的效果是一樣的。當然除了useradd和adduser命令以外,我們還能通過修改用戶配置文件/etc/passwd和/etc/group及手動創建文件的辦法來直接添加用戶,不過這裏並不推薦,這裏建議大家統一使用useradd命令,本文也僅會針對useradd命令進行舉例講解。
- 當使用useradd命令不加參數選項,後面直接跟所添加用戶名時,系統首先會讀取配置文件/etc/login.defs和/etc/default/useradd中所定義的參數或規則,根據設置的規則添加用戶,同時會向/etc/passwd和/etc/group文件內添加新建用戶和用戶組記錄。
- 當然/etc/passwd和/etc/group的加密資訊文件/etc/shadows和/etc/gshadow也會同步生成記錄,同時系統還會根據/etc/default/useradd文件中所配置的信息建立用戶的家目錄,並復制/etc/skel中的所有文件(包括隱藏的環境配置文件)到新用戶的家目錄中。
useradd語法:
[[email protected] ~]# man useradd #下面的內容源於此命令幫助的結果,對於部分地方做了修改
名稱:
useradd - 賬號建立或更新新用戶資訊的工具
語法:
useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,....]]
[-m [-k skeleton_dir] | -M] [-s shell]
[-u uid[-o][-n][-r] login]
useradd -D [-g default_group] [-b default_home]
[-f default_inactive] [-e default_expire_date]
[-s default_shell]
描述:
新賬號建立
當不加-D 參數時,useradd指令使用命令列來指定新賬號的設定值和使用系統上的預設值(指前文提到的/etc/login.defs和/etc/default/useradd等配置文件)。新用戶賬號將產生一些系統檔案,如用戶目錄的建立,拷貝起始檔案等,這些均可以利用命令列選項指定。此版本為Red Hat Linux 提供,可幫每個新加入的用戶建立和用戶同名的group,要達到這個目的,不能添加-n選項。
為了方便查看,我們用表格的方式把useradd可使用的參數選項展現給大家如下所示:
|useradd 參數選項|註釋說明(特殊顏色的需要掌握)|
|--|--|
|-c comment|新賬號password檔的說明欄|
|-d home_dir|新賬號每次登入時所使用的home_dir.預設值為default_home內login名稱,並當成登入時目錄名稱|
|-e expire_date|賬號終止日期。日期的指定格式為MM/DD/YY或者YYYY-MM-DD
|
|-f inactive_day|賬號過期幾日後永久停權。當值為0時賬號則立刻被停權。而當值為-1時則關閉此功能,預設值-1|
|-g initial_group|group 名稱以數字來作為用戶登入起始用戶組(group)。用戶組名須為系統現有存在的名稱。用戶組數字也須為現有存在的用戶組,預設的用戶組數字為1.
|
|-G group,[...]|定義此用戶為多個不同groups的成員,每個用戶組使用“,”逗號分隔。用戶組名同-g選項的限制。默認值為用戶的起始用戶組。|
|-m|用戶目錄如不存在則自動建立。|
|-M|不建立用戶家目錄,優先於/etc/login.defs文件的設定。一般創虛擬用戶時不建立家目錄,部署服務時需要創建虛擬用戶。
|
|-n|默認情況用戶的用戶組與用戶的名稱會相同。如果命令加了-n參數,就不會生成和用戶同名的用戶組了。|
|-r| 此參數是用來建立系統賬號。|
|-s shell|用戶登入後使用的shell名稱。默認值不填寫,這樣系統會幫你指定預設的登入shell(根據/etc/default/useradd預設的值)。cat /etc/shells系統支持的shell
|
|-u uid|用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可為負值
|
示例1:useradd -c,-u,-G,-s,-d,-m多個參數組合例子,自定義用戶家目錄。
示例2:新建用戶默認的賬號終止日期
示例3:添加用戶時的默認shell類型/bin/bash改為/bin/sh
[[email protected] ~]# cat /etc/shells #查看當前系統支持的shell種類 /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh [[email protected] ~]# grep SHELL /etc/default/useradd #查看當前默認的shell配置 SHELL=/bin/bash [[email protected] ~]# useradd -D -s /bin/sh #修改為/bin/sh [[email protected] ~]# grep SHELL /etc/default/useradd #查看修改結果 SHELL=/bin/sh #修改成功View Code
特別提示,這裏僅更改了配置文件的默認值,僅對之後建立的新用戶生效,和老用戶無關。
註意了,這裏我更改shell類型之後,useradd新增用戶時發現登陸,會出現如下登陸故障!
-bash-4.1$ -bash-4.1$
Linux之用戶管理--初級上