1. 程式人生 > >2017-11-17Linux基礎知識(12)用戶和組的管理命令

2017-11-17Linux基礎知識(12)用戶和組的管理命令

linux 基礎


在上一章中我們講述了通配符(bash globing)以及IO重定向及管道,以及介紹了用戶管理的基本概念,主要講述了其用戶類別和組類別及管理用戶和組的數據庫文件,在用戶類別當中分為管理員和普通用戶這兩個大類,而普通用戶又分為系統用戶和登錄用戶這個兩類。之後在組類別當中介紹了其管理組和普通用戶組還有一個組類別是基本組和附加組,最後一個組類別為似有組和公共組,那麽接下來我們講述Linux用戶和組的管理命令。

一、安全上下文

我們都知道,所有的進程都是使用發起者的身份來運行,那麽對於操作系統來講,所謂運行的程序無非就是背後運行的很多進程,比如:內核以及相關的進程,以及後臺的服務管理進程,咱們稱之為後臺進程,對於文件的訪問其實都不是"人"在訪問,而是進程在訪問,比如說我們使用ls命令訪問某個文件,其實是ls的進程在訪問,每一個進程訪問一些資源時,它一定代表某個用戶來運行的。比如說:張三發起的命令則是以他的身份來運行,root也是如此,只不過訪問的被賦予的權限不一樣,因為普通用戶沒有權限訪問其敏感文件(例如/etc/passwd或/etc/shadow),所以說命令的執行就代表著用戶的執行,命令都是以某個用戶的身份來運行,而運行程序有兩類,分別是開機時啟動和通過終端認為啟動,開機自動啟動也必須用普通用戶所屬的的權限來運行,但這個用戶從來不登錄該系統,僅僅是讓某個進程在運行時能以一個普通用戶的身份在做,而這個就叫做系統用戶,同時這個機制我們稱之為安全上下文,所以我們總結一下安全上下文:

   安全上下文:
	進程以其對發起者的身份運行:
		進程對於文件的訪問權限,取決於此進程的用戶以及用戶所屬的權限;
   系統用戶:為了能夠讓那些後臺進程或服務類進程以非管理員的身份運行,通常需要創建多個普通用戶;這類用戶從不用登錄系統

二、用戶和組等管理命令

首先我們說一下管理組的命令,第一個就是groupadd命令,該命令是添加一個組的命令,常用的選項也是很少的,命令格式也很簡單,如下為:

   # groupadd [OPTIONS] GROUPNAME

該命令的選項如下:

   -g GID:指定GID;默認是上一個的GID+1;
   -r:創建系統組;

添加組之後我們還可以進行修改組的屬性,那麽修改組屬性的命令為groupmod,使用格式如下:

   # groupmod [OPTIONS] GROUP_NAME

該命令的的選項如下:

   -g GID:修改GID;
   -n new_name:修改組名;

我們還可以刪除某一個組,刪除某一個組的命令為groupdel命令,命令格式為:

   # groupdel [OPTIONS] GROUP_NAME

以上就是創建、修改和刪除一個組的命令,對於組命令,暫時了解到這裏,下面我們說一下關於用戶管理的命令。
首先我們創建一個用戶為useradd命令,需要註意的是,如果創建用戶沒有指定一個組的話,就會自動創建一個私有組。

   # useradd [OPTIONS] LOGIN

該命令的選項如下:

   -u, --uid UID:指定UID;
   -g, --gid GROUP:指定基本的組ID,此組需要事先存在;
   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:可以批量添加組成員;
   -c, --comment COMMENT:指明註釋信息;
   -d, --home-dir HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel為此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;
   -s, --shell SHELL:指定用戶的默認shell,可支持的所有shell列表存儲在/etc/shells文件中;
   -r, --system:創建系統用戶;

需要註意的是,我們默認useradd創建用戶的話,則在創建用戶的時候的諸多使用默認設定的設定配置文件為:/etc/login.defs。不過我們可通過以命令的方式來修改;

   useradd -D:顯示創建用戶的默認配置;
   useradd -D OPTIONS:修改默認選項的值;

其修改的結果保存在/etc/default/useradd文件中;
那麽以上就是如何添加用戶,以及介紹了添加用戶的修改選項,接下來我們來說一下修改用戶的屬性命令,其命令格式如下:

   # usermod [OPTIONS] LOGIN

該命令的選項如下:

   -u, --uid UID:修改用戶的ID為此指定新的ID;
   -g, --gid GROUP:修改用戶所屬的基本組;
   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
   -a, --append:與-G一同使用,用於為用戶追加新的附加組;
   -c, --comment COMMENT:修改註釋信息;
   -d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
   -m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;
   -l, --login NEW_LOGIN:修改用戶名;
   -s, --shell SHELL:修改用戶默認的shell;

   -L, --lock:鎖定用戶的密碼;即在/etc/shadow文件中,用戶原來的密碼字符串之前添加一個"!";
   -U, --unlock:解鎖用戶密碼;

