20180518

一、用戶配置文件和密碼配置文件

  1. /etc/passwd #這是用戶的配置文件,一行代表一個用戶,每一行用":"分隔爲7段,內容如下:
    20180518
    第一段:用戶名
    第二段:表示用戶的密碼,所有行都是x
    第三段:表示uid,
    第四段:表示gid
    第五段:很多都是空的,用戶的註釋信息
    第六段:用戶的家目錄
    第七段:用戶的shell,一個用戶能登陸,那麼需要交互的信息 有一些是/sbin/nologin 不能登陸。
  2. etc/shadow #這是用戶存放密碼的文件,是和用戶配置文件對應的,每一行用":"分隔爲9段
    20180518
    第一段:用戶名
    第二段:密碼,密碼都是經過加密的,兩個!!表示未設置密碼
    第三段:最近更改密碼的時間,是一個天數,17110,從1970年1月1日開始到你更改密碼經過多少天
    第四段:要過多少天纔可以更改密碼,0是沒有限制
    第五段:密碼多少天后到期,必須要更改密碼
    第六段:密碼到期前多少天提醒
    第七段:賬號的失效期限,如果密碼到了失效期,那麼在多少天內就被鎖定
    第八段:賬號的生命週期,從1970年1月1日開始有多少天,賬號在這個日期之前可以使用
    第九段:沒有實際意義。
    二、用戶組管理
  3. /etc/group #存放用戶組的配置文件
    20180518
  4. groupadd 可以用來增加用戶組
  5. [root@localhost ~]# groupadd zx1 #增加一個用戶組zx1
    2 .[root@localhost ~]# tail -n1 /etc/group
    zx1:x:1002: #可以在用戶組配置文件裏面看到zx1已經存在
    groupadd:新建組
    [root@smartwy ~]# groupadd [OPTIONS] groupname
    [OPTIONS]選項參數如下:
      -g:指定GID
      -r:創建系統組
  6. groupadd -g 增加用戶組的同時指定組ID
  7. [root@localhost ~]# groupadd -g 1003 zx2 #增加一個zx2組,指定組ID爲1003
  8. [root@localhost ~]# tail -n3 /etc/group
    slocate:x:21:
    zx1:x:1002:
    zx2:x:1003: #可以zx2看到組ID爲1003
  9. groupdel 刪除用戶組,但是如果用戶組裏有用戶那麼就不能刪除
  10. [root@localhost ~]# groupdel zx2 #刪除用戶組zx2
  11. [root@localhost ~]# tail -n3 /etc/group
    lx02:x:1001:
    slocate:x:21:
    zx1:x:1002: #可以看到zx2已經沒有了
  12. [root@localhost ~]# groupdel lx02 #刪除用戶組lx02
    groupdel:不能移除用戶“lx02”的主組 #用戶組lx02裏面有用戶lx02,不能刪除
  13. 每個配置文件系統都會進行備份,就是“-”結束的文件,如果不小心刪除,可以使用這個文件進行恢復
    四 用戶管理相關文件
    1 用戶的家目錄
    普通用戶 :/home/用戶名/,所有者和所屬組都是此用戶,權限是700
    超級用戶:/root/,所有者和所屬組都是root,權限是550
    2 用戶的郵箱
    /var/spool/mail/用戶名/
    比如我們創建一個用戶fuqiang,然後到這個路徑下查看,就會發現這個路徑下自動生成了這個新用戶的郵箱
    20180518
    3 用戶模板目錄
    /etc/skel/
    我們看下這個目錄
    20180518

