Linux 創建修改刪除用戶和組

来源:http://www.cnblogs.com/chenmh/archive/2016/05/05/5459359.html
-Advertisement-
Play Games

介紹 在日常的維護過程中創建用戶操作用的相對會多一些,但是在這個過程中涉及到的知識點就不單單就是useradd了,接下來就來詳細瞭解賬號管理的相關信息。 用戶信息 先從用戶信息開始分析,可以通過查詢/etc/password文件,每一行代表一個用戶信息 介紹 在日常的維護過程中創建用戶操作用的相對會 ...


介紹

在日常的維護過程中創建用戶操作用的相對會多一些,但是在這個過程中涉及到的知識點就不單單就是useradd了,接下來就來詳細瞭解賬號管理的相關信息。

 

 

用戶信息

先從用戶信息開始分析,可以通過查詢/etc/password文件,每一行代表一個用戶信息
root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

mysql:x:496:501::/home/mysql:/bin/bash

每個冒號分隔一部分,整行總共分為7個部分。

1.用戶名

2.用戶密碼,早期版本的賬號密碼是直接存在這裡,為了相容所以也保留下了這部分,用X代替。

3.UID:所屬的用戶ID,每個文件的前面都有該文件所屬的用戶和組,其實存的是UID只不過是通過UID再去etc/password、/etc/shadow中找到對應的UID和GID的名稱。

超級用戶的uid=0

系統用戶(1-499):其中1-99是系統創建的,100-499是用戶創建的系統賬戶,系統用戶不能登入但是可以執行系統的一些命令,這個跟最後指定的shell有關;有一個特殊的shell是/sbin/nologin

普通用戶(500-65535)

4.GID:賬號所屬的用戶組ID,和/etc/group組文件有關聯

5.用戶描述

6.用戶的家目錄:創建用戶的家目錄預設是在/home/用戶/,在創建用戶的時候可以指定用戶的家目錄,系統用戶的家目錄比較特殊,比如root用戶的家目錄是/root

7.shell:shell是終端和kernel(內核)溝通的橋梁、內核再和低層的硬體交互(包括CPU、主板、硬碟、顯卡、光碟機等),linux預設的shell是/bin/bash

 

密碼信息

用戶密碼文件中每一行記錄一個用戶的密碼信息,總共有九個部分

[root@localhost ~]# cat /etc/shadow
root:$1$4/CBv0UU$GZ1mEvqxy6/9UaTGI9YUT0:16862:0:99999:7:::

1.用戶名:對應/etc/password文件中的用戶信息

2.密碼:密碼存的是密文

3.最近更改密碼的日期:linux將1970年1月1日作為1,所以上面的16862是累加的,具體就不去算了

4.密碼不可被更改的天數:0代表密碼隨時可以被更改,通常可以用來設置某個用戶在多少天密碼不能被更改

5.密碼需要重新更改的天數:99999為273年,改時間是在第3部分的基礎上再相加的。

6.密碼需要修改前的警告天數:改天數是在第5的基礎上計算的,這裡預設是7天也就是密碼在需要更改前的第7天開始就發出警告。

7.密碼過期後賬號寬限的天數:當密碼超過了需要更改的天數後,如果用戶依然沒有更改密碼,那麼該密碼就過期了,在過期的這幾天里密碼依舊可以登入當用戶在寬限的時間內登入系統系統會強制用戶修改密碼,如果用戶在寬限的天內還未修改密碼那麼密碼就永久過期無法再登入,只有賬戶超出了密碼過期的天數之後賬戶才失效,所以一個賬戶總的有效時間是3+6+7。

8.用戶失效的日期:改日期同第3部分一樣都是從1970年1月1日開始計算出來的數字,超過這個日期之後無論用戶密碼是否過期用戶都失效不能再使用,改日期通常會用在規定一個用戶在規定的日期之後就用戶就不能使用的收費系統中。

