用戶及權限管理

 71 
 72 用戶,組合權限管理
 73     
 74     multi-tasks,multi-users
 75 
 76     每一個使用者:
 77         用戶標識,密碼;
 78 
 79     組:用戶組,用戶容器;
 80 
 81     用戶類別:
 82         管理root
 83         普通用戶:
 84             系統用戶
 85             登入用戶
 86 
 87         用戶標識:userID,UID
 88             16bits二進制數字:0-65535
 89                 管理員:0
 90                 普通用戶:1-65635
 91                     系統用戶:1-499(centos6),1-999(centos7)
 92                     登入用戶:500-60000(centos6),1000-60000(centos7)
 93 
 94             名稱解析:名稱轉換
 95                 username <-> UID
 96                 根據名稱解析庫進行: /etc/passwd
 97     組:    
 98         組類別1:
 99             管理員組
100             普通用戶組
101                 系統組
102                 登入組
103             組標識:GroupID,GID
104                 管理員組:0
105                 普通用戶:1-65635
106                     系統用戶:1-499(centos6),1-999(centos7)
107                     登入用戶:500-60000(centos6),1000-60000(centos7)
108             名稱解析:groupname <-> gid
109                 解析庫: /etc/group
110         組類別2:
111             用戶的主/基本組
112             用戶的附加組
113         組類別3:
114             私有組:組名同用戶名,且包含一個用戶;
115             公共組:組內包含了多個用戶;
116     認證信息:
117         經過比對事先存儲的與登陸是提供的信是否一致;
118         password:
119             /etc/shadow
120             /etc/gshadow
121         密碼使用策略:
122             1.使用隨機密碼
123             2.最短長度不要低於8位
124             3.應該使用大小字母,數字和標點符號混合密碼
125             4.按期更換
126         加密算法:    md5,sha
127             對此加密:加密和解密使用一個密碼
128             非對稱加密:加密和解密全部的一對兒密鑰
129                 密鑰對兒:公鑰,私鑰;
130             單向加密:只能加密,不能解密;提取數據特徵碼;
131                 定長輸出;雪崩效應;
132 
133     /etc/passwd: 用戶的信息庫
134         name:passwd:UID:GID:GECOS:directory:shell
135 
136         name: 用戶名
137         password:能夠是加密的密碼,也但是佔位符x
138         UID: 用戶ID,用來標識每一個用戶的惟一標示符
139         GID: 組ID,用來標識用戶組的惟一標識符
140         GECOS:
141         directory:
142         shell:
143 
144     /etc/shadow : 用戶密碼信息
145     用戶名:加密的密碼:最近一次修改密碼時間:最短使用期限:最長使用期限:警告期段:過時期限:保留字段
146 
147     /etc/group : 組的信息庫
148         group_name:password:GID:user_list
149             user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表;
150 
151 相關命令:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,chsh,id,su
152 
153 groupadd: 建立組
154      groupadd [options] group
155          -g GID:指定GID;默認是上一個組的GID+1;
156          -r : 建立系統組;
157 groupdel: 刪除組
158 groupmod:修改組屬性
159     -g GID: 修改GID
160     -n new_name: 修改組名;
161 
162 useradd:建立用戶
163     useradd [options] LOGIN
164         -u,--uid UID :指定UID;
165         -g,--gid GROUP: 指定基本組ID,此組得事先存在;
166         -G,--group GROUP1[,GROUP2,...[,GROUPN]]] : 指定用戶所屬組得附加組,多個組用逗號分隔;
167         -c, --comment COMMENT : 指明註釋信息;
168         -d, --home HOME_DIR : 指定的路徑爲用戶的家目錄;經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件;
169         -s, --shell SHELL : 指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中;
170         -r, --system : 建立系統用戶;
171         -M, --no-create-home: 不用建立用戶的家目錄;
172     注意:建立用戶時的諸多默認設定配置文件爲/etc/login.defs
173 
174     useradd -D : 顯示建立用戶的默認配置;
175     useradd -D 選項 : 修改默認選項的值;
176         修改結果保存於/etc/default/useradd文件中;
177 
178 usermod命令: 修改用戶屬性
179     usermod [選項] 登陸
180         -u,--uid UID : 修改用戶的ID爲此處指定的新UID;
181         -g,--gid GROUP: 修改用戶所屬的基本組;
182         -G,--groups GROUP1[,GROUP2,...[,GROUPN]]] :修改用戶所屬的附加組;原來的附加組會被覆蓋;
183         -a,append : 與-G一同使用,用於爲用戶追加新的附加組;
184         -c, --comment COMMENT : 修改註釋信息;
185         -d, --home HOME_DIR : 修改用戶的家目錄; 用戶原有的文件不會被轉移至新位置;
186         -m,--move-home : 只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄;
187         -l,--login NEW_login:修改用戶名;
188         -s,--shell SHELL : 修改用戶的默認shell;
189         -L,--lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!";
190         -U,--unlock : 解鎖用戶的密碼;
191 userdel命令: 刪除用戶
192     userdel [option] 登陸
193         -r:刪除用戶時一併刪除其家目錄;
194         例如:
195         userdel linuxde       //刪除用戶linuxde,但不刪除其家目錄及文件;
196         userdel -r linuxde    //刪除用戶linuxde,其家目錄及文件一併刪除
197 
198 實操:
199     1.建立用戶gentoo,UID爲4001,基本組爲gentoo,附加組爲distro(gid爲5000)和peguin(gid爲5001);
200         groupadd distro -g 5000
201         groupadd peguin -g 5001
202         useradd gentoo -u 4001 -G distro,peguin
203     2.建立用戶fedro,其註釋信息爲fedoro core,默認shell爲/bin/tsch;
204         useradd fedro -c "fedoro core" -s /bin/tsch
205     3.修改gentoo用戶的家目錄爲/var/tmp/gentoo:要求其原有文件仍能被用戶訪問;
206         usermod -d /var/tmp/gentoo -m gentoo
207     4.爲gentoo新增附加組netadmin;
208         usermod  -a -G netadmin gentoo
209 
210 passwd命令:
211     passwd  [-k]  [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warn‐
212        days] [-i inactivedays] [-S] [--stdin] [username]
213 
214        (1) passwd : 修改用戶本身的密碼;
215        (2) passwd username : 修改指定用戶的密碼,但僅root有此權限;
216                -l,-u : 鎖定和解鎖用戶;
217                -d : 清除用戶密碼串;
218                -e date : 過時期限,日期;
219                -i days :非活動期限;
220                -n days : 密碼的最短使用期限;
221                -x days : 密碼的最長使用期限;
222                -w days : 警告期限;
223 
224                --stdin: 
225                    用法:echo "password" | passwd --stdin username
226 gpasswd命令:
227     組密碼文件: /etc/gshadow
228 
229     gpasswd [選項] group
230         -a usename : 向組中添加用戶
231         -d usename : 從組中移除用戶
232 
233 newgrp命令: 臨時切換指定的組爲基本組;
234     newgrp [-] [group] 
235      -: 會模擬用戶從新登陸以實現從新初始化其工做環境;
236 
237 chage命令:更改用戶密碼過時信息
238     chage [option] 登陸名
239         -d
240         -E
241         -w
242         -m
243         -M
244 
245 id命令: 顯示用戶真實和有效id;
246     id [OPTION]... [USER]
247         -u : 僅顯示有效的uid
248         -g : 僅顯示用戶的基本組id
249         -G : 僅顯示用戶所屬的全部組的id;
250         -n : 顯示名字而非id;
251 
252 su命令: switch user
253      登陸式切換: 會經過讀取目標用戶的配置文件來從新初始化
254          su -, -l, --login username
255      非登陸式切換:不會讀取目標用戶的配置文件進行初始化
256          su username
257          注意:管理員可無密碼切換至其餘任何用戶;
258 
259      -c 'cmd' : 僅以指定用戶的身份運行此處指定的命令;
260 
261 其餘幾個不經常使用命令:chsh chfn finger whoami
262 命令總結:groupadd,groupdel,groupmod,useradd,usermod,userdel,passwd,gpasswd,newgrp,id,su,chage
263 
264 
265 權限管理:
266      ls -l ,ll
267          rwxrwxrwx:
268              左三位: 定義user(owner)的權限
269              中三位: 定義group的權限
270              右三位: 定義other的權限
271 
272     進程安全上下文:
273         進程對文件的訪問權限應用模型:
274             進程的屬主與文件的屬主是否相同;若是相同,則應用屬主權限;
275             不然,則檢查進程的屬主是否屬於文件的屬組;若是是則應用屬組權限;
276             不然,就只能應用other的權限;
277     權限:
278         r: readable,讀
279         w: writable,寫
280         x: excutable,執行
281 
282         文件:
283             r:可獲取文件的數據;
284             w:可修改文件的數據;
285             x:可將此文件運行爲進程;
286         目錄:
287             r:可以使用ls命令獲取其下的全部文件列表;
288             w:可修改此目錄下的文件列表;即建立或刪除文件;
289             x:可cd至此目錄,且可以使用ll 來獲取全部文件的詳細信息;
290 
291 權限管理命令:
292     chmod命令:
293         chmod [OPTION]... MODE[,MODE]... FILE...
294            chmod [OPTION]... OCTAL-MODE FILE...
295            chmod [OPTION]... --reference=RFILE FILE...
296 
297            三類用戶:
298                u:屬主
299                g:屬組
300                o:其餘
301                a:全部
302 
303         (1) chmod [OPTION]... MODE[,MODE]... FILE...
304                mode表示法:
305                    賦權表示法:直接操做一類用戶的全部權限位rwx;
306                        u=
307                        g=
308                        o=
309                        a=
310                    受權表示法:直接操做一類用戶的一個權限位r,w,x;
311                        u+,u-
312                        g+,g-
313                        o+,o-
314                        a+,a-
315            (3) chmod [OPTION]... --reference=RFILE FILE...
316                    引用某個文件RFILE的權限,修改成file的權限;
317 
318            選項:
319                -R,--recursive: 遞歸修改;
320 
321 從屬關係管理命令:chown,chgrp
322     chown命令:
323         chown [OPTION]... [OWNER][:[GROUP]] FILE...
324            chown [OPTION]... --reference=RFILE FILE...
325 
326            選項:
327                -R: 遞歸修改
328 
329     chgrp命令:
330         chgrp [OPTION]... GROUP FILE...
331            chgrp [OPTION]... --reference=RFILE FILE...
332 
333 思考: 用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,可否修改此文件內容?可否刪除此文件?
334 
335 umask: 文件的的權限反向掩碼,遮掩碼;
336     文件: 
337         666-umask
338     目錄:
339         777-umask
340 
341     注意: 之因此文件用666去減,表示文件默認不能擁有執行權限;
342         umask: 023  默認022
343             666-023=643+1=644
344             777-023=754
345 
346     umask命令:
347         umask: 查看當前umask
348         umask MASK: 設置umask
349 
350     注意:此類設定僅對當前shell進程有效(經過命令進行的都是僅對當前shell有效);
351 
352 實操:
353     1.新建系統組mariadb,新建系統用戶mariadb,屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看命令提示符;
354         useradd -M -r -s /sbin/nologin mariadb
355     2.新建GID爲5000的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;
356         groupadd -g 5000 mageedu
357         useradd -d /users/gentoo gentoo
358         echo gentoo | passwd --stdin gentoo
359     3.新建用戶fedora,其家目錄爲/users/www;密碼同用戶名;
360         useradd -d /users/www fedora
361         echo gentoo | passwd --stdin fedora
362     4.新建用戶www,其家目錄爲/users/www;刪除www用戶,但保留其家目錄;
363         useradd -d /users/www www
364         userdel www
365     5.爲用戶gentoo和fedora增附加組megeedu;
366         groupmod mageedu
367         usermod -G megeedu gentoo
368         usermod -G megeedu fedora
369     6.複製目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的全部文件的屬組爲mageedu,並讓屬組對目錄自己擁有寫權限;
370         cp /var/log /tmp/ 
371         chown -R :mageedu /tmp/log
372         chmod g+w /tmp/log
373 
374 install命令:
375         單源複製:
376             install [OPTION]... [-T] SOURCE DEST
377           多源複製:
378               install [OPTION]... SOURCE... DIRECTORY
379               install [OPTION]... -t DIRECTORY SOURCE...
380           建立目錄:
381               install [OPTION]... -d DIRECTORY...
382 
383           經常使用選項:
384               -m,--mode=MODE : 設定目標文件權限,默認爲755;
385               -o,--owner=OWNER: 設定目標文件屬主;
386               -g,--group=GROUP: 設定目標文件屬組;
387 
388 mktemp命令:
389     NAME
390        mktemp - create a temporary file or directory
391 
392     SYNOPSIS
393            mktemp [OPTION]... [TEMPLATE]
394 
395     例如:         
396         myfile=$(mktemp /tmp/mytmp.xxx)
397     經常使用選項:
398         -d: 建立臨時目錄
399 
400     注意:mktemp會建立的臨時文件名直接返回,所以,可直接經過命令引用保存起來;
 
 
Linux系統上的特殊權限

	特殊權限: SUID,SGID,STICKY

	安全上下文:
		1.進程以某一戶的身份運行;進程是發起此進程的用戶的代理,所以以此用戶的身份和權限完成全部操做;
		2.權限匹配模型:
			(1)判斷進程的屬主是否爲被訪問文件的屬主,若是是,則應用屬主的權限;不然,進入第2步;
			(2)判斷進程的屬主是否屬於被訪問的文件的屬組,若是是,則應用屬組的權限;不然,進入第3步;
			(3)應用其餘權限;
	SUID:
		默認狀況下:用戶發起的進程,其屬主是發起者。所以,進程以發起者的身份在運行
		
		SUID的功用:用戶運行某程序時,若是此程序擁有SUID權限,那麼此程序運行爲進程時,進程的屬主不是發起者,而是程序文件本身的屬主

		管理文件的SUID權限:
			設置SUID:chmod u+s FileName
			取消SUID:chmod u-s FileName
			
			展現位置:屬主的執行權限位
				若是屬主本來有執行權限,顯示爲小寫s
				若是屬主本來沒有執行權限,顯示爲大寫S
	SGID:
		功用:當目錄屬組有寫權限,且有SGID權限時,那麼全部屬於此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組;

		管理文件sgid權限:
			chmod g+ | -s file...

		展現位置:屬主的執行權限位
				若是屬組本來有執行權限,顯示爲小寫s
				若是屬組本來沒有執行權限,顯示爲大寫S
	STICKY:
		功用:對於屬組或全局可寫的二目錄,組內的全部用戶或系統上的全部用戶對此目錄中都能建立新文件或刪除全部的已有文件;若是爲此類目錄設置sticky權限,則每一個用戶能建立新文件,且只能刪除本身的文件;

		管理文件sticky權限:
			chmod o+ | -t file...

		展現位置:屬主的執行權限位
				若是屬組本來有執行權限,顯示爲小寫s
				若是屬組本來沒有執行權限,顯示爲大寫S

	系統上的/tmp和/var/tmp目錄默認均有sticky權限;

管理特殊權限的另外一種方式:
	suid sgid sticky  	八進制權限
				0 0 0 	0
				0 0 1 	1
				0 1 0 	2
				0 1 1   3
				1 0 0   4
				1 0 1	5
				1 1 0   6
				1 1 1   7
	基於八進制方式賦權時,可於默認的三位八進制數字左側再加一位八進制數字;
		例如:
			chmod 1777

facl: file access control lists
	
	文件的額外賦權機制:
		在原來的u,g,o以外,另外一層讓普通用戶能控制賦權給另外的用戶或組的賦權機制;

	getfacl命令:
		getfacl file
			user:username:mode
			group:groupname:mode
	setfacl命令:
		賦權給用戶:
			setfacl -m u:username:mode file...
		賦權給組:
			setfacl -m g:groupname:mode file...
		撤銷賦權:
			setfacl -x u:username file...
			setfacl -x g:groupname file...
相關文章
相關標籤/搜索