Linux之使用者管理--初級上,linux使用者管理--

來源:互聯網
上載者:User

Linux之使用者管理--初級上,linux使用者管理--

 

系統管理使用者命令匯總
命令 注釋說明(特殊顏色的必須掌握)
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目錄下的檔案,我們可為新建立的使用者提供統一的,標準的,初始化使用者環境。

[root@chengliang ~]# cd /etc/skel[root@chengliang skel]# lsreadme[root@chengliang skel]# ls -altotal 20drwxr-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[root@chengliang skel]# 

 

命令說明: 在/etc/skel/目錄下建立一個檔案readme,然後我們建立一個新使用者,發現在使用者的家目錄裡也預設有一個readme。因此,得出結論,/etc/skel/目錄下的所有檔案都會預設出現在建立使用者的家目錄裡。

[root@chengliang ~]# su - cheng[cheng@chengliang ~]$ ls -altotal 24drwx------. 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[cheng@chengliang ~]$ 

 

企業面試題:請問如下登入故障的原理及解決辦法?
-bash-4.1$-bash-4.1$

問題樣本: 命令說明:普通使用者強制移除了家目錄裡的變數檔案就會出現這種問題。

[teacher@chengliang ~]$ ls -altotal 20drwx------. 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[teacher@chengliang ~]$ rm ./.bash*[teacher@chengliang ~]$ ls -altotal 8drwx------. 2 teacher teacher 4096 May 30 23:34 .drwxr-xr-x. 7 root    root    4096 May 12 22:15 ..[teacher@chengliang ~]$ exitlogout[root@chengliang ~]# su - teacher-bash-4.1$ 

解決方案:我們去把/etc/skel/目錄下的變數檔案複製回來就好了

[root@chengliang ~]# su - teacher-bash-4.1$ -bash-4.1$ cp /etc/skel/.bash* ~-bash-4.1$ exitlogout[root@chengliang ~]# su - teacher[teacher@chengliang ~]$ ls -altotal 24drwx------. 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[teacher@chengliang ~]$ 

知識擴充*和.*的問題

[root@chengliang etc]# cp /etc/skel/* /tmp/[root@chengliang etc]# cd /tmp/[root@chengliang tmp]# lsetc  mysql.sock  readme[root@chengliang tmp]# ls -altotal 16drwxrwxrwt.  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-unixdrwxr-xr-x.  8 root  root  4096 Nov 20  2016 etcsrwxrwxrwx.  1 mysql mysql    0 May 10 21:08 mysql.sock-rw-r--r--.  1 root  root     0 May 30 23:48 readme[root@chengliang tmp]#

*不複製隱藏檔案,所以/etc/skel/目錄下的隱藏檔案不會複製到/tmp/目錄下

那麼在運行cp /etc/skel/.*之前,我們先看看.*裡都有什麼東西?[root@chensiqi1 ~]# ls /etc/skel/.*/etc/skel/.bash_logout  /etc/skel/.bash_profile  /etc/skel/.bashrc/etc/skel/.:readme/etc/skel/..:ConsoleKit               inputrc                       quotatabDIR_COLORS               iproute2                      rcDIR_COLORS.256color      issue                         rc.dDIR_COLORS.lightbgcolor  issue.bak                     rc.localNetworkManager           issue.net                     rc.sysinitX11                      issue.net.bak                 rc0.dabrt                     kdump-adv-conf                rc1.dacpi                     kdump.conf                    rc2.dadjtime                  krb5.conf                     rc3.daliases                  latrace.conf                  rc4.daliases.db               latrace.d                     rc5.dalsa                     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文法:

[root@chensiqi ~]# 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

[root@chensiqi1 ~]# cat /etc/shells #查看當前系統支援的shell種類 /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看當前預設的shell配置SHELL=/bin/bash[root@chensiqi1 ~]# useradd -D -s /bin/sh #修改為/bin/sh[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看修改結果SHELL=/bin/sh #修改成功View Code

特別提示,這裡僅更改了設定檔的預設值,僅對之後建立的新使用者生效,和老使用者無關。

注意了,這裡我更改shell類型之後,useradd新增使用者時發現登陸,會出現如下登陸故障!

-bash-4.1$-bash-4.1$

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.