9.保留部分

 

計算當前日期通過1970年換算過來的數字

[root@localhost ~]# echo $(($(date +'%s')/86400+1))
16927

計算指定日期通過1970年換算過來的數字

[root@localhost ~]# echo $(($(date --date="2016-01-01" +'%s')/86400+1))
16802

 

創建用戶

 明白了上面的概念之後就可以來創建用戶了,創建用戶的命令是useradd,接下來看幾個主要的參數。

 useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m\M] [-c 說明] [-d 家目錄絕對路徑] [-s shell] 賬號名
  -c, --comment COMMENT         用戶說明
  -d, --home-dir HOME_DIR       用戶的家目錄
  -D, --defaults                預設的用戶配置
  -e, --expiredate EXPIRE_DATE  用戶的失效日期,這裡需要指定的是從1970年1月1日開始計算出來的數字,比如16925代表2016年5月4日過期,對應密碼文件的第8部分
  -f, --inactive INACTIVE       指定密碼過期的時間,這裡指定的是數字,比如10代表密碼在過期的10天內還可以登入但是登入後需要強制修改密碼, 對應密碼文件的第7部分
  -g, --gid GROUP               用戶的GID
  -G, --groups GROUPS           列出用戶還能加人的組、次要組
-h, --help 幫助信息 -k, --skel SKEL_DIR use this alternative skeleton directory -K, --key KEY=VALUE override /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home 強制需要創建家目錄 -M, --no-create-home 強制不創建家目錄 -N, --no-user-group 不創建用戶的組名和用戶名一樣 -o, --non-unique 允許創建的用戶uid相同,預設情況下用戶的UID是唯一的,加上-o參數可以創建相同UID的不用用戶
-p, --password PASSWORD 指定創建用戶的密碼,這裡的密碼存儲的是密文,所以還需要知道密文對應的明文密碼是多少 -r, --system 創建一個系統用戶 -s, --shell SHELL 指定用戶的shell -u, --uid UID 指定用戶的uid -U, --user-group 創建的用戶組名同用戶名,這是預設的
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

 

1.創建用戶test

創建用戶不加參數預設會創建一個同名的用戶組、密碼為空,用戶的UID和GID都是500之後在現有的UID和GID的基礎上往後自動添加、預設會創建一個同名的家目錄家目錄的預設許可權是700

[root@localhost ~]# useradd test
[root@localhost ~]# grep test /etc/passwd /etc/shadow /etc/group
/etc/passwd:test:x:501:502::/home/test:/bin/bash
/etc/shadow:test:!!:16925:0:99999:7:::
/etc/group:test:x:502:

  [root@localhost ~]# ll -d /home/test
  drwx------. 4 test test 4096 May 4 16:25 /home/test

 

2.創建用戶new備註用戶為test,指定用戶UID為600,用戶的組初始組為test、用戶的次要組為mysql,指定用戶的失效日期(註意這裡的失效日期也是需要通過1970年1月1日進行換算)、指定用戶的過期天數

3.創建系統用戶old

創建的系統用戶雖然在用戶文件中有指定家目錄,但是實際上在home目錄下並不會創建對應用戶的目錄,且不會創建用戶郵件通知目錄。

 4.創建不允許登入的用戶

 5.指定用戶家目錄

先創建用戶家目錄

[root@localhost ~]# mkdir -p /test/home
[root@localhost ~]# mkdir /test/home/testuser

創建用戶並指定家目錄

[root@localhost ~]# useradd -d /test/home/testuser testuser
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

註意:這裡的家目錄是絕對路徑,也就是你指定了那個目錄家目錄就是哪個目錄不會在你指定的目錄下再創建目錄,這裡會有警告說用戶不能拷貝文件到家目錄,因為家目錄的許可權還是之前創建目錄用戶的許可權,這個時候需要給家目錄賦予用戶擁有者。

