1. 程式人生 > >linux學習筆記整理(五)

linux學習筆記整理(五)

支持 沒有 賬號 pmf linux 系統 tin 解決 mas chang

第六章 Centos7用戶管理
本節所講內容:
6.1 用戶和組的相關配置文件
6.2 管理用戶和組
6.3實戰:進入centos7 緊急模式恢復root密碼
用戶一般來說是指使用計算機的人,計算機對針使用其的每一個人給了一個特定的名稱,用戶就可以使用這些名稱來登錄使用計算機,除了人之外,一些系統服務也需要含有部分特權的用戶賬戶運行;因此出於安全考慮,用戶管理應運而生,它加以明確限制各個用戶賬戶的權限,root在計算機中用擁有至高特權,所以一般只作管理用,非特權用戶可以通過SU或SUDO程序來臨時獲得特權
GNU/Linux 通過用戶和用戶組實現訪問控制----包括對文件訪問、設備使用的控
個人可以擁有很多賬戶,只不是彼此名稱不同,比如root名稱已經占用就不能再用了,此外,任意用戶可能從屬某個用戶組,此用戶可以加入某些已經存在的組來獲得該組的特權

GNU/Linux 系統中的每一個文件都有屬一個用戶(屬主)和一個用戶組(屬組)。另外,還有三種類型的訪問權限:讀(read)、寫(write)、運行(execute)。我們可以針對文件的屬主、屬組、而設置相應的訪問權限。再次,我們可以通過 ls | stat命令查詢文件屬主、屬組和權限

技術分享圖片


[root@xuegod63 ~]# ll | head -2
總用量 8
-rw-------. 1 root root 1680 9月 19 2017 anaconda-ks.cfg
[root@xuegod63 ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"

大小:1680 塊:8 IO 塊:4096 普通文件
設備:803h/2051d Inode:16797763 硬鏈接:1
權限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)

6.1 用戶賬號
6.1.1 用戶的分類
Linux用戶三種角色
超級用戶: root 擁有對系統的最高的管理權限 ID=0
普通用戶:系統用戶 UID:1-999(centos7版本) 1-499(centos6版本)
本地用戶 UID:1000+ 500+
UID:即每個用戶的身份標示,類似於每個人的身份證號碼.

虛擬用戶:偽用戶 一般不會用來登錄系統的,它主要是用於維持某個服務的正常運行.如:ftp,apache

下圖是用戶和組的關系:
一對一:一個用戶可以存在一個組中; 一對多:一個用戶可以存在多個組中
多對一:多個用戶可以存在一個組中; 多對多:多個用戶可以存在多個組中

6.1.2 配置文件
名 稱 帳號信息 說 明
用戶配置文件 /etc/passwd 記錄了每個用戶的一些基本屬性,並且對所有用戶可讀,每一行記錄對應一個用戶,每行記錄通過冒號進行分隔
用戶組文件 /etc/group 用戶組的所有信息存放地兒,並且組名不能重復
用戶對應的密碼信息 /etc/shadow 因為passwd文件對所有用戶是可讀的,為安全起見把密碼從passwd中分離出來放入這個單獨的文件,該文件只有root用戶擁有讀權限,從而保證密碼安全性

技術分享圖片


6.2 用戶管理
6.2.1 用戶命令
命令:useradd
useradd -d -u “UID” -g "初始組" -G "附加組" -s "登陸的shell” 用戶
-d: -d 用戶主目錄路徑, 可以指定用戶家目錄
-M: 不創建用戶的主目錄
-g:設置用戶初始組的名稱或數字ID;該組必須是存在的;如果沒有設置該選項,useradd會根據/etc/login.defs文件中的USERGROUPS_ENAB環境變量進行設置。默認USERGROUPS_ENAB yes 會用和用戶名相同的名字創建群組,GID 等於 UID.
-G:用戶要加入的附加組列表;使用逗號分隔多個組,不要添加空格;如果不設置,用戶僅僅加入初始組。(一個用戶只允許有一個主組,可以有多個附屬組)
-s:用戶默認登錄shell的路徑;啟動過程結束後,默認啟動的登錄shell在此處設定;請確保使用的shell已經安裝,默認是 Bash。有時候需要禁止某些用戶執行登錄動作,例如用來執行系統服務的用戶。將shell設置成 /sbin/nologin 就可以禁止用戶登錄。
6.2.2 添加登錄用戶
例:添加一個名為harry的用戶,並使用bash作為登錄的shell
[root@panda ~]# useradd harry

顯示最後十行

技術分享圖片


[root@panda ~]# tail -1 /etc/passwd #顯示最後一行的文本
harry:x:1001:1001::/home/harry:/bin/bash
說明:此命令會自動創建harry組,並成為harry用戶的默認主組,同時默認的登錄shell是bash
用戶帳戶的全部信息被保存在/etc/passwd文件。這個文件以如下格式保存了每一個系統帳戶的所有信息 (字段以“:”分割)

技術分享圖片


