新建用戶用到的相關文件
/etc/default/useradd
/etc/login.defs
/etc/skel/*
批量創建用戶
1.創建用戶列表user.txt(文件格式同/etc/passwd)
2.newusers user.txt
3.創建密碼文件passwd.txt(格式 用戶名:密碼)
4.cat passwd.txt | chpasswd
批量創建用戶時有家目錄(但家目錄中無文件,需要手動添加),無郵箱(有郵件時自動生成郵箱)
將/etc/skel/中的文件(均為隱藏文件)復制到家目錄中:
(1)在/etc/skel/下使用cp `ls -A` | /home/username
(2)cp /etc/skel/.[^.]* /home/username
(3)cp /etc/skel/. /home/username
usermod [OPTION] login
-u UID: 新UID
-g [GID|GROUP]: 新主組
-G GROUP1 [,GROUP2,…]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-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: 設定非活動期限;
userdel [OPTION]… login
-r: 刪除用戶家目錄及郵箱(如若存在)
id [OPTION]… [USER]
-u: UID
-g: GID
-G: Groups
-n: Name(默認只顯示ID號碼,與-n連用可顯示名稱)
su[options…] [-] [user [args…]]
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su – UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
su -l UserName相當于su – UserName
root su至其他用戶無須密碼;非root用戶切換時需要密碼
su [-] UserName -c 'COMMAND' :撤換至指定用戶身份執行命令,命令執行結束后即退出
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限:
passwd: 普通用戶僅能修改自己的密碼;
常用選項:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-inactivedays:非活動期限;
–stdin:從標準輸入接收用戶密碼;
echo "PASSWORD" | passwd–stdinUSERNAME
echo username:passwd | chpasswd
chage [OPTION]… LOGIN
-d:修改用戶最近一次修改密碼的日期
-E:修改賬戶的過期日期
-I:密碼禁用期
-m:密碼的最小使用期限
-M:密碼的最大使用期限
-W:密碼的警告時間
–l:顯示密碼策略
-e:下一次登錄強制重設密碼
chfn指定個人信息,可用finger查看
chsh -s shell :更改登錄shell類型
groupadd [OPTION]… groupname創建用戶組
-g GID: 指明GID號;
-r:創建系統組;
CentOS 6: GID<500
CentOS 7: GID<1000
groupmod [OPTION]… groupname 組屬性修改
-n groupname:新組名
-g GID:新的GID;
groupdel groupname 刪除用戶組
當有用戶將該用戶組作為主組時無法刪除該用戶組,必須先刪除用戶
gpasswd [OPTION] GROUP 設置組密碼
-a user: 將user添加至指定組中;
-d user: 從指定組中移除用戶user
-A user1,user2,…: 設置有管理權限的用戶列表
newgrp groupname 臨時切換主組;
啟用一個新bash切換主組,可用echo $$查看當前bash的PID
如果用戶本不屬于此組,則需要組密碼
groupmems [options] [action]
options:
-g:更改為指定組(只有root)
-a:指定用戶加入組
-d:從組中刪除用戶
-p:從組中清除所有成員
-l:顯示組成員列表
groups [OPTION] [USERNAME]… 查看用戶所屬組列表
root用戶及普通用戶均能查看自己或其他用戶的所在組
chown[OPTION]… [OWNER][:[GROUP]] FILE… 設置文件的所有者和所有組
選項:
-R: 遞歸修改
–reference=FILE1 FILE2… 以file1做參考文件修改file2的屬主屬組
OWNER 只修改屬主
OWNER:GROUP 同時修改屬主屬組
:GROUP 只修改屬主
命令中的冒號可用.替換;
chgrp[OPTION]… GROUP FILE… 修改文件的屬組
-R 遞歸
–reference=FILE1 FILE2… 以file1做參考文件修改file2的屬組
文件的權限主要針對三類對象進行定義:
owner: 屬主, u
group: 屬組, g
other: 其他, o
每個文件針對每類訪問者都定義了三種權限:
r: Readable
w: Writable
x: eXcutable
文件:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程
目錄:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限
文件權限(rwx|X)
文件權限操作命令
chmod
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640: rw-r—–
rwxr-xr-x: 755
chmod[OPTION]… OCTAL-MODE FILE…
chmod[OPTION]… MODE[,MODE]… FILE…
-R: 遞歸修改權限
–reference=RFILE FILE… 以file1做參考文件修改file2的權限
MODE:
修改一類用戶的所有權限:
u= g= o= ug= a= u=,g=
修改一類用戶某位或某些位權限
u+ u- g+ g- o+ o- a+ a-
例如
chgrp sales testfile
chown root:admins testfile
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
chown mage testfile
umask值可以用來保留在創建文件權限
新建FILE權限: 666 -umask
如果所得結果某位存在執行(奇數)權限,則將其權限+1
新建DIR權限: 777 -umask
普通用戶的umask是002
root用戶的umask是022
umask: 查看
umask #: 設定(umask 002)
umask –S 模式方式顯示
umask –p 輸出可被調用
全局設置:/etc/bashrc用戶設置:~/.bashrc
SUID, SGID, Sticky
三種常用權限:r, w, x
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
一、SUID
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬主
SUID只對二進制可執行程序有效
SUID設置在目錄上無意義
權限設定:
chmod u+s FILE…
chmod u-s FILE…
二、SGID
1.任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬組
權限設定:
chmod g+s FILE…
chmod g-s FILE…
2.默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組
通常用于創建一個協作目錄
權限設定:
chmod g+s DIR…
chmod g-s DIR…
三、sticky
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
sticky 設置在文件上無意義
權限設定:
chmod o+t DIR…
chmod o-t DIR…
例如:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
SUID: user,占據屬主的執行權限位
s: 屬主擁有x權限
S:屬主沒有x權限
SGID: group,占據屬組的執行權限位
s: group擁有x權限
S:group沒有x權限
Sticky: other,占據other的執行權限位
t: other擁有x權限
T:other沒有x權限
chattr +i 不能刪除,改名,更改
chattr +a 只能增加
lsattr 顯示特定屬性
ACL:Access Control List,實現靈活的權限管理
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。
CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt
ACL生效順序:所有者,自定義用戶,自定義組,其他人
為多用戶或者組的文件和目錄賦予訪問權限rwx
getfacl file|directory
setfacl [-bkEd] [{-m|-x}acl參數] filename
-m:設置參數
-x:刪除指定參數
-b: 刪除所有參數
-k:刪除默認參數
-d:設置默認參數
-R:遞歸設置
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限
getfacl可看到特殊權限:flags
默認ACL權限給了x,文件也不會繼承x權限。
base ACL 不能刪除
getfacl file1 | setfacl –set-file=-file2 復制file1的acl權限給file2
mask只影響除所有者和other的之外的人和組的最大權限
mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
用戶或組的設置必須存在于mask權限設定范圍內才會生效。
setfacl -m mask::rxfile
–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以.如:
setfacl –set u::rw,u:wang:rw,g::r,o::-file1
備份和恢復ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1
問題:
在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。
chown :g1 /date/testdir
chmod o= /date/testdir
setfacl -m d:g:g2:rwx /date/testdir
setfacl -m g:g3:rx /date/testdir
當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作?
無法進入該目錄,即使對內部的文件有讀權限也無法查看文件內容
當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作?
無法改變目錄結構,即新增,刪除,重命名等
當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除?
無法修改與刪除
復制/etc/fstab文件到/var/tmp下,設置文件所有者為wangcai讀寫權限,所屬組為sysadmins組有讀寫權限,其他人無權限
chown wangcai:sysadmins /var/tmp/fstab
chmod 660
誤刪除了用戶wangcai的家目錄,請重建并恢復該用戶家目錄及相應的權限屬性
cp -r /etc/skel /home/wangcai
chown wangcai:wangcai /hone/wangcai
原創文章,作者:anonymous,如若轉載,請注明出處:http://www.www58058.com/31962