linux權限體系簡析

   
linux 三種用戶
        超級用戶:root
        普通用戶
        虛擬用戶“僞用戶” shell 是  /sbin/nologin 作用是:爲弄個服務(程序)提供支持的。
    用戶組的概念;
        組的由來。方便管理用戶。如果要設置許多用戶的權限很繁瑣。這裏需要把用戶加入組。
        然後給組設定權限。
    用戶的配置文件: /etc/passwd
    # more /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    解析:用戶名:密碼(x 是個佔位符。真正的密碼文件位於/etc/shadow):屬主的id(UID):屬組的id(GID):描述性文字:調用的shell
    可以使用id命令來查看 屬主的id和屬組的id。
    # id root
    uid=0(root) gid=0(root) groups=0(root)
    LINUX下面 UID 的數值又65535個之多。一般以500爲界限。小於等於500的爲系統所佔有的id。500以上的爲普通用戶所佔有的id
    修改用戶的屬性:可以利用 命令  vipw (直接進入/etc/passwd 的編輯模式)
    修改普通用戶爲超級用戶:  vipm   修改 普通用戶的UID 爲0  
    密碼配置文件: /etc/shadow
    組配置文件 /etc/shadow
    其實: useradd執行創建用戶是讀取以下3個文件的設置。來創建用戶的相關信息的。
    /etc/login.defs
    /etc/default/useradd
    /etc/kernel (目錄)
# more /etc/login.defs | grep -Ev "#|^$"
MAIL_DIR        /var/spool/mail
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                   500  (centos7 下是1000開始默認)
UID_MAX                 60000
GID_MIN                   500
GID_MAX                 60000
CREATE_HOME     yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
# more /etc/default/useradd
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc
    所有創建中組和用戶如果不指定。都會根據上面3個文件默認自行設定參數。
    命令操作;
    groupadd 創建一個新的工作組。
        -g 指定新的組id
    groupdel 用於刪除指定的組
    useradd   添加用戶命令:
     格式:   useradd  選項  參數
     舉個例子:
     # useradd swa4 -u 510 -g swa -G swa1 -c swa -s /bin/bash
        # more /etc/passwd | grep swa4
        swa4:x:510:501:swa:/home/swa4:/bin/bash
        -u 指定用戶的UID
        -g 指定用戶的組id
        -G  指定用戶的附加組(一個用戶除了自身的組外,還可以加入其它組。
            就好比,你是羽毛球協會的,你也可以加入乒乓球協會)
        -c  是註釋的內容。
        -s   用戶登錄後的shell
        -M  不創建用戶目錄
        一般用於創建新用戶支持某種服務可以不讓用戶登錄並且不創建用戶目錄。
        #  useradd  nginx -s /sbin/nologin -M

    userdel  刪除用戶
        -r   刪除用戶。連同用戶目錄下是文件一起刪除
        -f   如果用戶在登錄狀態也可以強制刪除。
    此外,還可以通過修改 /etc/passwd 等文件修改。
    usermod  用於修改用戶的基本信息。
        -c 修改用戶的備註文字
        -d 修改用戶登錄的目錄
        -g  修改用戶所屬的羣組
        -G 修改用戶所屬的附加羣組
        -L 鎖定用戶賬號名稱
        -U 接觸用戶ID
        -l 修改用戶的名稱
        注意-l 的用法:  usermod  -l  修改後的名字   需要修改的名字
