1. 程式人生 > >使用者組管理系列(一):增刪改查

使用者組管理系列(一):增刪改查

1、什麼是使用者和組

每個使用者都擁有一個唯一的使用者名稱和一個與之相關聯的數值型的使用者標識UID,使用者可以隸屬於一個或多個組,而每個組也都擁有唯一的一個名稱和一個組識別符號GID,對於程序和核心來說,只識別UID和GID,使用者名稱和組名最終都會通過/etc/passwd和/etc/group這倆個數據庫轉換為UID和GID來標識。這兩個ID的主要用途如下:

    ● 確定各種系統資源的所有權

    ● 對賦予程序訪問上述資源的許可權加以控制

2、使用者管理

    <1>使用者檔案

檔案 內容
/etc/passwd 使用者名稱,空密碼,UID,GID,註釋資訊,家目錄,登陸shell
/etc/shadow 使用者名稱,加密密碼,各密碼時間設定
/etc/group 組名,空組密碼,GID,組中使用者
/etc/gshadow 組名,加密密碼,組管理員列表,組中使用者

  注:可執行getent passwd USERNAME檢視/etc/passwd的特定行,和cat /etc/passwd | grep USERNAME功能相同。

      可執行pwunconv移動/etc/shadow中的加密密碼至/etc/passwd中

      可執行vipw直接開啟/etc/passwd檔案,vigr直接開啟/etc/group檔案

      可執行pwck和grpck分別檢查/etc/passwd檔案和/etc/group檔案

  /etc/shadow中密碼設定如下圖

wKiom1egDnLAqFJXAAARONLjjW4585.png

  注:可使用usermod -L USERNAME鎖定使用者,此時使用者將無法登陸,這也是空密碼無法登陸使用者的原因。但不允許無限解鎖,否則使用者無密碼即可登陸。(centos6以後的版本已彌補次缺陷)

      可使用chage -d0 USERNAME和passwd -e使得使用者密碼過期而無法登陸

        注:chage USERNAME:可修改使用者的/etc/shadow中的時間

            chfn:互動式修改使用者的註釋資訊

            finger USER:檢視使用者的詳細資訊

      可建立檔案touch /etc/nologin使得使用者下次無法登陸系統

   <2>使用者分類(CentOS 7)

UID 使用者 功能
0 超級管理員 管理計算機的全部許可權
1-999 系統使用者 執行某些服務,不用做登陸系統
1000-60000 普通使用者 管理計算機的部分許可權

   <3>使用者建立

      語法格式

        useradd [options] LOGIN

      常用選項

1     -u USERNAME:指定使用者UID
2     -g GROUPNAME:指定使用者主組(基本組),也可以是GID
3     -G GROUPNAME..:指定使用者的附加組
4     -c "COMMENT":指明使用者的註釋資訊
5     -d HOMEDIR:指明使用者的家目錄
6     -s SHELL:指定使用者的登陸shell
7     -r:新增系統使用者
8     -o: 忽略UID新增使用者

  注:系統使用者預設無家目錄和郵箱,登陸系統顯示無環境變數。如果要讓其擁有環境變數,可建立其家目錄並複製/etc/skel/下檔案到其家目錄中。如果要求其不可登陸,可設定其shell為/bin/nologin

      使用者郵箱地址:/etc/spool/mail/USERNAME

[[email protected]/home/rr]#cp /etc/skel/.[^.]* /home/rr/ -rv
[[email protected] ~]# useradd conver -r
[[email protected] ~]# su conver
bash-4.2$ su
Password: 
[[email protected] ~]# cd /home/
[[email protected] home]# mkdir conver
[[email protected] home]# cd conver/
[[email protected] conver]# cp /etc/skel/.[^.]* ./ -r
[[email protected] conver]# su conver
[[email protected] ~]$ su root
Password:
[[email protected] conver]#
[[email protected] conver]# usermod conver -s /bin/nologin
[[email protected] conver]# su conver
su: failed to execute /bin/nologin: No such file or directory

   <4>使用者屬性修改     

      語法格式

        usermod [options] LOGIN

      常用選項(-u、-g、-s、-c與useradd相似,此處不予列出)

1     -aG GROUPNAME:為使用者新增附加組
2     -md HOMEDIR:移動家目錄
3     -l NEWNAME:指定新名字
4     -L,--lock:鎖定使用者
    -U,--ulock:解鎖使用者
