linux 權限

本篇權限分兩個部分介紹。linux

1,用戶、組;shell

2,文件權限;bash

第一個部分主要介紹用戶與組的建立、刪除、修改、查詢。以及這些信息的存儲位置。第二部分介紹文件、文件夾的權限。以及uid、gid、bit。app

一,linux用戶與組ui

Linux用戶與組信息存儲位置:加密

  用戶信息文件:    /etc/passwd  文件配置規則:用戶名:密碼佔位符:用戶ID:組ID:通常的信息:家目錄:默認登入shell
  密碼文件:           /etc/shadow   文件配置規則:用戶名: 加密的密碼:最後一次修改密碼的日期:密碼最小年齡:密碼最大年齡:密碼警告時間段:密碼禁用期:帳戶過時
  用戶組文件:        /etc/group      文件配置規則:組名:密碼佔位符:組ID:組用戶
  用戶組密碼文件: /etc/gshadow 
  用戶配置文件:     /etc/login.defs    /etc/default/useradd
  新用戶信息文件:  /etc/skel
  登陸信息:             /etc/motd

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 目錄名

相關文章
相關標籤/搜索