1. 程式人生 > >Linux之用戶管理--初級上

Linux之用戶管理--初級上

bashrc shell dump 面試 history 解決辦法 普通用戶 為什麽 同時

管理用戶命令匯總

命令註釋說明(特殊顏色的必須掌握)
useradd增 同adduser命令,執行此命令可在系統中添加用戶。(更改4個用戶文件)
userdel刪 執行此命令可刪除用戶及相關用戶的配置或文件(更改4個用戶文件)
passwd 執行此命令可為用戶設置或修改密碼。更改/etc/shadow文件
chage 修改用戶密碼屬性。管理/etc/shadow文件
usermod改 修改用戶信息的命令,可以通過usermod來修改登錄名,用戶的家目錄等等
id查 查看用戶的UID,GID及所歸屬的用戶組
su 用戶角色切換工具。su -
sudo

sudo是通過另一個用戶來執行命令,su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo能在命令後面直接接命令執行,

比如sudo ls /root,不需要root密碼就可以執行只有root才能執行的相應命令或具備的目錄權限;這個權限需要通過visudo命令或者直接編輯/etc/sudoers來實現

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之用戶管理--初級上