用戶、組和許可權管理基礎

来源:http://www.cnblogs.com/qige2017/archive/2017/07/30/7259769.html
-Advertisement-
Play Games

用戶、組和許可權管理基礎 前言: 開始系統的學習linux已經有三周時間,最近學習了用戶、組和許可權管理的相關基礎知識。我所學的大綱將這三部分內容划到一個章節來學習,因為剛開始學linux所以接觸到的都是一些基礎性的東西。可是雖說是基礎知識,但是這三部分和在一起講內容還是蠻多的,老師上課用的PPT就有洋 ...


用戶、組和許可權管理基礎

前言:

開始系統的學習linux已經有三周時間,最近學習了用戶、組和許可權管理的相關基礎知識。我所學的大綱將這三部分內容划到一個章節來學習,因為剛開始學linux所以接觸到的都是一些基礎性的東西。可是雖說是基礎知識,但是這三部分和在一起講內容還是蠻多的,老師上課用的PPT就有洋洋灑灑接近六十頁,對於初學者來說一時間接收這麼多知識還是有點難以消化的。聽了老師的課以後,課下我又對這部分內容歸納整理了一下,發現這部分內容雖然多但是很多知識都是成塊的,只要合理的去總結歸納其實學起來比不難。
我把這部分內容主要歸納成以下幾個模塊:

  1. 相關定義
  2. 配置文件模塊:初步學慣用戶和組的相關知識,其實主要就是學慣用戶和用戶組相關的配置文件,瞭解掌握了這些配置文件內容和作用基本上也就掌握了用戶和用戶組的知識。
  3. 命令模塊:管理許可權要用命令來下達,關於許可權管理的主要命令我總結了14個,掌握了這些命令,許可權管理對你來說就會比較容易理解了。
  4. 許可權管理
  5. 預設許可權
  6. 特殊許可權
  7. ACL
    這樣將知識拆開歸納學習就會讓學習輕鬆很多,接下來就開看看我是怎麼歸納的吧!

    一、相關定義

    安全3A:linux的安全模型:

    Authentication:確認當前用戶身份(通過用戶名配合密碼)
    Authozation:授予許可權
    Accouting|Audition:審計,記錄監控

    用戶:

    管理員:root , UID =0
    普通用戶的UID=1-65535
    系統用戶:1-499,1-999(CENTOS7)
    登錄用戶:500+,1000+(CENTOS7)

    建立用戶的意義在於便於分配許可權。
  • 管理員組:root,GID=0
  • 普通組:
    系統組:1-499,1-999(CENTOS7)
    普通組:500+,1000+(CENTOS7)

    二、配置文件

    關於用戶的配置文件:

    1./etc/passwd:

    用戶及屬性信息(名稱、UID、主的ID)
    username: x :uid:gid:comment : homedir:shell
    用戶名:密碼X:UID:GID :用戶全名或註釋:用戶家目錄(/home/wang):預設shell(/bin/bash)

    2./etc/shadow:

    用戶密碼及相關屬性
    username :password : passwordtime: min : warning : incative: account
  • 用戶名
  • 用戶密碼:一般用sha512加密
  • 從1970年一月一日起到密碼最近一次被更改的時間
  • 密碼再過幾天可以被更改(0表示隨時可更改)
  • 密碼有效期
  • 密碼過期提示時間
  • 密碼過期幾天後會被鎖定
  • 用戶有效期

    3./etc/default/useradd

    [root@CentOS7 ~]#cat /etc/default/useradd 
    # useradd defaults file  創建新用戶預設配置文件
    GROUP=100   
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes

    關於組的配置文件:

    1./etc/group:

    組以及屬性信息
    組名:組口令:GID:以當前組為附加組的用戶列表

    2./etc/gshadow:

    組名:組口令:組管理員列表:以當前組為附加組的用戶列表

    3./etc/skel/*

    [root@CentOS7 ~]#ls -a /etc/skel/
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

    創建新建用戶的家目錄的模版文件夾(新建用戶的家目錄里的文件是從這個文件夾中複製過來)
    其中沒有可見文件,全是隱藏文件
    恢復用戶家目錄原始文件:
    手工創建家目錄文件夾 cp -r /etc/skl/.[ ^.]* /home/test1
    自動生成家目錄文件夾 cp -r /etc/skl/ /home/test1

    三、命令

    管理用戶的命令:

    1.useradd:

    創建用戶
    語法:useradd [選項] 用戶名
    -u: 指定UID在 /etc/login.defs文件中,加 -o 不檢查重覆id
    -g :設定主組(指定的主組必須存在),預設創建並加入一個與用戶名相同的組,同時指明GID
    -c :描述用戶的註釋信息
    -d :以指定的路徑(不存在的目錄)為家目錄
    -s :制定用戶預設shell類型
    -G :指明用戶的附加組,組必須事先存在
    -N :不創建預設主組,以users作為該用戶主組
    -r : 創建系統用戶
    -D :顯示或更改預設設置, 也就是這個文件下的信息/etc/default/useradd 創建新用戶時的預設項目文件
    -D -s :更改預設shell類型
    -D -b:BASE_DIR
    -D -g:GROUP

    2.usermod

    修改用戶屬性
    語法:usermod [OPTION] login
    -u : 新的UID
    -g:新基本組
    -G:新的附加組,原來的附加組將會被覆蓋;若保留原有附加組,則要同時使用-a選項,表示append添加。
    -s:新的預設SHELL類型
    -c:新的註釋信息
    -d:新的家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;若要創建新的家目錄並移動原家數據同時使用-m選項
    -l:新的名字
    -L:鎖定指定用戶,在/etc/shadow密碼欄加!
    -U:解鎖指定用戶,將/etc/shadow密碼欄的!拿掉
    -e yyyy-MM-DD:指明用戶帳號過期時間
    -f:INACTICE設定非活動期限

    3. userdel

    刪除用戶
    語法:userdel [OPTION] login
    -r:刪除用戶家目錄

    4.id

    查看用戶相關的ID信息
    -u:顯示UID
    -g:顯示GID
    -G:顯示用戶所屬組的ID
    -n:顯示名稱需配合ugG使用

    5.su

    切換用戶
    語法: su UserName:不完全切換,不讀取目標用戶的配置文件,不改變當前用戶工作目錄
    ​ su - UserName:完全切換,讀取用戶的配置文件,切換至家目錄
    換個用戶執行命令:su [-] UserName -c 'COMMAND'

    6.passwd

    語法:passwd [OPTIONS] UserName 修改指定用戶密碼,僅root用戶許可權
    passwd:修改自己的密碼
    -l:鎖定指定用戶
    -u:解鎖指定用戶
    -e:強制用戶下次登錄修改密碼
    -n:mindays 指定最短使用期限
    -x:maxdays指定最大使用期限
    -w:warndays提前多少天開始警告
    -i:inactivedays非活動期限
    --stdin:從標準輸入接受用戶密碼

    [root@CentOS7 ~]#echo '199310' |passwd --stdin gentoo
    Changing password for user gentoo.
    passwd: all authentication tokens updated successfully.

    7.chage:

    修改用戶密碼策略
    語法:chage [OPTION] LOGIN

    [root@CentOS7 ~]#chage gentoo
    Changing the aging information for gentoo
    Enter the new value, or press ENTER for the default
    Minimum Password Age [0]: 
    Maximum Password Age [99999]: 
    Last Password Change (YYYY-MM-DD) [2017-07-24]: 
    Password Expiration Warning [7]: 
    Password Inactive [-1]: 
    Account Expiration Date (YYYY-MM-DD) [-1]: 

    管理組的命令:

    8.groupadd

    創建組
    語法:groupadd [OPTION] GROUPNAME
    -g :GID指明GID號
    -r:創建系統組

    9.groupmod

    groupmod [OPTION] group
    -n:新名字
    -g:新GID

    10.groupdel

    跟組名,刪除組

    11.gpasswd

    gpasswd [OPTIN] GROUP
    -a user :將user添加至指定組中
    -d user:從制定組中移除用戶user
    -A user1,user2,...:設置有管理許可權的用戶列表

    12.newgrp

    臨時切換主組
    切換主組以後新建立的文件的所屬組改變

    13.groupmems

    更改和查看組成員
    語法:groupmems [OPTION]或[action]
    options:
    -g groupname :預設是當前用戶的所屬組,-g更改為指定組

    [root@CentOS7 ~]#groupmems -l -g admins
    harry  natasha 

    Actions:
    -a :指定用戶加入組
    -d:從組中刪除用戶
    -p:從組中清除所有成員
    -l:顯示組成員列表

    14.groups

    跟用戶名,查看用戶所屬組列表

    批量創建用戶:

    newuser.txt 格式和/etc/passwd相同

    批量修改口令:

    cat pass.txt | chpasswd pass.txt格式是username : password

    四、許可權管理

    文件許可權:

  1. r 讀許可權:查看內容 文件類型
  2. w 寫許可權:可以修改文件內容,寫文件與刪除文件沒關係
    刪除文件既是對該目錄的修改。
    目錄中的文件能不能刪除,與目錄中的文件許可權無關,與目錄的許可權有關.
  3. x 執行許可權:是否可以運行,對root也有限效。
  4. X執行許可權:+X若是目錄那麼既+x許可權,若文件原本有人有x許可權那麼+x許可權若沒人有x許可權則不+任何許可權

    目錄許可權:

    r讀許可權:可以ls查看目錄內的文件列表
    w寫許可權:可以創建或者刪除目中的文件,但是要有x許可權
    x執行許可權:可以cd進入目錄,可以看ls -l目錄內文件元數據

    chown:

    修改文件的所屬主
    語法:chown [option]...[OWNER] 或:[group] FILE
    OPTION : -R 遞歸
    OWNER
    OWNER:GROUP 改變文件的所有者和所屬組
    :GROUP
    命令中的冒號可以用.代替
    chown username file

    chgrp

    修改文件的所屬組
    語法: chgrp [OPTION] groupname file
    選項:-R 遞歸

    chomd :

    修改文件的許可權
    用法:
  5. 模式法:chmod+ who+ opt+per+file
    chmod 命令
    who對誰操作: u g o a=all
    opt 什麼操作: + - =
    per許可權:r w x
    ```shell
    [root@CentOS7 ~]#ll
    -rw-r--r--. 1 root root 0 Jul 24 16:23 f1
    [root@CentOS7 ~]#chmod o+w f1
    [root@CentOS7 ~]#ll
    -rw-r--rw-. 1 root root 0 Jul 24 16:23 f1

[root@CentOS7 ~]#ll f1
-rw-r--rw-. 1 root root 0 Jul 24 16:23 f1
[root@CentOS7 ~]#chmod u=rw,g=r,o= f1
[root@CentOS7 ~]#ll f1
-rw-r-----. 1 root root 0 Jul 24 16:23 f1
用cp命令複製若覆蓋了源文件那麼只覆蓋文件內容,保留文件的元屬性 chmod --reference=RFILE FILE 參考RFILE文件的許可權,將FILE修改為RFILE的許可權模式shell
[root@CentOS7 ~]#ll f1
-rw-r-----. 1 root root 0 Jul 24 16:23 f1
[root@CentOS7 ~]#chmod --reference=/etc/shadow f1
[root@CentOS7 ~]#ll /etc/shadow
----------. 1 root root 1748 Jul 25 10:54 /etc/shadow
[root@CentOS7 ~]#ll f1
----------. 1 root root 0 Jul 24 16:23 f1
2. 數字法: chmod 數字 filenameshell
[root@CentOS7 ~]#ll f1
----------. 1 root root 0 Jul 24 16:23 f1
0 0 0
[root@CentOS7 ~]#chmod 751 f1
[root@CentOS7 ~]#ll f1
-rwxr-x--x. 1 root root 0 Jul 24 16:23 f1
7 5 1
```

五、預設許可權

umask
新建文件和文件夾的預設許可權
umask:查看
umask 跟數字:設定
root的umask是002
非特權用戶的umask是022

數字演算法:

umask +文件設定許可權=666文件預設許可權/777目錄預設許可權
演算法當中對於目錄來講:不存在執行許可權不安全所以用777直接減umask就得到了目錄許可權。
對於文件來講:666-umask
觀察結果:有奇數那麼對應奇數位置各加1,偶數不變
真實作用:從對應位中將Umask指定許可權去除
文件預設許可權 666 110 110 110
umask設置許可權 057 000 101 111
新建文件許可權 110 010 000 得620

[root@CentOS7 ~]#umask
0022
[root@CentOS7 ~]#>f2
[root@CentOS7 ~]#ll f2
-rw-r--r--. 1 root root 0 Jul 25 16:02 f2
[root@CentOS7 ~]#umask 057
[root@CentOS7 ~]#umask 
0057
[root@CentOS7 ~]#>f3
[root@CentOS7 ~]#ll f3
-rw--w----. 1 root root 0 Jul 25 16:03 f3

模式法:

[root@CentOS7 ~]#umask 
0022
[root@CentOS7 ~]#umask u=rw,g=r,o=
[root@CentOS7 ~]#umask 
0137
[root@CentOS7 ~]#>f6
[root@CentOS7 ~]#ll f6
-rw-r-----. 1 root root 0 Jul 25 16:11 f6

umask -p :

輸出可被調用,/etc/bashrc是全局設置,~/.bashrc用戶設置

[root@CentOS7 ~]#umask -p
umask 0137
[root@CentOS7 ~]#umask -p >> .bashrc
[root@CentOS7 ~]#cat .bashrc
# .bashrc
...
umask 0137

umask -S 模式方式顯示:

[root@CentOS7 ~]#umask -S
u=rw,g=r,o=

六、特殊許可權

前提:進程有屬主和屬組;文件有屬主和屬組

(1) 任何一個可執行程式文件能不能啟動為進程,取決發起者 對程式文件是否擁有執行許可權

(2) 啟動為進程之後,其進程的屬主為發起者,進程的屬組為 發起者所屬的組

(3) 進程訪問文件時的許可權,取決於進程的發起者

(a) 進程的發起者,同文件的屬主:則應用文件屬主許可權

(b) 進程的發起者,屬於文件屬組;則應用文件屬組許可權

(c) 應用文件“其它”許可權

SUID 4

作用在文件所有者上
作用:作用在可執行的二進位程式上,將當前運行者身份切換成該程式所有者的身份,繼承該文件所有者對該文件所具有的許可權。
作用在目錄上,用戶進入該目錄集成該目錄所屬組所具有的許可權。

SGID 2

作用在文件所屬組上
作用在目錄上,目錄中創建的新文件將自動集成目錄的所屬組。
以上兩個許可權都只能提高許可權

STICKY 1

作用在文件other位

  • 粘滯位
  • 具有寫許可權的目錄通常用戶可以刪除該目錄的任何文件,無論文件的許可權或用友權
  • 在目錄設置Sticky,只有文件的所有者有或者root可以刪除該文件
  • sticky設置在文件上無意義
    許可權設定:
    chmod o+t DIR
    chmod o-t DIR

    防止誤操作:

    chattr +i 文件名 禁止該文件被刪除、更改、改名
    ​ -i 解除鎖定
    ​ +a:只能追加內容,不能更改刪減
    lsattr 文件名 顯示特定屬性

    七、ACL:特殊許可權

    linux系統中只對文件設置了三種角色所有者、所屬組和other所以指定許可權的靈活性有限。複雜環境中對於文件來說設置的角色就不止三個了。ACL就能對文件設置更多的角色從而設置複雜的許可權控制。
    ACL需要文件系統的支持,CentOS7版本之前預設手工創建的ext4文件系統無ACL功 能,需手動增加。
    CentOS7 預設創建的xfs和ext4文件系統具有ACL功能 。

    setfacl

    語法:setfacl -m u/g : user/group :許可權 文件名/目錄
    選項:
    -m:設置ACL許可權
    -Rm:遞歸設定目錄的ACL許可權
    -X:刪除指定用戶
    -b:刪除所有
    -k:刪除指定目錄的ACL許可權
    -d :default 作用於目錄新建文件預設許可權
    getfacl file1 | setfacl --set-file=- file2 複製file1 的acl許可權給file2
    ACL生效順序:所有者,自定義用戶,自定義組,其他人

    getacl

    跟文件,查看該文件的ACL相關許可權。

    mask:

    mask通俗來說就是自定義用戶或者自定義所屬組許可權的高壓線,至作用於acl自定義的用戶或者組。
    一旦設置ACL許可權,那麼文件顯示的所屬組許可權既是mask限定的許可權
    設定mask許可權限定以後,如果更改用戶的許可權 mask許可權限定會發生改變。
    備份和恢復ACL
    主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 參數。但是tar等常見的備份工具是不會保留目錄 和文件的ACL信息。
    getfacl -R /tmp/dir1 > acl.txt
    setfacl -R -b /tmp/dir1
    setfacl -R --set-file=acl.txt /tmp/dir1
    setfacl --restore acl.txt
    getfacl -R /tmp/dir1


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Jenkins安裝 為了相容生產環境的jdk1.7版本,從官網得知,Jenkins必須是1.6之前的版本,因此下載jenkins-1.596.3-1.1.noarch.rpm到本地進行安裝: #移動到rpm包所在目錄 rpm -ivh jenkins-1.596.3-1.1.noarch.rpm 安... ...
  • Flume + Solr + log4j搭建web日誌採集系統 ...
  • 一.NameNode,SeconderyNamenode,DataNode NameNode,DataNode,SeconderyNamenode都是進程,運行在節點上。 1.NameNode:hadoop的主節點, 保存HDFS的元數據信息 1.fsimage - 它是在NameNode啟動時對整 ...
  • Cinnamon和Gnome3,哪個超過MAC的完美了嗎? 沒有!但是,不論到了什麼時候,總有人會喜歡自由、開源、個性化,喜歡十全九美的!在這點上,你是不是更喜歡Cinnamon了呢?亦或是選擇Gnome3呢? ...
  • 標簽:監控/SQLServer/Windows 概述 本篇文章主要介紹如何配置zabbix藉助外部郵件進行發送郵件報警,zabbix通過配置文件調用mailx來進行郵件的發送。在Centos6以上的版本預設已經安裝了mailx。 一、配置mailx 1.查看當前系統是否已安裝mailx [root@ ...
  • 使用阿裡雲個人鏡像倉庫代理方式下載如https://gcr.io等需要翻牆的鏡像; 設置github 這裡使用github作為代碼倉庫,在github中添加了名稱為Dockerfile的項目,建名稱為kube controller manager amd64的文件夾: 然後在kube control ...
  • 一、gcc gcc是Linux上面最標準的C語言的編譯程式,用來源代碼的編譯鏈接。 gcc -c hello.c 編譯產生目標文件hello.o gcc -O hello.c 編譯產生目標文件,併進行優化 gcc -o hello hello.c 生成hello這個可執行的二進位文件 缺點:命令的冗 ...
  • sed用法: 原文鏈接:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,下麵先瞭解一下s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...