用戶賬號
與用戶賬號相關的兩個文件:
- /etc/passwd
- /etc/shadow
- /etc/passwd
root:x:0:0:root:/root:/bin/bash
fanyank:x:1000:1000:This is my username:/home/fanyank:/bin/bash
1 2 3 4 5 6 7
- 1.賬號名稱
- 2.密碼,加密后的位于/etc/shadow中
- 3.UID,0為root,1 ~ 500為系統賬號,500 ~ 65535位其他登錄賬號
- 4.GID,初始用戶組的GID
- 5.用戶信息說明
- 6.用戶的主文件夾
- 7.用戶登錄成功選擇的shell版本
- /etc/shadow
root:$6$0OJo2FY.$3beQsSvVUsJ8kgLsMBGczwiKk5jo2HwgP714fgnDB4R0kevyepVfoVvD/dg9VfaVVev8rdONZPe2ZP81MEHDr0:17388:0:99999:7:::
fanyank:$6$yaE0qxKD$K6BycZBR5SpeG202tH6yVS5..QxAAgTEoMc5rcVLKI.pERh.1ogMphoyhE/t9ftsXfeDHjl86WW1NJH80ZbR91:17388:0:99999:7:::
1 2 3 4 5 6 789
- 1.賬號名稱
- 2.加密后的密碼(MD5加密)
- 3.最近更改密碼的日期
- 4.密碼不可變動的天數,0為可以隨時變動
- 5.密碼需要重新更改的天數,999999為沒有這個限制
- 6.密碼需要更改前提示的天數
- 7.密碼過期后的寬限時間
- 8.賬號失效日期
- 9.保留
用戶組
與用戶組相關的兩個文件:
- /etc/group
- /etc/gshadow
- /etc/group:
root:x:0:
fanyank:x:1000:
1 2 3 4
- 1.用戶組名稱
- 2.用戶組密碼
- 3.GID
- 4.此用戶組支持的賬號名稱
我們從上可以看出root和fanyank兩個用戶組并沒有包含任何賬號,但是實際上root確實屬于root用戶組,fanyank也是屬于fanyank用戶組的,這是因為 root和fanyank這兩個賬號的初始用戶組為root和fanyank,初始用戶組是不需要填入的
下面引出兩個概念,初始用戶組(initial group) 和 有效用戶組(effective group)
初始用戶組: 當用戶登錄系統,立刻擁有這個用戶組的相關權限,在你新添加一個賬號時,默認會新建一個同賬號同名的用戶組,該用戶組也就是這個新建賬號的初始用戶組
有效用戶組: 新建文件或目錄屬于有效用戶組,可以使用 groups 命令查看用戶所屬的全部分組,第一個即為該用戶的有效用戶組
- /etc/gshadow:
root:*::
fanyank:!::
1 2 3 4
- 1.用戶組名
- 2.密碼,開頭為!表示無合法密碼,所以無用戶組管理員(很少用到)
- 3.用戶組管理員的賬號
- 4.屬于該組的賬號,同/etc/group的4
使用newgrp切換有效用戶組
newgrp 組名
賬號管理
- 新增用戶:
useradd [-u UID] [-g 初始用戶組] [-G 次要用戶組] [-mM] [-c 說明] [-d 主文件夾絕對路徑] [-s shell] 用戶名
- [-M]: 不創建用戶主文件夾
- [-m]: 創建用戶文件夾
- 修改密碼:
passwd [--stdin]
- [--stdin]: 來自前一個管道的數據,作為密碼的輸入
eg: echo "haha" | passwd --stdin fanyank
passwd [-lu] [-S] 賬號
- [-l]: 給賬號上鎖
- [-u]: 給賬號解鎖
- [-S]: 列出相關信息,即shadow中的大部分信息
- 修改賬號設置:
usermod [-cdegGlsuLU] 賬號
- [-c]: 修改說明
- [-d]: 修改主文件夾
- [-g]: 修改初始用戶組,GID
- [-G]: 修改次要用戶組
- [-a]: 增加次要用戶組(與-G一起使用)
eg: usermod -a -G fanyanks fanyank
- [-l]: 修改賬號名稱
- [-s]: 修改用戶shell
- [-u]: 修改用戶UID
- [-L]: 鎖定賬號
- [-U]: 解鎖賬號
- 刪除用戶:
userdel [-r] username
- [-r]: 刪除用戶主文件夾
用戶組管理
添加用戶組:
groupadd [-g gid] [-r] 用戶組名
修改用戶組:
groupmod [-g gid] [-n group-name] 用戶組名
刪除用戶組
groupdel 用戶組名
用戶身份切換
su [-lm] [-c 命令] [username]
- [-l]: 后接欲切換的賬號
- [-m]: 使用目前的環境配置
- [-c]: 僅執行一次命令
單純的使用su切換,讀取變量方式為no-login shell,環境配置不會生效
sudo
sudo [-b] [-u 新用戶賬號]
- [-b]: 將后續的命令讓系統自動執行,不與目前的Shell產生影響
- [-u]: 接欲切換的用戶,無此項為root
eg: sudo -u fanyank touch /tmp/myfile
注意下例的寫法,sh -c "一串命令"
eg: sudo -u fanyank sh -c "mkdir ~fanyank/www;cd ~fanyank/www;echo 'This is index.html file' > index.html"