harry:x:1001:1001::/home/harry:/bin/bash
harry:用戶名
x:密碼占位符
1001:用戶的UID,它都是用數字來表示的
1001:用戶所屬組的GID,它都是用數字來表示的
用戶描述信息:對用戶的功能或其它來進行一個簡要的描述
/home/harry:用戶主目錄(shell提示符中“~”代表的那個)
/bin/bash:用戶登錄系統後使用的shell
#查看系統中,支持哪些shell

[root@xuegod63 ~]# cat /etc/shells #查看系統中,支持哪些shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/csh
6.2.3 指定用戶UID : -u 用戶ID
[root@xuegod63 ~]# useradd -u 1100 oracle
[root@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 組=1100(oracle)
[root@xuegod63 ~]# tail -1 /etc/passwd
oracle:x:1100:1100::/home/oracle:/bin/bash
[root@xuegod63 ~]# ls /home/oracle/ -a
. .. .bash_logout .bash_profile .bashrc .mozilla
6.2.4 指定用戶主目錄
[root@xuegod63 ~]# useradd -d /opt/mk1 mk1
[root@xuegod63 ~]# tail -1 /etc/passwd
mk1:x:1102:1102::/opt/mk1:/bin/bash
6.2.5 指定用戶的主組
例:
[root@xuegod63 ~]# useradd xuegod
[root@xuegod63 ~]# id xuegod
uid=1103(xuegod) gid=1103(xuegod) 組=1103(xuegod)
[root@xuegod63 ~]# useradd -g xuegod xuegod2
[root@xuegod63 ~]# id xuegod2
uid=1104(xuegod2) gid=1103(xuegod) 組=1103(xuegod)
6.2.6 指定用戶的附屬組
我們也可以把這個附屬組稱為補充組,用戶可以有0個或多個附加組的成員
如果一個組有多個成員,我們是可以在/etc/group文件中最後一個字段看到的
[root@xuegod63 ~]# useradd -G xuegod,harry,root xuegod3
[root@xuegod63 ~]# id xuegod3
uid=1105(xuegod3) gid=1105(xuegod3) 組=1105(xuegod3),0(root),1001(harry),1103(xuegod)
[root@xuegod63 ~]# vim /etc/group #在文件的最後

6.2.7 創建用戶的另外一個命令
[root@xuegod63 ~]# adduser xuegod4
[root@xuegod63 ~]# id xuegod4
uid=1106(xuegod4) gid=1106(xuegod4) 組=1106(xuegod4)
[root@xuegod63 ~]# which adduser
/usr/sbin/adduser
[root@xuegod63 ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 9月 19 2017 /usr/sbin/adduser -> useradd
註: adduser是useradd的軟鏈接
6.2.8 刪除用戶
usage: userdel [options] LOGIN
選項:-r 刪除的時候,會同時刪除用戶的家目錄和/var/mail下的目錄
6.2.9 密碼的文件
[root@xuegod63 ~]# head -3 /etc/shadow
root:$6$C88LCVx5ZjfBU7xv$cKcdyNeTFmOYTs9NbRZDTA4hGcbMXc/5hQEWZKCtNyLqlBagrjct.pMfs39iEaF1UbEvcOzWZHMDf9Q5KojXM1::0:99999:7:::
技術分享圖片


格式如下:
name 登錄名稱,這個必須是系統中的有效賬戶名
password 已加密密碼,分為三個部分,第一部分是表示使用哪種哈希算法;第二部分是用於加密哈希的salt;第三部分是已加密的哈希
哈希算法:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256
查看幫助說明:
man 5 passwd
man 5 shadow
man 5 group
man 3 crypt
lastchange 最近一次更改密碼的日期,以距離1970/1/1的天數表示
min-age 不能更改密碼的最少天數,最近更改過後幾天才可以更改;如果為0表示“最短期限要求”
maxage 密碼過期時間,必須更改密碼前的最多天數
warning 密碼即將到期的警告期,以天數表示,0表示“不提供警告”
inactive 寬限天數,密碼到期後
expire 賬號過期時間,以距離1970/1/1的天數計算 (千年蟲)
blank 預留字段
給用戶添加密碼:
[root@panda home]# passwd oracle 交互
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@xuegod63 ~]# echo 123456 | passwd --stdin xuegod #不交互
[root@xuegod63 ~]# echo 123456 | passwd --stdin harry
互動: 兩個用戶的密碼一樣? 那麽shadow中加密的hash值一樣嗎?
答: 不一樣。 因為salt不一樣
把2段加密的互換還能登陸嗎?salt什麽時候指定的?

6.2.10 控制添加用戶規則文件的兩個文件:/etc/default/useradd 和 /etc/login.defs
[root@panda home]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000 #用戶ID開始的數字
UID_MAX 60000 # 用戶ID結束的數字
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000 #組ID結束的數字
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #是否為用戶建立home目錄
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 #shadow文件的加密算法
[root@panda home]# cat /etc/default/useradd
/etc/default/useradd 文件中的內容如下:
GROUP=100 #表示可以創建普通組 。 users組ID為100 。如果沒有這一條,或者你把users這個組刪除了,當你再創建用戶時,將提示:useradd: group ‘100‘ does not exist
HOME=/home #哪個目錄作為用戶主目錄存放目錄。如果你不想讓用戶家目錄在/home下,可以修改這個地方。
INACTIVE=-1  #是否啟用帳號過期。passwd文件中第7欄。即:密碼過期後是否會失效的設定值 。INACTIVE:無效。-1表示啟用
EXPIRE=    #帳號終止日期 shadow中第8欄。賬號失效的日期 就是 shadow 內的第八字段,你可以直接設定賬號在哪個日期後就直接失效,而不理會密碼的問題。 通常不會設定此項目,但如果是付費的會員制系統,或許這個字段可以設定!
SHELL=/bin/bash  #默認shell使用哪個
SKEL=/etc/skel  #模板目錄
CREATE_MAIL_SPOOL=yes  #是否創建郵箱文件

命令:chage
-m:密碼可更改的最小天數。為0時代表任何時候都可以更改密碼
-M:密碼保持有效的最大天數
-W:用戶密碼到期前,提前收到警告信息的天數
-E:帳號到期的日期。過了這天,此帳號將不可用
-d:上一次更改的日期,為0表示強制在下次登錄時更新密碼
例:修改用戶mk密碼信息:讓這個用戶mk首次登錄系統時必須更改其密碼
[root@xuegod63 ~]# chage -d 0 mk
[root@xuegod63 ~]# ssh [email protected]
...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.63‘ (ECDSA) to the list of known hosts.
[email protected]‘s password: 123456
You must change your password now and login again! #提示必須改密碼
更改用戶 mk 的密碼 。
互動: 兩個用戶的UID可以一樣嗎?
[root@xuegod63 ~]# vim /etc/passwd # 改 mk uid為0
mk:x:0:0:mk:/home/mk:/bin/bash
[root@xuegod63 ~]# su - mk
上一次登錄:二 9月 19 22:03:16 CST 2017:0 上
[mk@xuegod63 ~]# id mk
uid=0(mk) gid=0(root) 組=0(root),10(wheel)

查看用戶相關命令:
#id 用戶和組的信息
#whoami   #查看當前有效用戶名
#who #顯示目前登入系統的用戶信息。
#w # w命令用於顯示已經登陸系統的用戶列表
#users #用於顯示當前登錄系統的所有用戶的用戶列表

6.2.11 修改用戶信息
語法:usermod 【參數】用戶名
常用參數:
-u UID
-d 宿主目錄
-g 起始組 #只能有一個
-G 附加組 #可以有多個
-s 登錄shell
-L 鎖定
例1:修改UID
[mk@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 組=1100(oracle)
[mk@xuegod63 ~]# usermod -u 1111 oracle
[mk@xuegod63 ~]# id oracle
uid=1111(oracle) gid=1100(oracle) 組=1100(oracle)
例2:修改shell

例3:更改用戶主目錄
[root@panda home]# usermod -m -d /mnt/market market
-m選項會自動創建新目錄並且移到內容到新目錄裏面
例4:添加說明信息
[root@panda mnt]# usermod -c "hello world" market
總結:如果你記不住命令, 那麽直接改vim /etc/passwd 一樣的。
6.2.12解決模板文件被刪之後顯示不正常的問題
[mk@xuegod63 ~]# rm -rf /home/xuegod/.bash*
[mk@xuegod63 ~]# su - xuegod
-bash-4.2$ exit #出現這個不完整的shell提示符,如何處理?
[mk@xuegod63 ~]# cp /etc/skel/.bash* /home/xuegod/
[mk@xuegod63 ~]# chown xuegod:xuegod /home/xuegod/.bash*
[mk@xuegod63 ~]# su - xuegod
[xuegod@xuegod63 ~]$
6.3實戰:進入centos7 緊急模式恢復root密碼
實戰場景:公司一臺centos7系統,忘記root密碼了,需要你快速把root密碼修改為xuegod,找回root身份。
首先重啟,按↑↓鍵,進入如下界面,選擇第一項,按下e鍵進行編輯
技術分享圖片


在此界面找到ro這一項,改為rw init=/sysroot/bin/sh

技術分享圖片


技術分享圖片


改完之後,按下Ctrl+X進入緊急模式
原理:啟動一個shell環境,系統並沒有真正的啟動
技術分享圖片


emergency [i?m?:d??nsi] 緊急
換根,修改密碼
chroot命令用來在指定的根目錄下運行指令
。chroot,即 change root directory (更改 root 目錄)。在 linux 系統中,系統默認的目錄結構都是以/,即是以根 (root) 開始的。而在使用 chroot 之後,系統的目錄結構將以指定的位置作為/位置
在經過 chroot 命令之後,系統讀取到的目錄和文件將不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和文件,

註:如果系統的selinux開啟著,則需要執行命令: touch /.autorelabel
以更新系統信息,否則重啟之後密碼修改不會生效
先退出當前根,reboot重啟系統

linux學習筆記整理(五)