linux的權限體系:除了用戶和組的概念還有rwx體系:
    # ls -l ./a
    -rw-rw-r--. 1 root root 0 Jan 29 23:48 ./a
    使用ls 查看一個文件的權限信息。
    我們簡析下
    第一列表示文件的屬性
    第二列表示硬鏈接數
    第三列和第四列是所屬用戶和組
    第五列是大小
    第六,七,八列修改時間
    第九列 文件名
    我們來看下第一列:
    -rwxr-xr-x.
    先來說下這個點的的含義:就是不使用acl的意思(沒有給他ACL設置)如果設置了.就變成+
    ACL全稱Access Control List,訪問控制列表.作用可以針對某個文件賦予單個用戶的權利。
    如果,你想讓不同組的用戶,擁有跨組的權限可以通過acl單獨對某用戶控制。
    # setfacl -m user:swa:rw- ./a
    # getfacl --omit-header ./a
    user::rw-
    user:swa:rw-
    group::r--
    mask::rw-
    other::r--
    # ls -l ./a
    -rw-rw-r--+ 1 root root 0 Jan 29 23:48 ./a

    -rw-rw-r-- 解讀
    r  表示 讀權限   w 表示寫的權限   - 表示沒有權限  此外還有 x 表示執行權限
    還有一種數字話的表示方式: 4 代表讀權限  2 代表寫權限  1 代表執行權限 0 代表沒有權限。
    第一個-代表文件類型。常見的- 文件 d 目錄 l 鏈接 b 塊設備文件 c 字符設備文件 s 套接口文件
    rw- 是屬主的權限也是第一個root(屬主)的權限。
    -rw 是屬組的權限也是第二個root(屬組)的權限。
    r--  表示除了屬組和屬組以外的任何用戶。
    由此而生的命令:chown 改變屬組或屬主  chmod 改變文件的權限
    chown只有文件主和超級用戶纔可以便用該命令
        -R  改變目錄下的所有文件的屬主或屬組(是個遞歸操作。對目錄使用)
    chown  -R 主名稱:組名稱
    由於讀寫執行權限又2種解讀方法所以chmod 也又2中寫法:
        chmod  a=rwx,g=rw-,0=r-x  abc(a屬主,g 屬組,o 其它用戶)
        想對應的數字爲:chmod  765 abc
此外,還有些特殊權限:SUID、SGID、SBIT
    SUID:當用戶執行具有x權限的二進制文件時擁有此文件所有者的權限
    SGID:當用戶執行具有x權限的二進制文件時擁有此文件所在組的權限,另外也可以對目錄設置此權限
    SBIT:當用戶對某個目錄具有w和x權限時,在該目錄下建立的文件和目錄只有該用戶和root用戶纔可以刪除
    # ls -ld /tmp
    drwxrwxrwt. 6 root root 4096 Jan 29 22:56 /tmp  
    這個目錄就有 SBIT權限
    下面通過數字來設置下 SUID 和 SGID 的權限
    # chmod 4664 a
    # ls -l a
    -rwSrw-r--+ 1 root root 0 Jan 29 23:48 a

    # chmod 2664 a
    # ls -l a
    -rw-rwSr--+ 1 root root 0 Jan 29 23:48 a
    SUID 對應4 (對應在x位上的S) SGID 對應 2(對應在x位上的S)   SBIT 對應 1(對應在x位上的t)
    在原有 3位權限的基礎上再加上一位。即可添加這些特殊權限了。

    屬性
    名稱大小:文件名、 大小,這兩個最好理解了就是文件名字和佔用空間大小
    所屬屬性:擁有者、擁有組,如1中所述
    時間屬性:mtime、ctime、atime
    mtime:最近一次文件內容變化時間,是具體內容變化,不是屬性、權限變化,ls顯示的結果就是mtime
    ctime:最近一次文件狀態變化時間,這裏就是屬性、權限那些變化時的時間
    atime:最近一次讀取文件時間,如用cat去讀取文件的時候

還可以通過設置文件屬性來保護文件不被修改。
    chattr 命令:改變文件屬性。
        + <屬性>:開啓文件或目錄的該項屬性
        - <屬性>:關閉文件或目錄的該項屬性
        = <屬性>:指定文件或目錄的該項屬性
    i :不能對文件修改
    # chattr +i /etc/passwd
    此時你可以vim進入嘗試修改。大都會提醒文件只讀。
    如何查看文件是否設置了特殊屬性呢? lsattr
    # lsattr /etc/passwd
    ----i--------e- /etc/passwd
    如果想修改回來?
    # chattr -i /etc/passwd
    # lsattr /etc/passwd
    -------------e- /etc/passwd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章