接下來是刪除某個用戶,那麽刪除某個用戶使用的是userdel命令,命令的格式為:

   # userdel [OPTIONS] LOGIN

該命令的選項如下:

   -r:刪除用戶時一並刪除其家目錄;

2.1 練習題

1、創建用戶gentoo,UID為4801,基本組為gentoo,附加組為distro(UID為5000)和peguin(GID)為5001。

   # useradd -u 4801 -g gentoo -G distro,peguin gentoo

2、創建用戶fedora,註釋信息為"Fedora Code",默認shell為/bin/tcsh。

   # useradd -c "Fedora Code" -s /bin/tcsh fedora

3、修改gentoo用戶的家目錄為/var/tmp/gentoo;要求其原有文件仍能被用戶訪問。

   # usermod -md /vat/tmp/gentoo gentoo

4、為gentoo新增附加組為netadmin。

   # usermd -G netadmin gentoo

現在我們該介紹一下passwd命令,一般添加完用戶之後,我們打開新的終端登錄該用戶時,如果沒有密碼的話,為了安全起見,是登錄不上去的,所以我們要給用戶設定密碼,認證該用戶是否能登錄該系統,密碼正確登錄該shell,密碼錯誤就不能登錄進去。那麽設定密碼的命令為passwd,格式如下:

   # passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

我們看到這個命令格式是很長的,我們在管理員模式下,供兩種方法可以使用:

   (1) passwd:修改用戶自己的密碼;
   (2) passwd USERNAME:修改指定用戶的密碼,

該命令的選項如下:

   -l, -u:鎖定和解鎖該用戶;
   -d:清除用戶密碼串;
   -e DATE:過期期限,日期;
   -i DAYS:非活動期限;
   -n DAYS:密碼最短使用期限;
   -x DAYS:密碼最長使用期限;
   -w DAYS:警告期限;

   --stdin:鍵盤的標準輸入;
	echo "PASSWORD" | passwd --sdtin USERNAME

除了我們可以給用戶設置密碼之外,我們還可以給組設置密碼,那麽組密碼的設置命令為gpasswd,其命令格式為:

   # gpasswd [OPTIONS] GROUP

該命令的選項如下:

   -a USERNAME:向組中添加用戶;
   -d USERNAME:向組中移除用戶;

還有一條命令是將某個用戶可臨時切換為指定為基本組的命令,這個命令就是newgrp命令,格式為:

   # newgrp [-] [group]
   -:會模擬用戶重新登錄以實現重新初始化其工作環境;

接下來我們說一下chage命令,該命令是更改用戶密碼的過期信息,當密碼失效時就是通過此命令來管理的。其命令格式如下:

   # chage [OPTIONS]... [USER]

該命令的選項如下:

   -d:上一次更改的日期;
   -E:帳號到期的日期,過了這天,此帳號將不可用;
   -W:用戶密碼到期前,提前收到警告信息的天數;
   -m:密碼可更改的最小的天數。為0代表任何時候都可以更改密碼;
   -M:密碼保持有效的最大天數;

還有一種就是顯示用戶真實和有效的ID,該命令就叫id命令,顯示指示用戶或當前用戶(當未指定用戶時)的用戶與組信息。

   # id [OPTIONS]... [USERS]

該命令的選項如下:

   -u:僅顯示有效的UID;
   -g:僅顯示用戶的基本組ID;
   -G:僅顯示用戶所屬的所有組ID;
   -n:顯示名字而非ID;

那麽嚇一條命令是su命令,該命令是運行替換用戶和組的標識,也是切換用戶的一種命令,格式如下:

   # su [OPTIONS]... [-] [USER [ARG]]

su命令有兩種登錄切換模式,一種是登錄式切換,另一種是非登錄式切換。
登錄式切換:會通過讀取目標用戶的配置文件來重新初始化。

   # su - USERNAME
   # SU -l USERNAME

非登錄式切換:不會讀取目標用戶的配置文件進行初始化。

   # su USERNAME

需要註意的是:管理員可無密碼切換至其它任何用戶;非管理員用戶在切換用戶時要給出其目標用戶的密碼。該命令格式如下:

   -c `COMMAND`:僅以指定用戶的身份運行此處指定的命令;

其實還有幾個其它的命令,在下一章中我們進行講解。例如:

   chsh, chfn, finger, whoami, pwck, grpck

那麽現在對用戶和組的管理命令做一個總結:

   groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, su, id, chage

本文出自 “天蠍座” 博客,轉載請與作者聯系!

2017-11-17Linux基礎知識(12)用戶和組的管理命令