[root@localhost ~]# chown testuser:testuser /test/home/testuser
[root@localhost ~]# ll /test/home
total 4
drwxr-xr-x. 2 testuser testuser 4096 May  5 06:22 testuser
[root@localhost ~]# 

 

刪除用戶

userdel [options] LOGIN
  -f, --force                   強制刪除用戶,不管該用戶是否在使用                             
-h, --help 幫助信息
-r, --remove 刪除用戶和組並且刪除用戶的家目錄和郵件通知目錄 -Z, --selinux-user 刪除SELinux用戶

1.不加參數刪除用戶

userdel testuser

不加參數刪除只會刪除用戶、密碼、用戶組,不會刪除用戶的家目錄和用戶的郵件目錄

2.刪除用戶同時刪除用戶的家目錄和郵件通知目錄

userdel -r test

使用-r參數刪除用戶會同時刪除用戶的家目錄和用戶的郵件通知目錄,如果用戶的用戶組是使用其它用戶的用戶組,其它用戶組不會被刪除。

 

用戶組

創建用戶組

groupadd groupname

刪除用戶組

groupdel groupname

修改用戶組

--修改用戶組名
groupmod -h newname oldname

--修改用戶組ID
groupmod -g newgid oldgid

單獨對用戶組的操作用的不會很多,這裡只需要瞭解一下就好。

總結

 修改用戶這裡就不做詳細的解釋,跟創建用戶的語法相差不大,

 

 

 

備註:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 北韓的 IT 應用狀況並不為外界所熟知,過去媒體紛紛報道,北韓已故領導人金正日酷愛蘋果電子產品,而最近一份調查報告顯示,在北韓個人電腦操作系統市場,蘋果 MAC OS X 系統位居第一名,遙遙領先微軟 Windows。 據美國科技新聞網站 Softpedia 於 5 月 5 日報道,科技市場研究公司 ...
  • 由於windows在安裝時,boot loader會預設裝在MBR及分割槽的boot sector中,而且並不提供開機選單;而linux在安裝時安裝程式可以選擇是安裝在MBR中還是boot sector中,同時可以手動選單,並把windows開機選項加入開機選單中,若最後安裝windows,則會覆蓋 ...
  • ...
  • # 刪除 untracked files git clean -f # 連 untracked 的目錄也一起刪掉 git clean -fd # 連 gitignore 的untrack 文件/目錄也一起刪掉 (慎用,一般這個是用來刪掉編譯出來的 .o之類的文件用的) git clean -xfd ...
  • 首先,先選擇好你要安裝的iso文件(一般下載好Apache後,把該文件包製作成iso鏡像文件),然後選擇確定,如下圖所示: 進入系統後,以root用戶模式,輸入以下命令: 掛載光碟機,輸入以下命令: 進入/mnt目錄下,輸入以下命令: 把你要安裝的文件複製到/home目錄下,命令如下: 切換到/hom ...
  • 1、套接字的創建和關閉 使用套接字之前,必須使用socket函數創建一個套接字,此函數調用成功將返回一個套接字句柄。 type參數指定套接字的類型。套接字有流套接字、數據報套接字和原始套接字。 SOCK_STREAM 流套接字,使用TCP提供有連接的可靠的傳輸。 SOCK_DGRAM 數據報套接字, ...
  • 解壓這樣的壓縮包,會在當前用戶的家目錄下解壓:~./xxxx;加參數-C :tar -xvf xxx.tar -C / ;來指定根。 最好的是在解壓的時候也加參數P如:tar -xvPf xxx.tar ...
  • Linux伺服器時間同步 Linux伺服器時間同步 Linux伺服器時間同步 導讀 Linux伺服器運行久時,系統時間就會存在一定的誤差,一般情況下可以使用date命令進行時間設置,但在做資料庫集群分片等複雜操作時對多台機器的時間差是有要求的,此時就需要使用ntpdate進行時間同步。 Linux時 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...