20180518
三、用戶管理
useradd:新建用戶
[root@smartwy ~]# useradd [OPTIONS] username
[OPTIONS]選項參數如下:
-u:指定UID
-g:指定GID(此組需存在)
-G:指定用戶附加組,多個附加組需使用逗號分隔開(此組需存在)
-c:指定註釋信息
-d:指定用戶家目錄
-s:指定shell,可在/etc/shells文件裏查看shell可用種類
-r:創建系統用戶
-D:修改用戶默認選項(修改的是/etc/default/useradd中選項)

  1. useradd 添加用戶,自己添加的用戶UID都是從1000開始往後排
  2. 默認配置 /etc/default/useradd /etc/login.defs
    2.1. [root@localhost ~]# useradd lx03 #增加一個用戶lx03
  3. [root@localhost ~]# tail -n4 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    lx01:x:1000:1000::/home/lx01:/bin/bash
    lx02:x:1001:1001::/home/lx02:/bin/bash
    lx03:x:1002:1003::/home/lx03:/bin/bash #lx03的UID爲1002
  4. useradd -u 增加用戶的同時指定UID
  5. [root@localhost ~]# useradd -u 1004 lx04 #增加一個用戶lx04 ,並指定UID爲1004
  6. [root@localhost ~]# tail -n4 /etc/passwd
    lx01:x:1000:1000::/home/lx01:/bin/bash
    lx02:x:1001:1001::/home/lx02:/bin/bash
    lx03:x:1002:1003::/home/lx03:/bin/bash
    lx04:x:1004:1004::/home/lx04:/bin/bash #可以看到lx04的UID爲1004
  7. useradd -u -g 增加用戶的同時指定UID和GID
  8. [root@localhost ~]# useradd -u 1005 -g zx1 lx05 # 增加一個用戶lx05 ,指定UID1005,屬於zx1這個組
  9. [root@localhost ~]# tail -n4 /etc/passwd
    lx02:x:1001:1001::/home/lx02:/bin/bash
    lx03:x:1002:1003::/home/lx03:/bin/bash
    lx04:x:1004:1004::/home/lx04:/bin/bash
    lx05:x:1005:1002::/home/lx05:/bin/bash #可以看到lx05的uid爲1005,gid爲1002,1002就是zx1
    4.useradd -d -s -d指定用戶的家目錄,-s指定用戶登陸的bash
  10. [root@localhost ~]# useradd -u 1006 -g 1002 -d /home/lkh -s /sbin/nologin sdd #添加一個用戶sdd ,指定uid1006,gid1002,家目錄/home/lkh/,bash爲nologin
  11. [root@localhost ~]# tail -n4 /etc/passwd
    lx03:x:1002:1003::/home/lx03:/bin/bash
    lx04:x:1004:1004::/home/lx04:/bin/bash
    lx05:x:1005:1002::/home/lx05:/bin/bash
    sdd:x:1006:1002::/home/lkh:/sbin/nologin #可以看到sdd的家目錄爲/home/lkh bash爲nologin
  12. [root@localhost ~]# ls /home/
    lkh lx01 lx02 lx03 lx04 lx05 #可以看到home下有lkh這個目錄
  13. useradd -M 創建用戶,但是不創建家目錄,
  14. [root@localhost ~]# useradd -M xaa # 創建一個用戶xaa
  15. [root@localhost ~]# ls /home/
    lkh lx01 lx02 lx03 lx04 lx05 #/home/下沒有xaa的家目錄 ,實際上xaa是有家目錄的,但是沒有創建,並不是說沒有。
  16. userdel 刪除用戶
  17. [root@localhost ~]# userdel lx05 #刪除用戶lx05
  18. [root@localhost ~]# tail -n4 /etc/passwd
    lx02:x:1001:1001::/home/lx02:/bin/bash
    lx03:x:1002:1003::/home/lx03:/bin/bash
    lx04:x:1004:1004::/home/lx04:/bin/bash
    sdd:x:1006:1002::/home/lkh:/sbin/nologin #用戶lx05已經不存在
  19. userdel -r 刪除用戶的同時刪除用戶的家目錄
  20. [root@localhost ~]# userdel -r lx04 #刪除用戶lx04
  21. [root@localhost ~]# ls /home/ #可以看到lx04 的家目錄一起被刪除
    lkh lx01 lx02 lx03
    passwd:添加密碼
    [root@smartwy ~]# passwd [OPTIONS] username
    [OPTIONS]選項參數如下:
      -l:鎖定指定用戶密碼
      -u:解鎖指定用戶密碼
      -d:清除指定用戶密碼
      -e:終止用戶密碼
      -i:非活動期限
      -n:指定密碼最短試用期
      -x:密碼最長使用期限
      -w:提前多少天警告變更密碼
      ``–stdin:echo “12345678” | passwd –stdin username,將12345678設定爲username的密碼,一般用於批量新建用戶初始密碼
    chage -d 0 user1
    把user1的修改時間設置爲0這樣用戶每次登陸都要修改
    20180518
    用戶組管理
    /etc/group
    group文件以”:”將信息分爲4字段,各字段意義如下:
    1字段:組名稱
    2字段:用戶組密碼,因安全問題,改放到/etc/gshadow
    3字段:GID
    4字段:以此組爲附加組的用戶名稱
    /etc/gshadow
    gshadow文件以”:”將信息分爲4字段,各字段意義如下:
    1字段:組名稱
    2字段:用戶組密碼,該用戶組暫未設置密碼
    3字段:用戶組管理者,缺省代表沒有管理者
    4字段:組內用戶列表,因爲這是用戶的私有組所以沒有其他用戶
    六 用戶組管理命令
    1 添加用戶組groupadd 選項 組名
    -g GID 指定組ID
    我們先添加一個fuqianggroup的組 groupadd -g 600 fuqianggroup
    然後到/etc/group下看看
    20180518
    可以看到這個組已經添加成功了
    2 修改用戶組groupmod 選項 組名
    -g GID 指定組的GID
    -n 修改組名
    比如我想把剛剛創建的fuqianggroup組修改爲fqgroup
    20180518
    再來看下/etc/group
    20180518
    發現修改成功了
    3 刪除用戶組groupdel 組名
    注意:這樣只能刪除附加組,如果想刪除初始組,必須把初始組的用戶也刪掉才行。
    4 把用戶填加到組裏或者從組中刪除 gpasswd 選項 組名
    -a 用戶名:把用戶加入組
    -d 用戶名:把用戶從組中刪除
    我想把fuqiang這個用戶添加到剛纔的fqgroup中
    gpasswd -a fuqiang fqgroup
    20180518
    再把它刪除
    gpasswd -d fuqiang fqgroup
    20180518
    usermod命令
    usermod(選項)(參數)
    -c<備註>:修改用戶帳號的備註文字;
    -d<登入目錄>:修改用戶登入時的目錄;
    -e<有效期限>:修改帳號的有效期限;
    -f<緩衝天數>:修改在密碼過期後多少天即關閉該帳號;
    -g<羣組>:修改用戶所屬的羣組;
    -G<羣組>;修改用戶所屬的附加羣組;
    -l<帳號名稱>:修改用戶帳號名稱;
    -L:鎖定用戶密碼,使密碼無效;
    -s<shell>:修改用戶登入後所使用的shell;
    -u<uid>:修改用戶ID;
    -U:解除密碼鎖定。
    登錄名:指定要修改信息的用戶登錄名。
    實例
    將newuser2添加到組staff中:
    usermod -G staff newuser2
    修改newuser的用戶名爲newuser1:
    usermod -l newuser1 newuser
    鎖定賬號newuser1:
    usermod -L newuser1
    解除對newuser1的鎖定:
    usermod -U newuser1
    mkpasswd命令
    這個命令是隨機生成 密碼的一個工具, 如果沒有這個命令,請安裝相應的包。
    yum -y install expect
    mkpasswd 的使用
    常用的選項, -l 指定 長度
    -d 指定 數字的個數
    -c 指定 小寫字符個數 -C 指定大寫字符個數
    -s 指定特殊字符個數
    usage: mkpasswd [args] [user]
    where arguments are:
    -l # (length of password, default = 7)
    指定密碼的長度,默認是7位數
    -d # (min # of digits, default = 2)
    指定密碼中數字最少位數,默認是2位
    -c # (min # of lowercase chars, default = 2)
    指定密碼中小寫字母最少位數,默認是2位
    -C # (min # of uppercase chars, default = 2)
    指定密碼中大寫字母最少位數,默認是2位
    -s # (min # of special chars, default = 1)
    指定密碼中特殊字符最少位數,默認是1位
    -v (verbose, show passwd interaction)
    這個參數在實驗的時候報錯,具體不知道。

