1、用戶與組
系統識別用戶的權限不是取決於用戶的名字,而是UID(組一樣取決於GID)。
UID=0的用戶爲系統超級管理員。
1-999爲系統程序用戶(centos6中1-499)。
1000+以後都是普通用戶(6中爲500+)。
經過UID和GID的不一樣,每一個用戶和組的權限也不同。每一個用戶必須有一個主組,還能夠擁有多個輔助組。 html
問題一:當系統超級用戶被刪除(root的UID被改成1000+)系統宕機如何恢復。
系統重啓,按住向上鍵,屏幕下方選項 ‘a’ 或者‘e’鍵(非救援模式)。 CentOS6 在最後一行後面 跟上 init=/bin/sh 而後回車 輸入linux
#mount –o rw,remount / #nano /etc/passwd
將root的UID改回爲0便可。 CentOS7中 在開頭爲Linux16 的那一段最後面加上 selinux=0 init=/bin/sh
後面操做同上。 算法
2、用戶與組的主要配置文件 shell
/etc/passwd:用戶及其屬性信息 文件格式##
name:password:UID:GID:GECOS:directory:shell
/etc/group 組及其屬性信息
/etc/shadow 用戶密碼及其相關屬性
etc/gshadow 組密碼及其相關屬性 由於系統安全的緣故,之前密碼都是在passwd裏的。如今分到shadow文件裏了。 能夠用pwunconv 命令將密碼還原回passwd文件中(不建議使用,爲了系統安全)。 如今的密碼都是用sha512加密的,也能夠修改加密算法:authconfig –passalgo=sha256 –update
將密碼修改成256位加密。
問題二:隨機設計一個30位的密碼]# openssl rand –base64 30
8co+TVhe2detV1NozQxQa1XCWyTs+1WdcUGMbL4n(選取前30位便可)
密碼的複雜性策略: 使用數字、大小寫字母及特殊字符中的至少3種 足夠長
使用隨機密碼 按期更換,不要使用最近曾經使用過的密碼 apache
3、用戶與組的管理命令centos
1 . useradd 建立用戶 安全
-u UID 指定用戶的UID
-o 配合-u 指定用戶的UID 並不檢查UID的惟一性
-g 指定用戶的所屬主組,可爲組名,也能夠是GID 必須是已存在的。 -c 給用戶添加註釋信息 「 」
-d 給用戶指定家目錄的路徑
-s 設置用戶的默認的shell程序
-G 爲用戶知名輔助組,組必須事先存在
-N 不建立使用組爲主組,使用users組作主組
-r 建立系統用戶 UID 範圍在系統用戶裏選擇
-m 強制建立家目錄用於系統用戶 (單單建立系統用戶不會生成家目錄) -M 強制不建立家目錄 用於非系統用戶
-D 顯示或更改默認設置 -s SHELL –b BASE_DIR -g GROUP
命令所在目錄 /etc/default/useradd app
問題三:建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息…,建立名字爲admins 的組,建立用戶natasha ,使用admins 做爲附屬組,建立用戶harry ,也使用admins 做爲附屬組,建立用戶sarah ,不可交互登陸系統,且不是admins 的成員,,設置natasha ,harry ,sarah 密碼都是centos ide
useradd -c "Gentoo Distribution" -G bin,root -s /bin/csh gentoo groupadd admins useradd -G admins natasha useradd -G admins harry useradd -s /sbin/nologin sarah echo centos |passwd --stdin natasha echo centos |passwd --stdin harry echo centos |passwd --stdin sarah
用戶家目錄裏的數據源 /etc/skel/*
若是用戶家目錄被刪除了能夠用cp -r /etc/skel /home/username
恢復初始數據
/etc/login.defs 用戶建立時給用戶加上的初始屬性文檔(UID、SUID、email路徑、密碼的加密機制和日期屬性)
批量建立用戶可使用 newusers user.txt
(注意文件格式要和passwd中同樣)這樣能夠批量建立文件中的用戶 cat passwd.txt |chpasswd
工具
2 . 用戶屬性修改命令 usermod
-u 修改UID
-g 修改所屬主組
-G 新增的附加組 覆蓋原有附加組,用-a 選項能夠保留原有附加組
-s 修改默認SHELL
-d 修改新的家,不會自動建立新的家目錄,使用-m 能夠建立新的家而且移動原數據
-c 新的註釋信息
-l 修改用戶名字
-L 指定用戶在密碼欄添加! 等同於 /sbin/nologin -U 指定用戶在密碼欄去掉!
-e y-m-d指定用戶帳戶有效期,到期帳戶失效
-f密碼過時後密碼失效緩衝期
chage 能夠修改口令的一些時間設置
口令時間格式: 17485:3:42:7:10:設定帳戶有效期:
17485變爲0 ,口令及時失效,須要修改密碼,他記錄的建立時間距離1970年一月一日總共多少天。
:::3天內不能夠改口令,:::3天到42天能夠 改口令,最大有效期42天
:::10天以內還能夠改口令,10天結束以後口令失效,帳戶沒法登錄了 。
:::設定帳戶有效期y-m-d: ::
chage 幫助文檔 chage [options] LOGIN
-m:密碼可更改的最小天數。爲零時表明任什麼時候候均可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提早收到警告信息的天數。
-E:賬號到期的日期。過了這天,此賬號將不可用。
-d:上一次更改的日期。
-i:停滯時期。若是一個密碼已過時這些天,那麼此賬號將不可用。
-l:例出當前的設置。由非特權用戶來肯定他們的密碼或賬號什麼時候過時。
示例: chage -d 0 tom 下一次登陸強制重設密碼
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
3 . userdel刪除用戶
-r刪除用戶家目錄(清除乾淨)
vipw 直接打開 passwd文件 擁有文件檢查功能 改動語法錯誤 能夠檢查出來
vigr 直接打開group 文件 功能同上 pwck 檢查用戶帳號 發現問題和檢查語法 grpck 檢查組帳號 發現問題和檢查語法
4 . groupadd 建立組
-g 指定組號GID
-r 建立系統的組
5 . groupmod 組屬性修改
-n 修改成新的名字
6 . groupdel 刪除組
7 . id 顯示指定用戶的ID信息
-u 顯示UID
-g 顯示GID
-G 顯示用戶所屬組的ID
-n 顯示名稱
8 . su 切換用戶
su userName 不徹底切換,切換用戶不改變當前目錄
su - UserName 徹底切換,切換至用戶的家目錄 root用戶切換至其餘用戶不須要密碼,其餘用戶切換時,都須要密碼。
su UserName -c ‘COMMAND’ 換個用戶執行一條命令
9 . passwd UserName 修改指定用戶的密碼(僅root用戶權限)
passwd 修改本身的密碼
-l 鎖定指定用戶
-u 解鎖用戶
-e 強制用戶下次登陸修改密碼
-n 指定最短使用期限
-x 最大使用期限
-w warndays 提早多少天開始警告
-i inactivedays 非活動期限
--stdin 從標準輸入接收用戶密碼echo password | passwd --stdin arno
10 . gpasswd 組密碼
-a user 將user 添加至指定組中
-d 從指定組中刪除指定用戶
-A 設置有管理權限的用戶列表
11 . groupmems 更改和查看組成員
-g 更改成指定組(只有root)
-a 指定用戶加入組
-d 從組中刪除用戶
-p 從組中清除全部成員
12 . 相關命令
groups 查看用戶所屬組列表
newgrp 臨時切換主組(若是用戶不屬於此組,則須要組密碼)
chfn 指定書寫我的信息
chsh 指定更改用戶
shell finger 查看指定用戶的信息
4、 文件權限管理 文件屬性
drwxr-xr-x. 4 root root 4096 Nov 14 11:47 app
r read 讀取文件 (列出目錄文件)
w write 寫權限 (能夠在目錄中修改建立或刪除文件 須要x 權限)
x excute 執行權限 (目錄基本權限,只有執行權限纔能有其餘操做)
1 . chown root用戶 更改文件的所屬用戶
chown OWNER:GROUP (:group 命令中的冒號可用 . 替換)
-R 遞歸 (-- reference == f1 f2 引用f1的屬性 來設置 f2的屬性)
2 . chmod 修改文件權限
chmod who opt per filename
who :u,g,o,a 用戶
opt :+,-,= 增長 減去 覆蓋
per:r,w,x
-R 遞歸文件夾內的全部文件屬性
- X 只給目錄x權限,不給文件
u+s 給文件加s的權限,讓該文件可讓全部用戶繼承文件全部者的全部權限
g+s 讓全部用戶在該文件夾下建立文件默認組爲該文件夾所屬組
o+t 加 t的權限,只能做用在目錄文件上,讓該目錄下的文件只有文件擁有者才能刪除本身的文件。
--reference f1 f2 參考 f1權限 設置f2權限
3 . chgrp root 用戶更改文件的所屬組(若是普通用戶在該組裏,也能夠更改)
4 . umask 能夠用來保留在建立文件權限
新建文件夾的權限值爲 777-mask(若是是文件 默認不能擁有執行權限) 操做示例: 誤刪除了用戶arno 的家目錄,請重建並恢復該用戶家目錄及相應的權限屬性
cp -R /etc/skel /home/arno
chown arno:arno /home/arno
5、文件系統上的特殊權限
1 . SUID
SUID只做用在二進制程序上,不能做用在文本的腳步上
SUID將執行該程序的用戶,會繼承程序擁有者的全部權限 chmod u+s FileName
2 . SGID
SGID 做用在二進制程序上,執行sgid權限的程序時,此用戶將繼承程序所屬組權限 SGID可讓文件夾下的新建文件默認歸屬於文件夾的組。
3 . sticky 粘滯位
只能做用在目錄上 具備sticky權限的目錄下,普通用戶只能刪除本身的文件
4 . 小工具
chattr +i FileName 文件不能修改 (+a 只能追加)
+A 不更新 Access查看的時間不更新
lsattr +i FlieName 查看 chattr 更改的 特殊屬性
6、訪問控制列表ACL
CentOS7 以前版本,默認手工建立的ext4 文件系統無ACL功能, 需手動增長 tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效順序: owner ,users , groups , other
1 . getfacl 查看ACL列表
getfacl FILE (DIR) 其中的mask值 是設置最高 ACL列表的權限(除了擁有者和其餘人不能限制)
2 . setfacl 設置訪問列表
-m (-M)選項修改文件或目錄的acl (M是用文件導入ac l權限)
-b 清空文件或目錄的acl
對所屬組設置setfacl -m group (g): :rwx FileName
-x u: arno 在acl列表刪除用戶arno -R 設置acl 屬性 遞歸到目錄下的全部新建文件
-k DIR 刪除默認權限 目錄上的setfacl -R –m d:apache:rw /app/html
(d 的含義是默認)讓這個目錄下的全部文件默認有Apache 的ACL權限getfacl f1 | setfacl --set-file =- f2
複製f1的ACL權限給f2
--set 刪除原的ACL 權限 ,而後用新的權限覆蓋。 -m是修改setfacl --set u::rw,u:wang:rw,g::r,o::- file1
3 . 備份和恢復ACL
主要的文件操做命令cp 和mv 都支持ACL ,只是cp 命令須要加上-p 參數。可是tar 等常見的備份工具是不會保留目錄和文件的ACL 信息
相對路徑,只能在目錄路徑下執行getfacl -R /tmp/dir1 > acl.txt
備份 目錄 和該目錄下的全部ACL權限setfacl -R -b /tmp/dir1
清除全部setfacl -R --set-file=acl.txt /tmp/dir1
還原備份setfacl --restore acl.txt
還原備份getfacl -R /tmp/dir1
查看目錄 和目錄下的全部文件
ACL權限 操做示例:
1.在/testdir/dir 裏建立的新文件自動屬於g1 組,組g2 的成員如:alice 能對這些新文件有讀寫權限,組g3的成員如:tom 只能對新文件有讀權限,其它用戶(不屬於g1,g2,g3 )不能訪問這個文件夾。
chown :g1 /testdir/dir chmod g+s /testdir/dir setfacl -m d:g:g2:rw /testdir/dir setfacl -m d:g:g3:r /testdir/dir chmod o=- /testdir/dir
2.備份/testdir/dir 裏全部文件的ACL 權限到/root/acl.txt 中,清除/testdir/dir 中全部ACL 權限,最後還原ACL 權限
getfacl –R ../dir > acl.xt etfacl –b /testdir/dir setfacl --restore acl.txt