用戶 組 和權限 以及權限的 分類

關于文件的安全我們要從3A驗證 說起

    1  Authentication:認證 

    2  Authorization:授權 

    3  Accouting|Audition:審計

由于系統文件的用戶太多為了便于管理 我們便把系統的用戶 進行分類 賦予權限 合理地分配資源 所以今天介紹的是 系統用戶 用戶組 的一些權限的 分配 修改 和文件的 權限修改 和賦權 以及一些特殊權限的用法

用戶的分類

管理員:root 0 ? 

普通用戶:1-65535 

系統用戶:1-499(CENTOS6) 1-999 對守護進程獲取資源進行權限分配 

登錄用戶:500(CENTOS6)+ 1000+ 

交互式登錄

用戶組的分類 

Linux組:Groupname/GID ? 

管理員組:root 0 ? 

普通組有 系統組:1-499  1-999 和普通組:500+  1000+

linux的安全上下文

運行中的程序:進程 (process) 以進程發起者的身份運行: root: /bin/cat mage: /bin/cat 進程所能夠訪問資源的權限取決于進程的運行者的身份所以我們會針對不同的用戶 和用戶組 分配不同的權限以便更好地進行系統的運行

Linux用戶和組的類別

用戶的主要組(主組): 用戶必須屬于一個且只有一個主組 組名同用戶名 且僅包含一個用戶:私有組 用戶的附加組(輔助組): 一個用戶可以屬于零個或多個輔助組

用戶和組的配置文件

Linux用戶和組的主要配置文件: 

/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等) 

/etc/group:組及其屬性信息 

/etc/shadow:用戶密碼及其相關屬性

/etc/gshadow:組密碼及其相關屬性

文件的格式

passwd 文件格式

login name:登錄用名(wang) ?

passwd:密碼 (x) ?

UID:用戶身份編號 (1000) ?

GID:登錄默認所在組編號 (1000) ?

GECOS:用戶全名或注釋 ?

home directory:用戶主目錄 (/home/wang) ?

shell:用戶默認使用shell (/bin/bash)

passwd 和gpasswd的用法

passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅 root用戶權限 ?

passwd: 修改自己的密碼; ? 常用選項: 

-l:鎖定指定用戶 

-u:解鎖指定用戶 

-e:強制用戶下次登錄修改密碼 

-n mindays: 指定最短使用期限 

-x maxdays:最大使用期限 

-w warndays:提前多少天開始警告 

-i inactivedays:非活動期限; 

–stdin:從標準輸入接收用戶密碼; 

echo "PASSWORD" | passwd –stdin USERNAME

組密碼:gpasswd ?gpasswd [OPTION] GROUP 

-a user: 將user添加至指定組中; 

-d user: 從指定組中移除用戶user 

-A user1,user2,…: 設置有管理權限的用戶列表 ?

newgrp命令:臨時切換基本組; 如果用戶本不屬于此組,則需要組密碼

密碼的加密機制

加密:明文–> 密文 解密:密文–> 明文 ? 

單向加密:哈希算法,原文不同,密文必不同 相同算法定長輸出,獲得密文不可逆推出原始數據 雪崩效應:初始條件的微小改變,引起結果的巨大改變 

   md5: message digest, 128bits 

    sha1: secure hash algorithm, 160bits 

    sha224: 224bits s

    ha256: 256bits 

    sha384: 384bits 

    sha512: 512bits ? 

    更改加密算法 authconfig –passalgo=sha256 –update

shadow文件格式 

登錄用名 ?

用戶密碼:一般用sha512加密 ?

從1970年1月1日起到密碼最近一次被更改的時間 ?

密碼再過幾天可以被變更(0表示隨時可被變更) ?

密碼再過幾天必須被變更(99999表示永不過期) ?

密碼過期前幾天系統提醒用戶(默認為一周) ?

密碼過期幾天后帳號會被鎖定 ?

從1970年1月1日算起,多少天后帳號失效

group文件格式

群組名稱:就是群組名稱 ? 

群組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow ?