比如舉個例子, 長度 15 位,數字至少 3位, 小寫字母至少4 位, 大寫字母至少4 位, 特殊字符
至少 2位
[root@localhost ~]# mkpasswd -l 15 -d 3 -c 4 -C 4 -s 2br/>M50=xniV_Y4gBht
CZ7@lBYa)1gept6
7RaQ7c"gwvX<s6C
jAYW8dGw>pe^42j
su命令
1.命令作用
su的作用是變更爲其它使用者的身份,超級用戶除外,需要鍵入該使用者的密碼。
2.使用方式
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
3.參數說明
-f , –fast:不必讀啓動文件(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , –login:加了這個參數之後,就好像是重新登陸一樣,大部分環境變量(例如HOME、SHELL和USER等)都是以該使用者(USER)爲主,並
且工作目錄也會改變。如果沒有指定USER,缺省情況是root。
-m, -p ,–preserve-environment:執行su時不改變環境變數。
-c command:變更賬號爲USER的使用者,並執行指令(command)後再變回原來使用者。
–help 顯示說明文件
–version 顯示版本資訊
USER:欲變更的使用者賬號,
ARG: 傳入新的Shell參數。
4.例子
su -c ls root 變更帳號爲 root 並在執行 ls 指令後退出變回原使用者。
su [用戶名]
a>在root用戶下, 輸入 su 普通用戶. 則切換至普通用戶, 從root切換到變通用戶不需要密碼
b>在普通用戶下, 輸入 su [用戶名]
提示 password:
輸入用戶的PASSWORD, 則切換至該用戶
擴展閱讀一:Linux下 su命令與su - 命令有什麼區別?
su 是切換到其他用戶,但是不切換環境變量(比如說那些export命令查看一下,就知道兩個命令的區別了)
su - 是完整的切換到一個用戶環境
所以建議大家切換用戶的時候,儘量使用 su - linuxso 這樣 否則可能發現某些命令執行不了

擴展閱讀二:su和sudo的區別

由於su 對切換到超級權限用戶root後,權限的無限制性,所以su並不能擔任多個管理員所管理的系統。如果用su 來切換到超級用戶來管理系統,也不能明確哪些工作是由哪個管理員進行的操作。特別是對於服務器的管理有多人蔘與管理時,最好是針對每個管理員的技術特長和 管理範圍,並且有針對性的下放給權限,並且約定其使用哪些工具來完成與其相關的工作,這時我們就有必要用到 sudo。
通過sudo,我們能把某些超級權限有針對性的下放,並且不需要普通用戶知道root密碼,所以sudo 相對於權限無限制性的su來說,還是比較安全的,所以sudo 也能被稱爲受限制的su ;另外sudo 是需要授權許可的,所以也被稱爲授權許可的su;
sudo 執行命令的流程是當前用戶切換到root(或其它指定切換到的用戶),然後以root(或其它指定的切換到的用戶)身份執行命令,執行完成後,直接退回到當前用戶;而這些的前提是要通過sudo的配置文件/etc/sudoers來進行授權;

sudo -i
sudo : 暫時切換到超級用戶模式以執行超級用戶權限,提示輸入密碼時該密碼爲當前用戶的密碼,而不是超級賬戶的密碼。不過有時間限制,Ubuntu默認爲一次時長15分鐘。

su : 切換到某某用戶模式,提示輸入密碼時該密碼爲切換後賬戶的密碼,用法爲“su 賬戶名稱”。如果後面不加賬戶時系統默認爲root賬戶,密碼也爲超級賬戶的密碼。沒有時間限制。

sudo -i: 爲了頻繁的執行某些只有超級用戶才能執行的權限,而不用每次輸入密碼,可以使用該命令。提示輸入密碼時該密碼爲當前賬戶的密碼。沒有時間限制。執行該命令後提示符變爲“#”而不是“$”。想退回普通賬戶時可以執行“exit”或“logout” 。
其實,還有幾個類似的用法:
sudo /bin/bash : 這個命令也會切換到root的bash下,但不能完全擁有root的所有環境變量,比如PATH,可以擁有root用戶的權限。這個命令和 sudo -s 是等同的。
sudo -s : 如上
sudo su : 這個命令,也是登錄到了root,但是並沒有切換root的環境變量,比如PATH。
sudo su - : 這個命令,純粹的切換到root環境下,可以這樣理解,先是切換到了root身份,然後又以root身份執行了 su - ,這個時候跟使用root登錄沒有什麼區別。這個結果貌似跟sudo -i 的效果是一樣的,但是也有不同,sudo 只是臨時擁有了root的權限,而su則是使用root賬號登錄了linux系統。

所以,我們再來總結一下:
sudo su - 約等於 sudo -i
sudo -s 完全等於 sudo /bin/bash 約等於 sudo su
sudo 終究被一個"臨時權限的帽子"扣住,不能等價於純粹的登錄到系統裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章