6     -e YYYY-MM-DD USERNAME:指定使用者密碼過期日期
7     -f INACTIVE USERNAME: 設定非活動期限
[[email protected] ~]# getent shadow user
user:$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::
[[email protected] ~]# usermod -L user
[[email protected] ~]# getent shadow user
user:!$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::

 注:也可使用chsh -s SHELLTYPE USERNME指定使用者shell型別

[[email protected] ~]# chsh -s /bin/bash user
Changing shell for user.
Shell changed.

      *使用者配置檔案屬性修改,使用者的預設屬性儲存在2個檔案中

檔案 內容
/etc/login.defs 使用者範圍,密碼期限設、加密演算法等
/etc/default/useradd 使用者登陸預設shell、預設家目錄等

   useradd -D:檢視/etc/default/useradd資訊

   useradd -D -s SHELLTYPE:修改預設shell

   useradd -D -d HOMEDIR:修改預設家目錄

[[email protected] ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[[email protected] ~]# useradd -D -s /bin/bash
[[email protected] ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  注:可使用authconfig --passalgo=ALGORITHM --update更改系統的加密機制

[[email protected] ~]# getent shadow user
user:$6$FTA6U0nc$BGoO2MC7ziXOG871bsp.jbbg25lEtcF0BWt8sRNY66n.P9npsvvIOp1L1Vx9poVuWdPJaR.7/0RyvZxmwn8EB0:17015:0:99999:7:::
[[email protected] ~]# authconfig --passalgo=sha256 --update
[[email protected] ~]# passwd user
Changing password for user user.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[[email protected] ~]# getent shadow user
user:$5$3sxrgtHo$fD3Kiyus2N2NOQMijCdV6f6kII1bWbis4evht71ISOA:17015:0:99999:7:::

   <5>使用者刪除

      語法格式

        userdel [options] LOGIN   

  -r USERNAME:刪除使用者及其家目錄

   <6>使用者檢視

       語法格式

         id [OPTION]... [USER]  

       常用選項    

1     -u USERNAME:顯示使用者的UID
2     -g USERNAME:顯示使用者的GID
3     -G USERNAME:顯示使用者所屬組的所有ID

  *也可以使用finger命令檢視

[[email protected] ~]# id -u user
1000
[[email protected] ~]# is -G user
bash: is: command not found...
[[email protected] ~]# id -u user
1000
[[email protected] ~]# id -G user
1000 4325
[[email protected] ~]# id user
uid=1000(user) gid=1000(user) groups=1000(user),4325(admins)
[[email protected] ~]# finger user
Login: user           			Name: user
Directory: /home/user               	Shell: /bin/bash
On since Thu Jul 21 14:55 (CST) on :0 from :0 (messages off)
On since Fri Jul 29 10:32 (CST) on pts/0 from :0
   20 hours 26 minutes idle
Last login Mon Aug  1 17:56 (CST) on pts/2
Mail last read Mon Aug  1 14:02 2016 (CST)

3、組管理

   <1>建立組

      語法格式

        groupadd [options] group

      常用選項

        -g GID GROUPNAME:建立指定組號的組

   <2>刪除組  

      語法格式

        groupdel group

   <3>改變組屬性

      語法格式

        groupmod [options] GROUP

      常用選項

1     -n NEW_GROUPNAME:修改組名
2     -g GID GROUPNAME:新的組ID
3     -A USERNAME.. GROUPNAME:設定組的的管理許可權列表
[[email protected] zhao]# groupadd team
[[email protected] zhao]# getent group team
team:x:4451:
[[email protected] zhao]# groupmod -g 4452 team
[[email protected] zhao]# getent group team
team:x:4452:
[[email protected] zhao]# groupmod -n team1 team
[[email protected] zhao]# getent group team1
team1:x:4452:

   <4>更改和檢視組成員 

       語法格式  

         groupmems [options] [-g GROUPNAME] 

       命令功能:檢視組內成員             

1     -a,--add USERNAME:指定使用者加入組
2     -g,--group groupname:更改為指定GID
2     -d,--delete USERNAME:從組中刪除使用者
3     -l,--list:顯示組成員列表
[[email protected] ~]# groupmems -a conver -g user
[[email protected] ~]# groupadd -g 4444 content
[[email protected] ~]# getent group content
content:x:4444:
[[email protected] ~]# groupmod -n context -g 4445 content
[[email protected] ~]# groupmems -a aa -g context
[[email protected] ~]# groupmems -l -g context
aa 
[[email protected] ~]# groupmems -d aa -g context
[[email protected] ~]# groupmems -l -g context
[[email protected] ~]#

       語法格式

         groups [OPTION]... [USERNAME]..

       命令功能:檢視成員所屬組

[[email protected] ~]# getent group admins
admins:x:4325:natasha,harry,user
[[email protected] ~]# groups user
user : user admins
[[email protected] ~]#

   <5>組切換     

語法格式

         newgrp [GROUPNAME]

       命令功能:切換當前使用者的屬組,只對當前shell有效

[[email protected] ~]$ newgrp aa
Password: 
[[email protected] ~]$ touch 1
[[email protected] ~]$ ll 1
-rw-r--r--. 1 user aa 0 Aug  2 21:12 1

   <6>組密碼管理

       ● 更改使用者密碼:passwd GROOUPNAM

         可執行echo USERNAME:PASSWORD | chpasswd 更換使用者密碼

       ● gpasswd [OPTION] GROUP

1     -a USERNAME:將使用者新增至組中
2     -d USERNAME:將使用者從組中刪除
3     -A USER... :設定管理組的使用者列表      

4、使用者切換 

su USERNAME su - USERNAME
切換型別 非登陸式切換 登陸式切換
是否重讀配置檔案
是否改變當前目錄

 注:root su至其他使用者無須密碼,非root使用者切換時需要密碼

     只執行su表示切換root使用者

     
強化練習

1、建立testuser uid:1234 主組:bin 輔助組:root,ftp shell:/bin/csh home:/testdir/testuser

[[email protected] ~]# useradd testuser -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser
[[email protected] ~]# getent passwd testuser
testuser:x:1234:1::/testdir/testuser:/bin/csh
[[email protected] ~]# groups testuser
testuser : bin root ftp
[[email protected] ~]# id testuser
uid=1234(testuser) gid=1(bin) groups=1(bin),0(root),50(ftp)

2、修改testuser uid:4321 主組:root 輔助組:nobody loginname:test home:/home/test

   要求:家資料遷移

[[email protected] ~]# usermod -u 4321 -g root -G nobody -l test -md /home/test testuser
[[email protected] ~]# getent passwd test
test:x:4321:0::/home/test:/bin/csh
[[email protected] ~]# groups test
test : root nobody
[[email protected] ~]# id test
uid=4321(test) gid=0(root) groups=0(root),99(nobody)

3、批量建立帳號:user1...user10

   要求:passwd:usernamepass uid:3001-3010 home:/testdir/username shell:/bin/csh 

   注意家目錄相關配置,使使用者正常登入   

  <1>建立倆個檔案
[[email protected] ~]# cat user
user1:x:3001:3001::/testdir/user1:/bin/csh
user2:x:3002:3002::/testdir/user2:/bin/csh
user3:x:3003:3003::/testdir/user3:/bin/csh
user4:x:3004:3004::/testdir/user4:/bin/csh
user5:x:3005:3005::/testdir/user5:/bin/csh
user6:x:3006:3006::/testdir/user6:/bin/csh
user7:x:3007:3007::/testdir/user7:/bin/csh
user8:x:3008:3008::/testdir/user8:/bin/csh
user9:x:3009:3009::/testdir/user9:/bin/csh
user10:x:3010:3010::/testdir/user10:/bin/csh
[[email protected] ~]# cat passwd
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
user5:user5pass
user6:user6pass
user7:user7pass
user8:user8pass
user9:user9pass
user10:user10pass 
  <2>讀取這倆個檔案
[[email protected] ~]# newusers user
[[email protected] ~]# cat passwd | chpasswd
  <3>檢視使用者是否新增
[[email protected] ~]# tail /etc/passwd
test:x:4321:0::/home/test:/bin/csh
user1:x:3001:3001::/testdir/user1:/bin/csh
user2:x:3002:3002::/testdir/user2:/bin/csh
user3:x:3003:3003::/testdir/user3:/bin/csh
user4:x:3004:3004::/testdir/user4:/bin/csh
user6:x:3006:3006::/testdir/user6:/bin/csh
user7:x:3007:3007::/testdir/user7:/bin/csh
user8:x:3008:3008::/testdir/user8:/bin/csh
user9:x:3009:3009::/testdir/user9:/bin/csh
user10:x:3010:3010::/testdir/user10:/bin/csh
  <4>複製家目錄檔案
[[email protected] ~]# cp -r /etc/skel/.[^.]* /testdir/user1      
[[email protected] ~]# ls -a /testdir/user1
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla 
注:因為使用者的shell是csh,此步驟省略也可正常登陸
  <5>使用者登陸
[[email protected] ~]$ ls

4、建立使用者gentoo,附加組為bin和root,預設shell為/bin/csh,註釋資訊為"Gentoo Distribution"

[[email protected] ~]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
[[email protected] ~]# getent passwd gentoo
gentoo:x:4324:4324:Gentoo Distribution:/home/gentoo:/bin/csh

5、建立下面的使用者、組和組成員關係

   名字為admins的組

   使用者natasha,使用admins作為附屬組

   使用者harry,也使用admins作為附屬組

   使用者sarah,不可互動登入系統,且不是admins 的成員

   natasha,harry,sarah密碼都是centos

[[email protected] ~]# groupadd admins
[[email protected] ~]# useradd natasha -G admins
[[email protected] ~]# useradd harry -G admins
[[email protected] ~]# useradd sarah -s /bin/nologin
[[email protected] ~]# id natasha
uid=4325(natasha) gid=4326(natasha) groups=4326(natasha),4325(admins)
[[email protected] ~]# id harry
uid=4326(harry) gid=4327(harry) groups=4327(harry),4325(admins)
[[email protected] ~]# getent passwd sarah
sarah:x:4327:4328::/home/sarah:/bin/nologin
[[email protected] ~]# echo centos | passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# echo centos | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# echo centos | passwd --stdin sarah
Changing password for user sarah.
passwd: all authentication tokens updated successfully.

相關推薦

使用者管理系列()刪改

1、什麼是使用者和組 每個使用者都擁有一個唯一的使用者名稱和一個與之相關聯的數值型的使用者標識UID,使用者可以隸屬於一個或多個組,而每個組也都擁有唯一的一個名稱和一個組識別符號GID,對於程序和核心來說,只識別UID和GID,使用者名稱和組名最終都會通過/etc/pa

TP5學習基礎刪改小demo

表單 arr 處理 php req 學習 model類 浪費 新手 ①TP5--增刪改查簡單的demo 我先吐槽一下:因為工作需要研究tp5,去官網看了一下哎呦,資源挺多挺全啊!然後下載唯一免費的官方教程,我曹pdf打開533頁。講的很細但是開發能等看完才做嗎?看到精簡版快

mybatis學習筆記刪改

一、概述Mybatis是一款優秀的持久層框架,它支援定製化sql、儲存過程以及高階對映。mybatis避免了幾乎所有的JDBC程式碼和手動設定引數以及獲取結果集。Mybatis可以使用簡單的XML或註解來配置和對映原生資訊,將介面和Java的POJOS對映成資料庫中的記錄。

AngularJS 實現管理系統中的刪改

系統 earch load onf auto splay adding bootstrap sof 前 言 AngularJS 在一個管理系統中,不外乎都是增刪改查。 現在有如下圖書管理系統,實現簡單的增刪改查。 需要用到bootstrap.css 、angula

SQL server 刪改” 之 “改”

image 表名 語法 多列 ring 意思 就會 單擊 行修改 1.前言 2.通過SSMS修改數據 3.通過SQL語句修改數據 3.1 修改單列數據 3.2 修改多列數據 1.前言 增刪改查都是對數據的操作,其中“改”對應的SQL語句便是“update”,也就是“更新

SQL server 刪改” 之 “

keyword 文件 ase ins gui lte dep 依次 下載 1.前言 2.通過SSMS添加數據 3.通過SQL語句添加數據 3.1 添加單條數據 3.2 添加多條數據 4.通過其他表導入數據 4.1 通過數據庫中的其他表導入數據 4.2 通過excel表

HttpServletRequest刪改cookie

什麼是cookies: cookie實際上是一個存在你硬盤裡的資料,但是這些資料很特殊,只能由web應用提交給瀏覽器幫助儲存,並且我們還能讀取瀏覽器存在本地的cookie web應用一般只在cookie中儲存一些使用者資訊等少量且暫時的資料,資料量大則不適合儲存在cookies

如何寫一個完整課堂管理系統(資料庫刪改

  一直在聽建民老師說,javaweb的精髓是Jsp+servlet+javabean。在完成這個系統之前,畢竟沒有學習過javaweb,Jsp和servlet我是知道的,但不會在servlet和jsp之間相互傳值以及應用,javabean是一點沒有聽說過。在這樣的基礎下,沒辦法逃脫測試的情況下,只能硬著頭皮

Java資料庫連線--JDBC基礎知識(操作資料庫刪改)

1 package sql.model; 2 3 import java.util.Date; 4 5 public class Goddess { 6 private Integer id; 7 private String userName; 8 priva

PHP PDO,PDO的應用刪改

PDO物件成員方法  1 ) query($sql);   //用於執行查詢SQL語句。返回PDOStatement物件  2 ) exec($sql);   //用於執行增、刪、改操作,返回影響行數;  3 ) setAttribute(); //設定一個"資料庫連線物件"

SpringMVC刪改(附原始碼,新手學SpringMVC最好的辦法就是自己寫刪改

最近在自學SpringMVC,有Spring的基礎,但不是很深,僅存在於表面。當前在手書籍有《SpringMVC學習指南》 個人認為學習一種MVC框架時,當入了個門之後可以自己寫一套增刪改查,這樣可以

VC++中通過ADO中的_RecordsetPtr操作資料庫刪改

_RecordsetPtr智慧指標,它是專門為通過記錄集操作資料庫而設立的指標,通過該介面可以對資料庫的表內的記錄、欄位等進行各種操作。 要搞清楚:資料庫和ADO的記錄集是兩個不同的概念,是存在於不同物理位置的兩個儲存空間。記錄集相當於是實際資料的一份拷貝。正因為記錄集是相對脫離資料庫而存在的,所以才存在後

java集合框架List基本應用刪改

package collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; publi

Solr REST操作刪改

     在使用solr時,對solr進行操作可以solr4j直接操作,但在對solr multicore進行操作時(如資料庫分表)有些不方便,因此嘗試了直接採用REST形式進行操作 public class SolrServiceImpl implements Solr

基礎篇--jdbc連線mysql資料庫和刪改

JDBC筆記 1.新建專案(java)JDBCDome 2.新建包(lib)         匯入兩個JAR             (1)連線資料庫             (2)測試的[email protected] 3.新建一個包jdbc.poj

【前端筆試】原始JS對DOM物件的操作刪改

看書、看控制檯、看文件一點點總結的~有疏忽的地方,請不吝賜教~ 1. 增 建立元素節點 :document.createElement(“div”); 建立text節點 :document.createTextNodet(“內容”); 複製一個節點:

Spark 操作Hbase 對錶的操作刪改 scala

原文地址:http://www.ithao123.cn/content-2523824.html [摘要:正在build.sbt中設定裝備擺設依附(止之間須要空) ame := test2 scalaVersion := 2.10.4 libraryDependencies

使用 Spring Boot 搭建刪改(無多余代碼)

param tar rim project posit 編輯 word lec char 前言 這是我學習 Spring Boot 的第三篇文章,終於可以見到效果了。錯過的同學可以看看之前的文章 我們為什麽要學習 Spring Boot Spring Boot

C# 資料操作系列 - 15 SqlSugar 刪改詳解

# 0. 前言 繼上一篇,以及上上篇,我們對SqlSugar有了一個大概的認識,但是這並不完美,因為那些都是理論知識,無法描述我們工程開發中實際情況。而這一篇,將帶領小夥伴們一起試著寫一個能在工程中使用的模板類。 # 1. 建立一個Client SqlSugar在操作的時候需要一個Client,用來管理

手把手教你AspNetCore WebApi刪改

# 前言 小明已經建立與運行了WebApi專案,瞭解專案結構有哪些組成,並學會了怎麼釋出到IIS。基礎已經建好,從現在開始要真正實現待辦事項的功能了。 # 新建表 ``` CREATE TABLE [dbo].[Todo]( [Id] [uniqueidentifier] NOT NULL, [Name