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...