1、一些概念
1.安全3A算法
2.用戶usershell
用戶登陸系統,成功後,系統會分配給用戶一個令牌token,在該用戶訪問系統中的文件時,文件會審覈這個令牌來決定是否給予權限訪問該文件。要想得到最新的token,從新登陸。vim
管理員:root,0 普通用戶:1-65535 系統用戶:1-499;1-999(centos7)通常指各個進程 登陸用戶:500+,1000+(centos7)
3.組groupcentos
Linxu組:Groupname、GID 管理員組:root,0 普通組 系統用戶:1-499;1-999(centos7)通常指各個進程 登陸用戶:500+,1000+(centos7)
4.Linux安全上下文(context)
進程所可以訪問資源的權限取決於進程的運行者的身份(用戶身份,用戶組身份)。即程序可否訪問某個文件是由用戶身份決定的而非程序自己。安全
5.group組的類別bash
即,一個用戶能夠加入多個組,該用戶的權限是組權限的累加;一個組也能夠擁有多個用戶less
2、用戶和組的配置文件
1./etc/passwd 用戶及其屬性信息(名稱、UID/主組id等)
cat /etc/passwdssh
以最後一行songtai爲例:ide
login name:登陸用名(songtai) passwd:密碼(x) UID:用戶身份編號(500) GID:登陸默認所在組編號(501) GECOS:用戶全名或註釋 home directory:用戶主目錄(/home/wang) shell:用戶默認使用shell (/bin/bash)
說明:ui
1.幫助文檔: man 5 passwd
2.可用chfn命令添加修改第5行的信息
3.uid爲1-499的爲系統程序進程,最後的shell類型爲/sbin/nologin,給程序服務使用的shell,用於建立給服務用的帳號,其能夠限制某些用戶經過ssh登錄到shell上。
4.chsh -s /bin/csh songtai songtai帳號更改shell爲csh
5.第二列x爲密碼,其信息記錄在/etc/shadow文件下
2./etc/group 組及其屬性信息
cat /etc/group
man 5 group 幫助文檔 group_name:the name of the group password: the (encrypted) group password. If this field is empty, no password is needed. GID:the numerical group ID. 附加組名單user_list:a list of the usernames that are members of this group, separated by commas.附加組的用戶列表,用「,」隔開
注意:對一個正在登錄中的用戶,對其修改組等相關信息並不會實時更改,須要從新登錄(背後原理:token令牌原理,只有從新登錄系統纔會分配其一個最新的令牌,其拿着新的令牌纔有訪問一些配置文件的權限)
3./etc/shadow 用戶密碼及其相關屬性
cat /etc/shadow
從左至右:
用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:用戶過時日期:保留字段
一、登錄用名 二、用戶密碼:通常用sha512加密 !!:表示帳號鎖定(useradd sst命令新增的sst用戶的密碼就是這種狀況) 解鎖方法: ①nano /etc/shadow 將sst用戶第二列的兩個!!刪除掉,這樣便可登陸; ②usermod -U sst 表示sst這個用戶解鎖一個!,連續操做兩次。(centos6和7 已不支持此類操做) ③passwd -e username 表示將第三列的數值變爲默認0,意味着下次登陸時必須更改密碼(也即讓當前口令失效)或chage -d 0 username 效果同passwd -e username 三、從1970年1月1日起到密碼最近一次被更改的時間 echo `date +%s`/3600/24 | bc #表示目前距1970年1月1日的天數
當第三列數值爲0時表示用戶再下一次登錄時須修改密碼 四、密碼再過幾天能夠被變動(0表示隨時可被變動)
五、密碼再過幾天必須被變動(99999表示永不過時)
六、密碼過時前幾天系統提醒用戶(默認爲一週) 七、密碼過時幾天後賬號會被鎖定
八、從1970年1月1日算起,多少天后賬號失效
4./etc/gshadow 組密碼及其相關屬性
cat /etc/gshadow
共四列:
羣組名稱:就是羣組名稱
羣組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:(分隔符爲逗號)
相關文件操做處理命令
vipw (與nano /etc/passwd 相同,但具有語法檢查功能,vi=vim)
pwck 檢查passwd文件語法
vigr (與nano /etc/passwd 相同,但具有語法檢查功能,vi=vim)
grpck 檢查group文件語法
5. /etc/default/useradd 新建用戶時默認的一些默認屬性配置文件夾
1 GROUP=100 #默認的user組的 GID 2 HOME=/home #默認的家目錄 3 INACTIVE=-1 4 EXPIRE= #默認帳戶有效期 5 SHELL=/bin/bash #默認使用的shell 6 SKEL=/etc/skel #默認的一些模板文件夾 (新建帳號的模板文件夾) 7 CREATE_MAIL_SPOOL=yes #默認容許建立郵箱文件夾
注意:可用useradd -D命令可顯示或更改默認設置
useradd -D -s SHELL 修改shell類型6
useradd -D -g GROUP 修改默認組
6./etc/skel 默認文件夾相關
每次新建用戶時,都會將此文件夾複製到新建用戶的家目錄下。默認只有3個環境配置文件,能夠修改這裏面的內容,或者添加幾個文件在該文件目錄中,之後新建用戶時就會自動獲取到這些環境和文件。
ll -a /etc/skel/ -rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout -rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile -rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc
注意:由於刪除/etc/skel目錄下的文件出現的問題,咱們從新複製一個完整的文件進去便可解決。
7.cat /etc/login.defs 密碼的默認配置文件
設置用戶賬號限制的文件。該文件裏的配置對root用戶無效。
若是/etc/shadow文件裏有相同的選項,則以/etc/shadow裏的設置爲準,也就是說/etc/shadow的配置優先級高於/etc/login.defs。
該文件有不少配置項,文件的默認內容只給出了一小部分,若想知道所有的配置項以及配個配置項的詳細說明,能夠"man 5 login.defs"查看。
1 less /etc/login.defs 2 #QMAIL_DIR Maildir # QMAIL_DIR是Qmail郵件的目錄,因此能夠不設置它 3 MAIL_DIR /var/spool/mail # 默認郵件根目錄,即信箱 4 #MAIL_FILE .mail # mail文件的格式是.mail 5 6 # Password aging controls: 7 PASS_MAX_DAYS 99999 # 密碼最大有效期(天) 8 PASS_MIN_DAYS 0 # 兩次密碼修改之間最小時間間隔 9 PASS_MIN_LEN 5 # 密碼最短長度 10 PASS_WARN_AGE 7 # 密碼過時前給警告信息的時間 11 12 # 控制useradd建立用戶時自動選擇的uid範圍 13 # Min/max values for automatic uid selection in useradd 14 UID_MIN 1000 15 UID_MAX 60000 16 # System accounts 17 SYS_UID_MIN 201 18 SYS_UID_MAX 999 19 20 # 控制groupadd建立組時自動選擇的gid範圍 21 # Min/max values for automatic gid selection in groupadd 22 GID_MIN 1000 23 GID_MAX 60000 24 # System accounts 25 SYS_GID_MIN 201 26 SYS_GID_MAX 999 27 28 # 設置此項後,在刪除用戶時,將自動刪除用戶擁有的at/cron/print等job 29 #USERDEL_CMD /usr/sbin/userdel_local 30 31 # 控制useradd添加用戶時是否默認建立家目錄,useradd -m選項會覆蓋此處設置 32 CREATE_HOME yes 33 34 # 設置建立家目錄時的umask值,若不指定則默認爲022 35 UMASK 077 36 37 # 設置此項表示當組中沒有成員時自動刪除該組 38 # 且useradd是否同時建立同用戶名的主組。(該文件中並無此項說明,來自於man useradd中-g選項的說明) 39 USERGROUPS_ENAB yes 40 41 # 設置用戶和組密碼的加密算法 42 ENCRYPT_METHOD SHA512
3、用戶及用戶組的相關命令
開始建立 shell> echo "userX:x:666" >> /etc/group shell> echo "userX:x:666:666::/home/userX:/bin/bash" >> /etc/passwd shell> echo 'userX:!!:17121:0:99999::::' >> /etc/shadow shell> cp -r /etc/skel /home/userX shell> chown -R userX:userX /home/userX shell> chmod -R go= /home/userX shell> passwd --stdin userX <<< '123456'
用戶管理命令: useradd usermod userdel 組帳號管理命令: groupadd groupmod groupdel
一、useradd 添加用戶
1 useradd -u 66666 songtai # 表示新建用戶songtai,並指定其uid爲66666 2 useradd -o # 與u一塊兒用,id不惟一,用於建立同id用戶 3 useradd -g GID # 指明用戶所屬基本組(主要組),可爲組名,也能夠GID 4 useradd -g songtai sst # 建立sst這個用戶,並將songtai做爲其主組 5 useradd -c hello sst3 # 建立sst3這個用戶,並添加hello這個信息在帳戶裏 6 useradd -d HOME_DIR # 以指定的路徑(不存在)爲家目錄 7 useradd -s SHELL # 指明用戶的默認shell程序 8 useradd -s /bin/csh sst4 9 useradd -G GROUP1[,GROUP2,...] #爲用戶指明附加組,組須事先存在 10 useradd -N # 不建立私用組作主組,使用users組作主組 11 useradd -r # 建立系統用戶CentOS 6: ID<500,CentOS 7: ID<1000 用於安裝系統應用 12 useradd -m # 建立家目錄,用於系統用戶 13 useradd -M # 不建立家目錄,用於非系統用戶
二、usermod
usermod [options] LOGIN # option -u UID: 新UID -g GID: 新主組 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項 -s SHELL:新的默認SHELL -c 'COMMENT':新的註釋信息 -d HOME: 新家目錄不會自動建立;若要建立新家目錄並移動原家數據,同時使用-m選項 -l login_name: 新的名字; -L: lock指定用戶,在/etc/shadow 密碼欄的增長! -U: unlock指定用戶,將/etc/shadow 密碼欄的! 拿掉 -e YYYY-MM-DD: 指明用戶帳號過時日期 -f INACTIVE: 設定非活動期限
3.userdel
userdel -r USERNAME: 刪除用戶家目錄
4.grooupadd、groupmod、groupdel
5.chpasswd 批量修改用戶口令
第一步:
建立passwd文件(名字任意、目錄任意)
第二步:
nanopasswd 添加統一格式
名戶名:口令,例如:
sst1:woshisst1
sst2:woshisst2
sst3:woshisst3
第三步:
cat passwd | chpasswd 批量修改用戶口令
6.newusers 批量建立用戶
newusers passwd格式文件
實驗場景:假如想在要在centos7上建立已經在centos6上存在的批量帳號,怎麼作?
1.第一步:cat /etc/passwd 將chentos6上要建立的帳號都複製
2.建立一個list.txt 的文件,將上面的文件複製進這個文件,並保存
3.scp list.txt ip: /data 遠程複製附件。
例如:scp list.txt 192.168.199.134: /data 表示將list.txt這個文件複製進192這個ip地址裏data這個文件目錄下
4.newusers /data/list.txt 批量建立list.txt中的用戶
7. id 查看用戶相關的ID信息
-u: 顯示UID -g: 顯示GID -G: 顯示用戶所屬的組的ID -n: 顯示名稱,需配合ugG使用
8. su 切換用戶或以其餘用戶身份執行命令
su [options...] [-] [user [args...]]
su UserName:非登陸式切換,即不會讀取目標用戶的配置文件,不改變當前工做目錄
su - UserName:登陸式切換,會讀取目標用戶的配置文件,切換至家目錄,徹底切換(等價於從新登錄一個帳號)
su [-] UserName -c 'COMMAND' 換個身份執行命令
9.passwd 設置密碼
passwd: 修改本身的密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
passwd -l:鎖定指定用戶 passwd -u:解鎖指定用戶 passwd -e:強制用戶下次登陸修改密碼 passwd -n mindays: 指定最短使用期限 passwd -x maxdays:最大使用期限 passwd -w warndays:提早多少天開始警告 passwd -iinactivedays:非活動期限 passwd --stdin:從標準輸入接收用戶密碼 echo "PASSWORD" | passwd--stdin USERNAME
10.修改用戶密碼策略
chage [OPTION]... LOGIN
-d LAST_DAY -E --expiredateEXPIRE_DATE -I --inactive INACTIVE -m --mindaysMIN_DAYS -M --maxdaysMAX_DAYS -W --warndaysWARN_DAYS –l 顯示密碼策略
示例:
chage-d 0 tom 下一次登陸強制重設密碼
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom
11.gpasswd 更改組密碼
gpasswd [OPTION] GROUP
-a user 將user添加至指定組中 -d user 從指定組中移除用戶user -A user1,user2,… 設置有管理權限的用戶列表
12.newgrp 臨時切換主組
若是用戶本不屬於此組,則須要此組密碼
13.groups、groupmems 更改和查看組成員
groupmems [options] [action]
-g, --group groupname更改成指定組(只有root)
Actions: -a, --add username 指定用戶加入組 -d, --delete username 從組中刪除用戶 -p, --purge 從組中清除全部成員 -l, --list 顯示組成員列表
groups [OPTION] [USERNAME]...查看用戶所屬組列表
14.getent passwd/shadow/group/gshadow
查看passwd/shadow/group/gshadow這幾個文件夾
4、練習
一、建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution"
useradd -G root,bin -s /bin/csh -c "Gentoo Distribution" gentoo
注意:
-G 後邊跟的附加組之間用,隔開;
註釋信息用""
要建立的用戶放在最後
二、建立下面的用戶、組和組成員關係
名字爲admins 的組
用戶natasha,使用admins 做爲附屬組
用戶harry,也使用admins 做爲附屬組
用戶sarah,不可交互登陸系統,且不是admins 的成員,natasha,harry,sarah密碼都是centos
1 groupadd admins 先建立組admins 2 useradd -G admins natasha 3 useradd -G admins harry 4 useradd -s /sbin/nologin sarah 5 echo centos |passwd --stdin ntatsha 6 echo centos |passwd --stdin natasha 7 echo centos |passwd --stdin sarah
3.分析安裝一個應用時的相關組信息
5、實驗
實驗:centos6,7上修改/etc/passwd root的UID非0,沒法啓動,修復之
1. centos6:
第一步,啓動時,此界面按a進入
第二步,按a進入下面這個界面,最後敲入init=/bin/bash
第三步,進入到/bin/sh界面,
mount –o rw,remount / 從新掛載/目錄
nano /etc/passwd 修改root的UID
第四步,重啓便可正常進入centos6
2. centos7:
第一步,啓動界面按e進入
第二步,在Linux16那一行的最後敲入 init=/bin/bash,再按ctrl+x
第三步,
mount -orw,remount /
nano /etc/passwd
第四部,將root的uid改成0,重啓便可
轉自:https://blog.csdn.net/tai20031229/article/details/83824983