本篇權限分兩個部分介紹。linux
1,用戶、組;shell
2,文件權限;bash
第一個部分主要介紹用戶與組的建立、刪除、修改、查詢。以及這些信息的存儲位置。第二部分介紹文件、文件夾的權限。以及uid、gid、bit。app
一,linux用戶與組ui
Linux用戶與組信息存儲位置:加密
1,用戶spa
1.1 建立用戶的兩個命令:adduser與useradd。每一個命令詳情經過 -h查看。unix
root@hf-vm:/home# adduser hf2 root@hf-vm:/home# useradd -m -s '/bin/bash' hf3 root@hf-vm:/home# ls -l /home/ drwxr-xr-x 2 hf1 hf1 4096 3月 22 10:38 hf1 drwxr-xr-x 2 hf2 hf2 4096 3月 22 10:58 hf2 drwxr-xr-x 2 hf3 hf3 4096 3月 22 10:59 hf3
1.2 查看用戶信息命令 id與fingerrest
root@hf-vm:/home# id hf3 uid=1003(hf3) gid=1004(hf3) 組=1004(hf3)
root@hf-vm:/home# finger hf2 Login: hf2 Name: Directory: /home/hf2 Shell: /bin/bash Never logged in. No mail. No Plan.
1.3 刪除用戶命令userdelcode
root@hf-vm:/home# userdel -l userdel: 不適用的選項 -- l 用法:userdel [選項] 登陸 選項: -f, --force 即便不屬於此用戶,也強制刪除文件 -h, --help 顯示此幫助信息並推出 -r, --remove 刪除主目錄和郵件池 -R, --root CHROOT_DIR chroot 到的目錄 -Z, --selinux-user 爲用戶刪除全部的 SELinux 用戶映射 root@hf-vm:/home# userdel -r hf2 root@hf-vm:/home# ls -l /home/ drwxr-xr-x 2 hf1 hf1 4096 3月 22 10:38 hf1 drwxr-xr-x 2 hf3 hf3 4096 3月 22 10:59 hf3 drwxr-xr-x 18 hufeng hufeng 4096 3月 22 08:50 hufeng
1.4 修改用戶信息usermod
root@hf-vm:/home# usermod -h 用法:usermod [選項] 登陸 選項: -c, --comment 註釋 GECOS 字段的新值 -d, --home HOME_DIR 用戶的新主目錄 -e, --expiredate EXPIRE_DATE 設定賬戶過時的日期爲 EXPIRE_DATE -f, --inactive INACTIVE 過時 INACTIVE 天數後,設定密碼爲失效狀態 -g, --gid GROUP 強制使用 GROUP 爲新主組 -G, --groups GROUPS 新的附加組列表 GROUPS -a, --append GROUP 將用戶追加至上邊 -G 中提到的附加組中, 並不從其它組中刪除此用戶 -h, --help 顯示此幫助信息並推出 -l, --login LOGIN 新的登陸名稱 -L, --lock 鎖定用戶賬號 -m, --move-home 將家目錄內容移至新位置 (僅於 -d 一塊兒使用) -o, --non-unique 容許使用重複的(非惟一的) UID -p, --password PASSWORD 將加密過的密碼 (PASSWORD) 設爲新密碼 -R, --root CHROOT_DIR chroot 到的目錄 -s, --shell SHELL 該用戶賬號的新登陸 shell -u, --uid UID 用戶賬號的新 UID -U, --unlock 解鎖用戶賬號 -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER 用戶帳戶的新 SELinux 用戶映射 root@hf-vm:/home# usermod -l 'test' hf3 root@hf-vm:/home# finger hf3 finger: hf3: no such user. root@hf-vm:/home# finger test Login: test Name: Directory: /home/hf3 Shell: /bin/bash Never logged in. No mail. No Plan.
修改用戶的登入shell還可使用 chsh (change shell)命令。其用法爲 chsh USERNAME
能夠用pwck來檢查用戶帳號的完整性。
1.5 修改用戶密碼 passwd
root@hf-vm:/home# passwd -h 用法:passwd [選項] [登陸] 選項: -a, --all 報告全部賬戶的密碼狀態 -d, --delete 刪除指定賬戶的密碼 -e, --expire 強制使指定賬戶的密碼過時 -h, --help 顯示此幫助信息並推出 -k, --keep-tokens 僅在過時後修改密碼 -i, --inactive INACTIVE 密碼過時後設置密碼不活動爲 INACTIVE -l, --lock 鎖定指定的賬戶 -n, --mindays MIN_DAYS 設置到下次修改密碼所須等待的最短天數 爲 MIN_DAYS -q, --quiet 安靜模式 -r, --repository REPOSITORY 在 REPOSITORY 庫中改變密碼 -R, --root CHROOT_DIR chroot 到的目錄 -S, --status 報告指定賬戶密碼的狀態 -u, --unlock 解鎖被指定賬戶 -w, --warndays WARN_DAYS 設置過時警告天數爲 WARN_DAYS -x, --maxdays MAX_DAYS 設置到下次修改密碼所須等待的最多天數 爲 MAX_DAYS root@hf-vm:/home# passwd test 輸入新的 UNIX 密碼: 從新輸入新的 UNIX 密碼: passwd:已成功更新密碼
2,組
2.1,建立組groupadd
root@hf-vm:/home# groupadd -h 用法:groupadd [選項] 組 選項: -f, --force 若是組已經存在則成功退出 而且若是 GID 已經存在則取消 -g -g, --gid GID 爲新組使用 GID -h, --help 顯示此幫助信息並推出 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值 -o, --non-unique 容許建立有重複 GID 的組 -p, --password PASSWORD 爲新組使用此加密過的密碼 -r, --system 建立一個系統帳戶 -R, --root CHROOT_DIR chroot 到的目錄 --extrausers Use the extra users database root@hf-vm:/home# groupadd test root@hf-vm:/home# cat /etc/group test:x:1005:
2.2 組的信息修改groupmod
root@hf-vm:/home# groupmod -h 用法:groupmod [選項] 組 選項: -g, --gid GID 將組 ID 改成 GID -h, --help 顯示此幫助信息並推出 -n, --new-name NEW_GROUP 更名爲 NEW_GROUP -o, --non-unique 容許使用重複的 GID -p, --password PASSWORD 將密碼更改成(加密過的) PASSWORD -R, --root CHROOT_DIR chroot 到的目錄 root@hf-vm:/home# groupmod -n 'test1' test root@hf-vm:/home# cat /etc/group test1:x:1005:
2.3,組密碼修改 gpasswd
root@hf-vm:/home# gpasswd -h 用法:gpasswd [選項] 組 選項: -a, --add USER 向組 GROUP 中添加用戶 USER -d, --delete USER 從組 GROUP 中添加或刪除用戶 -h, --help 顯示此幫助信息並推出 -Q, --root CHROOT_DIR 要 chroot 進的目錄 -r, --remove-password 移除組 GROUP 的密碼 -R, --restrict 向其成員限制訪問組 GROUP -M, --members USER,... 設置組 GROUP 的成員列表 -A, --administrators ADMIN,... 設置組的管理員列表 除非使用 -A 或 -M 選項,不能結合使用這些選項。 root@hf-vm:/home# gpasswd -a test test1 root@hf-vm:/home# cat /etc/group test1:x:1005:test root@hf-vm:/home# gpasswd -d test test1 test1:x:1005:
二,文件權限
首先看個實例
-rw-rw-r-- 1 hf1 hf1 0 3月 22 08:54 file01
drwxrwxrwt 2 root root 4096 3月 22 08:49 .font-unix/
前面10個字符肯定文件權限:
第一個字符表明文件類型: - 文件 , d 目錄,l 連接
其他字符3個一組,分別表明 u(用戶) , g(組) , o(其它) 。每組單個字符有:r (讀) , w(寫),x(可執行)。
例如 drwxrwxrwt 2 root root 4096 3月 22 08:49 .font-unix/ :
第一個符d 表明目錄
第一組rwx表明所屬用戶root具備讀寫可執行權限
第二組rwx表明所屬組root具備讀寫可執行權限
第三組rwt表明其它用戶具備讀寫,t 表明粘着位只對文件夾起做用。表明該文件夾下只有root能夠刪除全部文件,其它用戶只能刪除本身建立的文件。
2 表明鏈接的文件數
root 表明用戶
root 表明用戶組
4096 表明文件大小
3月22 08:49 表明建立時間
.font-unix/文件名
上述權限也能夠用數字表示:r=4,w=2,x=1。所以rwx=7
2.1,改變文件權限的命令chmod
格式語法: chmod [u|g|o|a][+|-|=][r|w|x] 文件名
例如 -rw-rw-r-- 1 hf1 hf1 0 3月 22 08:54 file01 :
修改用戶以及組權限爲只讀 chmod u-w,g-w file01
2.2,改變全部者命令chown
改變用戶組命令chgrp
2.3,SetUID、SetGID、Sticky BIT介紹
2.3.1,SetUID
只有能夠執行的二進制程序才能設定SetUID權限,而且命令執行者要對該程序擁有x(執行)權限。
例如:passwd命令,它是一個可執行文件。s表示這個命令具備root用戶的權限。
root@hf-vm:/tmp# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59640 1月 25 2018 /usr/bin/passwd
咱們再看/etc/shadow、/etc/passwd文件的權限以及useradd的權限。
-rw-r--r-- 1 root root 2538 3月 22 11:15 /etc/passwd -rw-r----- 1 root shadow 1640 3月 22 11:19 /etc/shadow root@hf-vm:/tmp# ls -l /usr/sbin/useradd -rwxr-xr-x 1 root root 126240 1月 25 2018 /usr/sbin/useradd
由以上能夠看出,普通用戶具備調用passwd命令修改密碼的權限。而後passwd是以root用戶去執行的,所以具備修改/etc/passwd文件的權限。可是普通用戶沒有添加用戶的權限。
設置與取消setuid的方法:
在全部者權限以前加上 4 表明SetUID,設定方法爲:chmod 4755 文件名,相應的取消 SetUID 方法爲:chmod 755 文件名。
還有設定方法爲: chmod u+s 文件名,相應的取消 SetUID 方法爲:chmod u-s 文件名。
2.3.2,SetGID
普通用戶必須對一個目錄擁有r和x權限,才能進入此目錄。對於設定了 SetGID 權限的目錄來講,普通用戶在此目錄中的有效組會變成此目錄的所屬組,若普通用戶對此目錄擁有w權限時,在目錄中新建的文件的默認所屬組是這個目錄的所屬組。
xx@hf-vm:/tmp$ mkdir test drwxrwxr-x 2 xx xx 4096 3月 22 16:08 test/ xx@hf-vm:/tmp$ chmod g+s test/ drwxrwsr-x 2 xx xx 4096 3月 22 16:08 test/ xx@hf-vm:/tmp$ chmod 777 test/ drwxrwsrwx 2 xx xx 4096 3月 22 16:08 test/ xx@hf-vm:/tmp$ su hf1 hf1@hf-vm:/tmp/test$ touch t1 -rw-rw-r-- 1 hf1 xx 0 3月 22 16:17 t1
設定與取消 SetGID 的方法以下:
在全部者權限以前加上 2 表明SetGID,設定方法爲:chmod 2755 文件名,相應的取消 SetGID 方法爲:chmod 755 文件名。
還有設定方法爲: chmod g+s 文件名,相應的取消 SetGID 方法爲:chmod g-s 文件名。
2.3.3,Sticky BIT
Sticky BIT 表示的是粘着位,主要是用來避免其餘用戶對文件的誤操做。粘着位目前只對目錄有效,普通用戶要對該目錄擁有w和x權限,即普通用戶能夠在此目錄擁有寫入權限。若是沒有粘着位,由於普通用戶擁有w權限,因此能夠刪除此目錄下全部文件,包括其餘用戶創建的文件。一但賦予了粘着位,除了root能夠刪除全部文件,普通用戶就算擁有w權限也只能刪除本身創建的文件,可是不能刪除其餘用戶創建的文件。
drwxrwxrwt 16 root root 4096 3月 22 16:17 tmp/ hf1@hf-vm:/$ ls -l tmp/ -r--r--r-- 1 hf1 hf1 0 3月 22 08:54 file01 drwxrwsrwx 2 xx xx 4096 3月 22 16:17 test hf1@hf-vm:/$ rm -rf /tmp/test rm: 沒法刪除'/tmp/test': 不容許的操做 hf1@hf-vm:/$ rm -rf file01
設置與取消粘着位 Sticky BIT 權限以下: 設置粘着位 :chmod 1777 目錄名 或 chmod o+t 目錄名 取消粘着位 :chmod 777 目錄名 或 chmod o-t 目錄名