用戶、組、權限

用戶、組、權限

一、用戶與組
系統識別用戶的權限不是取決於用戶的名字,而是UID(組同樣取決於GID)。
UID=0的用戶爲系統超級管理員。
1-999爲系統程序用戶(centos6中1-499)。
1000+之後都是普通用戶(6中爲500+)。
通過UID和GID的不同,每個用戶和組的權限也不一樣。每個用戶必須有一個主組,還可以擁有多個輔助組。

問題一:當系統超級用戶被刪除(root的UID被改爲1000+)系統宕機如何恢復。
系統重啓,按住向上鍵,屏幕下方選項 ‘a’ 或者‘e’鍵(非救援模式)。 CentOS6 在最後一行後面 跟上 init=/bin/sh 然後回車 輸入

    #mount –o rw,remount  / 
    #nano /etc/passwd

將root的UID改回爲0即可。 CentOS7中 在開頭爲Linux16 的那一段最後面加上 selinux=0 init=/bin/sh 後面操作同上。

二、用戶與組的主要配置文件

/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種 足夠長
使用隨機密碼 定期更換,不要使用最近曾經使用過的密碼

三、用戶與組的管理命令

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

問題三:創建用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息…,創建名字爲admins 的組,創建用戶natasha ,使用admins 作爲附屬組,創建用戶harry ,也使用admins 作爲附屬組,創建用戶sarah ,不可交互登錄系統,且不是admins 的成員,,設置natasha ,harry ,sarah 密碼都是centos

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 查看指定用戶的信息

四、 文件權限管理 文件屬性
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

五、文件系統上的特殊權限

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 更改的 特殊屬性

六、訪問控制列表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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章