GID:就是群組的 ID ? 以當前組為附加組的用戶列表(分隔符為逗號)

gshdow文件格式

群組名稱:就是群組名稱 ? 群組密碼: ? 組管理員列表:組管理員的列表,更改組密碼和成員 ? 以當前組為附加組的用戶列表:(分隔符為逗號)

用戶和組管理命令以及 用戶創建 創建用戶 用戶屬性修改  和刪除用戶

第一 創建用戶 

默認值設定:/etc/default/useradd文件中 ? 

顯示或更改默認設置: useradd -D useradd –D -s SHELL

第二用戶創建

useradd [options] LOGIN 

  -u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs -o 配合-u 選項,不檢查UID的唯一性 

  -g GID:指明用戶所屬基本組,可為組名,也可以GID -c "COMMENT":用戶的注釋信息 

  -d HOME_DIR: 以指定的路徑(不存在)為家目錄 

  -s SHELL: 指明用戶的默認shell程序 可用列表在/etc/shells文件中 

  -G GROUP1[,GROUP2,…]:為用戶指明附加組,組必須事先存 在 

  -N 不創建私用組做主組,使用users組做主組 

  -r: 創建系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000

第三用戶屬性修改

 usermod [OPTION] login 

    -u UID: 新UID 

    -g GID: 新基本組 

    -G GROUP1[,GROUP2,…[,GROUPN]]]:新附加組,原來的附加 組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append; 

    -s SHELL:新的默認SHELL; 

    -c 'COMMENT':新的注釋信息; 

    -d HOME: 新家目錄不會自動創建,原家目錄中的文件不會同時移 動至新的家目錄;若要創建新家目錄并移動原家數據,同時使用-m選項 

    -l login_name: 新的名字; 

    -L: lock指定用戶,在/etc/shadow 密碼欄的增加 ! 

    -U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉

    -f INACTIVE: 設定非活動期限;

第四刪除用戶

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

接下來介紹一下如何批量創建用戶 以及修改命令口令

1 /etc/default/useradd ?

2 /etc/skel/* ?

3 /etc/login.defs ?

  newusers  passwd格式文件 批量創建用戶 ?

  chpasswd  批量修改用戶口令

當你創建完用戶時你可以查看查看用戶相關的ID信息 

id [OPTION]… [USER] 

  -u: UID 

  -g: GID 

  -G: Groups 

  -n: Name

如何切換用戶或以其他用戶身份執行命令

su [options…] [-] [user [args…]] ? 

切換用戶的方式: su UserName:

非登錄式切換,即不會讀取目標用戶的 配置文件,不改變當前工作目錄 

su – UserName:登錄式切換,會讀取目標用戶的配置 文件,切換至家目錄,

完全切換 ?root su至其他用戶無須密碼;非root用戶切換時需要密碼 ? 換個身份執行命令: 

su [-] UserName -c 'COMMAND' 

選項:-l  –login: 

su -l UserName 相當于 su – UserName

用戶組的創建修改和刪除 以及密碼的修改

第一創建組

groupadd [OPTION]… group_name 

  -g GID: 指明GID號;[GID_MIN, GID_MAX] 

  -r: 創建系統組; CentOS 6: ID<500 CentOS 7: ID<1000

第二修改和刪除組

組屬性修改:groupmod groupmod [OPTION]… group 

  -n group_name: 新名字 

  -g GID: 新的GID;

? 組刪除:groupdel groupdel GROUP

第三更改組密碼

組密碼:gpasswd ?gpasswd [OPTION] GROUP 

  -a user: 將user添加至指定組中; 

  -d user: 從指定組中移除用戶user 

  -A user1,user2,…: 設置有管理權限的用戶列表 ?

  newgrp命令:臨時切換基本組; 如果用戶本不屬于此組,則需要組密碼

如何更改和查看組成員

groupmems [options] [action] options: 

   -g, –group groupname 更改為指定組 (只有root) Actions: 

   -a, –add username      指定用戶加入組 

   -d, –delete username    從組中刪除用戶 

   -p, –purge                從組中清除所有成員 

   -l, –list                   顯示組成員列表 ?

   groups [OPTION].[USERNAME]… 查看用戶所屬組列表

文件的 三類用戶權限 和三種特殊權限 以及 ACL:Access Control List,實現靈活的權限管理 

文件的權限主要針對三類對象進行定義: 

owner: 屬主, u group: 屬組, g other: 其他, o ? 

每個文件針對每類訪問者都定義了三種權限: r: Readable w: Writable x: eXcutable

文件: 

r: 可使用文件查看類工具獲取其內容 

w: 可修改其內容 

x: 可以把此文件提請內核啟動為一個進程 ? 

目錄: 

r: 可以使用ls查看此目錄中文件列表 

w: 可在此目錄中創建文件,也可刪除此目錄中的文件 

x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此 

目錄 X:只給目錄x權限,不給文件x權限【前提是子目錄中的文件 沒有執行權限】

權限的計算

— 000 0 ?

–x 001 1 ?

-w- 010 2 ?

-wx 011 3 ?

r– 100 4 ?

r-x 101 5 ?

rw- 110 6 ?

rwx 111 7 ? 

例如: 640: rw-r—-r

       wxr-xr-x: 755

修改文件權限

chmod [OPTION]… OCTAL-MODE FILE… 

-R: 遞歸修改權限 ?

chmod [OPTION]… MODE[,MODE]… FILE… MODE: 修改一類用戶的所有權限: u=  g= o= ug=  a= u=,g= 修改一類用戶某位或某些位權限 u+  u- g+ g- o+ o- a+ a- + ?

chmod [OPTION]… –reference=RFILE FILE… 參考RFILE文件的權限,將FILE的修改為同RFILE;

權限設置

chgrp  sales testfile ?

chown  root:admins  testfile ?

chmod  u+wx,g-r,o=rx file ?

chmod  -R g+rwX /testdir ?

chmod  600  file ?

chown mage testfile

三種文件系統中的特殊權限 ?SUID, SGID, Sticky  簡稱權限的繼承

SUID權限 

任何一個可執行程序文件能不能啟動為進程:取決發起者對 程序文件是否擁有執行權限 ? 啟動為進程之后,其進程的屬主為原程序文件的屬主 ?SUID只對二進制可執行程序有效 ?SUID設置在目錄上無意義 ? 權限設定: chmod u+s FILE… 

chmod u-s FILE…

SGID權限

 任何一個可執行程序文件能不能啟動為進程:取決發起者對 程序文件是否擁有執行權限 ? 啟動為進程之后,其進程的屬主為原程序文件的屬組 ? 

權限設定: chmod g+s FILE… 

           chmod g-s FILE…

目錄上的SGID權限

默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組 ? 一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此 目錄中創建的文件所屬的組為此目錄的屬組 ? 通常用于創建一個協作目錄 ? 

權限設定: chmod g+s DIR… 

           chmod g-s DIR…

Sticky 位 

具有寫權限的目錄通常用戶可以刪除該目錄中的任何 文件,無論該文件的權限或擁有權 ?在目錄設置Sticky 位,只有文件的所有者或root可 以刪除該文件 ?sticky 設置在文件上無意義 ?

權限設定: chmod o+t DIR… 

           chmod o-t DIR… ?

例如: ? ls -ld /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

特殊權限數字法

SUID SGID STICKY 

000 0 

001 1 

010 2 

011 3 

100 4 

101 5 

110 6 

111 7 ?

chmod 4777 /tmp/a.txt

通過此公式可算出特殊權限的值

因為上面所見到的權限具有局限性 只能服務于三類用戶所以就有了后來的ACL權限設置法如下

ACL:Access Control List,實現靈活的權限管理 ? 除了文件的所有者,所屬組和其它人,可以對更多的用戶設 置權限 ?CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。 ?CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL 功能。需手動增加: tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1  /mnt ?ACL生效順序:所有者,自定義用戶,自定義組,其他人

以及為多用戶或者組的文件和目錄賦予訪問權限rwx 

 mount -o acl /directory 

 getfacl  file |directory 

 setfacl  -m  u:wang:rwx file|directory 

 setfacl  -Rm g:sales:rwX directory 

 setfacl  -M  file.acl file|directory 

 setfacl  -m  g:salesgroup:rw file| directory 

 setfacl  -m  d:u:wang:rx  directory 

 setfacl  -x  u:wang  file |directory 

 setfacl  -X file.acl  directory

課后作業

在/data/testdir里創建的新文件自動屬于yun1組,組yun2的成員如:alice能對這些新文件有讀寫權限,組yun3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于yun1,yun2,yun3)不能訪問這個文件夾。

[root@localhost ~]# groupadd yun1

[root@localhost ~]# groupadd yun2

[root@localhost ~]# groupadd yun3

[root@localhost ~]# mkdir -p /data/testdir

[root@localhost ~]# chown -R :yun1 /data/testdir

[root@localhost ~]# ll -d /data/testdir

[root@localhost ~]# chmod 770 /data/testdir

[root@localhost ~]# ll -d /data/testdir

[root@localhost ~]# useradd -G yun2 alice

[root@localhost ~]# useradd -G yun3 tom

[root@localhost ~]# setfacl -m g:yun2:rw /data/testdir

[root@localhost ~]# setfacl -m g:yun3:r /data/testdir

[root@localhost ~]# getfacl /data/testdir

[root@localhost ~]# ll -d /data/testdir/

電腦演示

[root@localhost Desktop]# groupadd yun1

[root@localhost Desktop]# groupass yun2

bash: groupass: command not found

[root@localhost Desktop]# groupadd yun2

[root@localhost Desktop]# groupadd yun3

[root@localhost Desktop]# mkdir -p /data/testdir

[root@localhost Desktop]# chown -R :yun1 /data/testdir

[root@localhost Desktop]# ll -d /data/testdir

drw-r–r–. 2 root yun1 4096 Aug  3 08:41 /data/testdir

[root@localhost Desktop]# chmod u+rwX/data/testdir

chmod: missing operand after `u+rwX/data/testdir'

Try `chmod –help' for more information.

[root@localhost Desktop]# chmod 770 /data/testdir

[root@localhost Desktop]# ll -d /data/testdir

drwxrwx—. 2 root yun1 4096 Aug  3 08:41 /data/testdir

[root@localhost Desktop]# useradd -G g2 alice

useradd: group 'g2' does not exist

[root@localhost Desktop]# useradd -G yun2 alice

[root@localhost Desktop]# useradd -G yun3 tom

[root@localhost Desktop]#  setfacl -m g:yun2:rw /data/testdir

[root@localhost Desktop]# setfacl -m g:yun3:r /data/testdir

[root@localhost Desktop]# getfacl /data/testdir

getfacl: Removing leading '/' from absolute path names

# file: data/testdir

# owner: root

# group: yun1

user::rwx

group::rwx

group:yun2:rw-

group:yun3:r–

mask::rwx

other::—

[root@localhost Desktop]# ll -d /data/testdir/

drwxrwx—+ 2 root yun1 4096 Aug  3 08:41 /data/testdir/

[root@localhost Desktop]# 

創建組sales,gid 3000,passwd:centos,sales admins:dada2

將用戶dada1,dada2,dada3加入到sales輔助組

希望dada1 創建新文件 默認的所屬組為sales

dada2將用戶dada3從sales組移除

刪除sales,dada1,dada2

[root@localhost ~]# groupadd -g 3000 sales

[root@localhost ~]# gpasswd sales

[root@localhost ~]# useradd -G sales dada2

[root@localhost ~]# gpasswd -A dada2 sales

[root@localhost ~]# useradd -G sales dada1

[root@localhost ~]# useradd -G sales dada3

[root@localhost ~]# usermod -g sales dada1

[root@localhost ~]# su – dada1

[user1@localhost ~]$ touch f1.txt

[user1@localhost ~]$ ll f1.txt 

[user1@localhost ~]$ exit

[root@localhost ~]# su – dada2

[user2@localhost ~]$ gpasswd -d dada3 sales

[user2@localhost ~]$ exit

[root@localhost ~]# userdel -r dada1

[root@localhost ~]# userdel -r dada2

[root@localhost ~]# groupdel sales

電腦演示

[root@localhost Desktop]# groupadd -g 3000 sales

groupadd: group 'sales' already exists

[root@localhost Desktop]# gpasswd sales

Changing the password for group sales

New Password: 

Re-enter new password: 

[root@localhost Desktop]# useradd -G sales dada2

[root@localhost Desktop]# gpasswd -A dada2 sales

[root@localhost Desktop]# useradd -G sales dada1

[root@localhost Desktop]# useradd -G sales dada3

[root@localhost Desktop]#  usermod -g sales dada1

[root@localhost Desktop]#  su – dada1

[dada1@localhost ~]$ touch tiantain.txt

[dada1@localhost ~]$  ll tiantian.txt

ls: cannot access tiantian.txt: No such file or directory

[dada1@localhost ~]$ touch f1.txt

[dada1@localhost ~]$ ll f1.txt

-rw-r–r–. 1 dada1 sales 0 Aug  3 09:22 f1.txt

[dada1@localhost ~]$ exit

logout

[root@localhost Desktop]# su – dada2

[dada2@localhost ~]$ gpasswd -d dada3 sales

Removing user dada3 from group sales

[dada2@localhost ~]$ exit

logout

[root@localhost Desktop]# userdel -r dada1

userdel: group dada1 not removed because it is not the primary group of user dada1.

[root@localhost Desktop]# userdel -r dada2

[root@localhost Desktop]# groupdel sales

[root@localhost Desktop]# 

原創文章,作者:a1215276209,如若轉載,請注明出處:http://www.www58058.com/27726

(0)
a1215276209a1215276209
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • 搜索引擎的技術架構

    1. 搜索引擎的分類 搜索引擎按其工作方式主要可分為三種: 分別是全文搜索引擎(Full Text Search Engine) 目錄索引類搜索引擎(Search Index/Directory) 元搜索引擎(Meta Search Engine)。 ■ 全文搜索引擎  全文搜索引擎是名副其實的搜索引擎,國外具代表性的有Google、Fast/Al…

    Linux干貨 2015-11-18
  • 第一天作業

    一、計算機的組成部分         現代計算機的組成是根據馮.諾依曼體系,包括5大部件存儲器、控制器、運算器、輸入設備和輸出設備。             1.存儲器包括內部存儲器和外部存儲器;內部存儲器包括內部硬盤、內存、緩存等,外部存儲器包括移動硬盤、光…

    Linux干貨 2016-08-15
  • Bash的&&,||邏輯運算

    Bash的&&,||邏輯運算 bash里的true和false并不是我們通常所認為的0和1。 true和false是shell的內置命令,返回邏輯值。 $?是一個特殊的變量,存放有上一個程序的結束狀態。 在shell里面,把0作為程序是否成功結束的標志。 例如: $ true$ echo$?0$ false$ echo$?1 有時候,下一條命…

    Linux干貨 2016-04-11
  • DNS基礎知識

    一、DNS介紹:   1、DNS: Domain  Name Service,域名解析服務;      部署方式為分布式部署,如圖所示:        2、查詢類型:     遞歸查詢:僅發出一次請求,要求對方回復最終結果&nbs…

    Linux干貨 2015-05-18
  • 根分區伸縮實驗

    眾所周知LVM是Linux環境下對 磁盤進行管理的一種機制。用戶在安裝Linux操作系統時,難以分配合適的硬盤空間,當一個分區存放不下某個文件時,這個文件因為文件系統的限制,也不能 跨越多個分區來存放。而遇到出現某個分區耗盡時,只有使用調整分區大小的工具。隨著LVM功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方 便…

    Linux干貨 2015-05-27
  • Linux系統管理基礎

        一、Linux系統初識             1、用戶界面           &nbsp…

    Linux干貨 2015-04-14
欧美性久久久久