Linux-用戶、組和權限

Red-Hat-Logo-2013

本章內容

解釋Linux的安全模型

解釋用戶帳號和組群帳號的目的

用戶和組管理命令

理解并設置文件權限

默認權限

特殊權限

ACL

 

安全3A

資源分派:

Authentication:認證

Authorization:授權

Accouting|Audition:審計

 

用戶user

令牌token,identity

Linux用戶:Username/UID

管理員:root, 0

普通用戶:1-65535

系統用戶:1-499, 1-999 (CentOS7)

對守護進程獲取資源進行權限分配

登錄用戶:500+, 1000+(CentOS7)

交互式登錄

 

用戶一登錄,系統就會發一個令牌token,

 

Linux中建一個帳號,會自動建一個同名的組,稱為私有組

 

組group

Linux組:Groupname/GID

管理員組:root, 0

普通組:

系統組:1-499, 1-999(CENTOS7)

普通組:500+, 1000+(CENTOS7)

 

組的類別

Linux組的類別

用戶的主要組(primary group)

用戶必須屬于一個且只有一個主組

組名同用戶名,且僅包含一個用戶,私有組

用戶的附加組(supplementary group)

一個用戶可以屬于零個或多個輔助組

 

qjy g1 read g2 wrie g3 read 累加權限 read write

qjy,mage g1

 

 

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

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

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

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

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

 

pwunconv???? 將口令從/etc/shadow轉換回/etc/passwd里顯示,不太安全,因誰都能看

 

修改passwd文件,可更改用戶的UID,把root的UID改成1000,qjy改成0,則qjy是#,root是$

 

第1項:login name:登錄用名(qjy)

第2項:passwd:密碼(X)

第3項:UID:用戶身份編號(1000)

第4項:GID:登錄默認所在組編號(1000)

第5項:GECOS:用戶全名或注釋

例如qjy用戶,chfn qjy可修改

finger qjy能看得更直觀一些

第6項:home directory:用戶主目錄(/home/qjy)

若修改后家目錄不存在,則登錄后會自動進入/目錄

但用戶的家目錄里有一些配置文件,修改后需拷到新目錄里

新建帳號的時候,系統會自動從ls /etc/skel -a目錄復制新配置文件到家目錄

cp -r /etc/skel/.[^.]* /data/qjy/

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

默認shell可通過chsh -s /bin/csh qjy來修改

cat /etc/shells

注意有一個shell叫/sbin/nologin,可使一個帳號無法登陸、切換,很多服務都用的是/sbin/nologin,以防黑客利用,在創建帳號的時候即可直接指定

 

/etc/shadow

record:行? field:列

RHEL 5:$1指md5

Centos6和7:$6 sha512

$6$ Qb/LXy1YnfBRf59T:第二個$號是鹽salt

加密算法可以自己指定

 

shadow文件格式

登錄用名

用戶密碼:一般用sha512加密

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

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

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

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

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

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

雙(單)!是鎖定的意思

加鎖和解鎖命令

usermod -L qjy??? 加鎖

usermod -U qjy?? 解鎖,解一個!,CentOS 6之后就不允許解鎖后空口令了,必需要加一個密碼

passwd -e qjy????? 使qjy帳號的密碼立即過期,需立即改口令

chage -d 0 qjy???? 同樣效果

chage -l qjy? 查看用戶的密碼情況

chage qjy???????????? 更改用戶密碼各有效期

 

cat /etc/login.defs

更改密碼的各默認有效期,郵件目錄,UID、GID的起止數(500/1000,60000),默認的加密算法等

 

cat /etc/default/useradd? 可修改創建帳號時的默認參數

 

Windows:net accounts命令

 

密碼加密

加密機制:

加密:明文–> 密文

解密:密文–> 明文

單向加密:哈希算法,原文不同,密文必不同

相同算法定長輸出,獲得密文不可逆推出原始數據

雪崩效應:初始條件的微小改變,引起結果的巨大改變

md5: message digest, 128bits

sha1: secure hash algorithm, 160bits

sha224: 224bits

sha256: 256bits

sha384: 384bits

sha512: 512bits

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

實際改的是這個文件:/etc/login.defs

 

密碼的復雜性策略

openssl rand -base64 12 輸出12位隨機字符,可用隨機字符做密碼

 

useradd -N qjy???? 創建新帳號默認屬于users組(GID=100)

 

cat /etc/group

group文件格式

組名:就是群組名稱

組口令:用戶可以自己把自己加入某個組里,前提是知道組的密碼

組GID:就是群組的 ID

組成員:以當前組為附加組的用戶列表(分隔符為逗號)

 

/etc/gshdow文件格式

群組名稱:就是群組名稱

群組密碼:

組管理員列表:組管理員的列表,更改組密碼和成員

以當前組為附加組的用戶列表 (分隔符為逗號),gshadow和group的附加組用戶列表應一致

 

給組加口令:gpasswd

newgrp 臨時改變用戶主組

 

vipw?????? 相當于vi /etc/passwd,有語法檢查功能

vigr??????? 相當于vi /etc/group,有語法檢查功能

pwck????? 對/etc/passwd進行語法檢查

grpck???? 對/etc/group進行語法檢查

 

getent passwd|shadow|group|gshadow [qjy]??? 快捷查看這幾個文件(里的某用戶)的信息

 

用戶和組管理命令

用戶管理命令

useradd

usermod

userdel

組帳號維護命令

groupadd

groupmod

groupdel

 

用戶創建:useradd

useradd [options] LOGIN

-u UID

-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

-m 創建家目錄,用于系統用戶

-M 不創建家目錄,用于非系統用戶

 

useradd -s /sbin/nologin -r -m openstack

 

以下命令查看了httpd服務的rpm安裝包中的腳本,生產中手工創建用戶基本也是這么寫的

[root@centos7 Packages]#rpm -qp –scripts /run/media/root/CentOS\ 7\ x86_64/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm

……

/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :

/usr/sbin/useradd -c “Apache” -u 48 -g apache \

-s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || :

……

 

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

顯示或更改默認設置:

useradd -D

useradd -D -s SHELL

useradd -D -b BASE_DIR

useradd -D -g GROUP

 

 

新建用戶的相關文件和命令

/etc/default/useradd

/etc/skel/*

/etc/login.defs

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

chpasswd 批量修改用戶口令

pass.txt

app1 redhat

app2:centos

app3:centos

 

useradd usermod userdel

-u

-r

-s

-d

-c

-g

-G

 

 

 

切換用戶的方式:

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

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

root su至其他用戶無須密碼;非root用戶切換時需要密碼

換個身份執行命令:

su [-] UserName -c ‘COMMAND’

選項:-l –login

su -l UserName 相當于 su – UserName

 

設置密碼

passwd [OPTIONS] UserName: 修改指定用戶的密碼

常用選項:

-d:刪除指定用戶密碼

-l:鎖定指定用戶

-u:解鎖指定用戶

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

-f:強制操作

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

-x maxdays:最大使用期限

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

-i inactivedays:非活動期限

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

echo “PASSWORD” | passwd –stdin USERNAME

 

創建組

groupadd [OPTION]… group_name

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

-r: 創建系統組

CentOS 6: ID<500

CentOS 7: ID<1000

 

創建GID和UID相同的用戶:

groupadd -g 1234 nginx

useradd -g nginx -u 1234 nginx

 

修改和刪除組

組屬性修改: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]… 查看用戶所屬組列表

 

[root@centos7 ~]#groupmems -l -g webs

varnish? nginx? qjy

[root@centos7 ~]#groupmems -g webs -a root

[root@centos7 ~]#groupmems -g webs -l

nginx? qjy? varnish? root

 

文件權限

1、對普通用戶來說,讀寫執行權限是嚴格的

2、普通用戶不能修改文件的所有者

3、普通用戶要修改文件的所屬組,一是文件要是他的,二是他要在改后的那個組里

 

修改文件的屬主和屬組

修改文件的屬主:chown

chown [OPTION]… [OWNER][:[GROUP]] FILE…

用法:

OWNER

OWNER:GROUP

:GROUP

命令中的冒號可用.替換

-R: 遞歸

chown [OPTION]… –reference=RFILE FILE…

修改文件的屬組:chgrp

chgrp [OPTION]… GROUP FILE…

chgrp [OPTION]… –reference=RFILE FILE…

-R 遞歸

 

文件權限

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

owner: 屬主, u

group: 屬組, g

other: 其他, o

每個文件針對每類訪問者都定義了三種權限

r: Readable

w: Writable

x: eXcutable

 

文件:

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

w: 可修改其內容

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

目錄:

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

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

x: 可以cd進入此目錄,查看此目錄中文件的詳細屬性,也可以訪問此目錄中的文件

X: 只給目錄x權限,不給文件x權限

 

chomod change mode

chmod

方法1:mode法

chmod who opt per file

who:u g o a(all)

opt:+ – =

per:r w x X

 

chomod u+x,g-w,o=? file

 

刪除文件的權限,并不是由文件決定的,而是由目錄的權限決定的,目錄有w權限才能刪、新建

 

對讀寫權限來說,root帳戶是不受控制的,但執行權限對root帳戶有效

 

二進制的讀權限不是必須的,沒有讀權限也能執行,但用file命令無法判斷文件的類型了

 

對目錄來講,如果沒有讀權限,意味著不能查看目錄的文件列表

 

對目錄來講,如果沒有執行權限,意味著不能進到目錄里,不能查看目錄里文件的詳細屬性,也不能訪問目錄里的文件

 

所以對目錄來說,讀和執行是基本權限

 

權限的生效順序,是按所有者->所屬組->其他人來順序生效,一個生效了的話,后邊的就不看了,即使后邊的權限更大

 

vfat(fat32)是不支持這種讀寫執行權限的

 

chmod –reference=f1 f2 f3???? 參考f1來設置f2和f3的讀寫執行權限

 

方法2:數字法

 

rwx rw- r–

111 110 100

chmod 764 file

 

r:4

w:2

x:1

 

— 000 0

–x 001 1

-w- 010 2

-wx 011 3

r– 100 4

r-x 101 5

rw- 110 6

rwx 111 7

 

file:6rw,4r,0,1x

dir:7rwx,5r-x,0

 

chmod -R a+x dir1???? -R??? 遞歸

chmod -R +X dir1????????????? +X?? 針對目錄加執行權限,如果是已經有執行權限的文件也會加,沒有執行權限的文件不會加

 

目錄里的文件要執行,需要目錄至少有執行權限

 

危險命令:

chmod -R 777 qjy /*

chown -R qjy data /*

帶-R的都很危險!

 

生產中做操作一般都要先在測試環境試做!

 

umask

type umask 內部命令

umask+default=666/777

對文件,使用666計算,對文件夾,使用777計算

對文件,如果所得結果某位存在執行(奇數)權限,則將其權限+1

umask 026??? 可直接修改umask值

umask mask:掩碼

功能:取消對應的權限

666

125 umask

6? 6? 6

110110110

001010101 為1的取消

110100010

6? 4? 2

 

對于目錄

default權限=777-umask

對于文件

default權限=666-umask:對結果觀察,如有奇數位+1,偶數不變

 

改umask也只是改內存,要想存住的話,可加到.bashrc里

umask -p >> bashrc

 

root的umask默認為022

普通帳號的umask默認為002

 

默認umask實際存在/etc/bashrc里,但不建議改

 

SUID,SGID,Sticky

suid :繼承二進制程序所有者的權限

普通用戶能用passwd命令修改密碼,而/etc/passwd的權限是這樣的

[qjy@centos7 ~]$ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jun 10? 2014 /usr/bin/passwd

chmod u+s file

chmod 4755 file

suid權限也很危險,只適合于應用在二進制的可執行程序上

 

sgid:

1)繼承二進制程序所有組的權限

2)作用于目錄,此目錄新建的文件繼承目錄的所屬組

chmod g+s file

chmod 2755 file

 

suid4 sgid2 sticky1

sticky又稱粘滯位

sticky:作用于目錄,此目錄的文件只能被所有者刪除

chmod o+t dir1

chmod 1777 dir1

 

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:

1)繼承二進制程序所有組的權限

2)作用于目錄,此目錄新建的文件繼承目錄的所屬組 -> 用得多點

sticky:作用于目錄,此目錄的文件只能被所有者刪除 -> 用得多點

 

root權限太大,為防止root誤操作,可設定文件特定屬性

設定文件特定屬性

chattr +i 不能刪除,改名,更改

chattr +a 只能追加內容

lsattr 顯示特定屬性

chattr +A 鎖定文件的讀時間

 

訪問控制列表

ACL:Access Control List,實現靈活的權限管理

除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限

CentOS7 默認創建的xfs和ext4文件系統具有ACL功能

CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

ACL生效順序:所有者,自定義用戶,自定義組,其他人acl?? 看自定義組的情況下可并列生效

 

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

  • mount -o acl /directory
  • getfacl file |directory
  • setfacl -m u:qjy:rwx file|directory
  • setfacl -Rm g:sales:rwX directory -R遞歸
  • setfacl -M file.acl file|directory -M是引用file.acl文件,可手寫file.acl權限表
  • setfacl -m g:salesgroup:rw file| directory
  • setfacl -m d:u:qjy:rx directory d:默認acl權限
  • setfacl -x u:qjy file |directory
  • setfacl -X file.acl directory -X是引用file.acl文件,可一次刪多個文件

 

ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限

getfacl 可看到特殊權限:flags

通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限

base ACL 不能刪除

setfacl -k dir 刪除默認ACL權限

setfacl –b file1清除所有ACL權限

getfacl file1 | setfacl –set-file=- file2 復制file1的acl權限給file2

 

mask只影響除所有者和other的之外的人和組的最大權限

Mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)

用戶或組的設置必須存在于mask權限設定范圍內才會生效 setfacl -m mask::rx file

–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以

示例:

setfacl –set u::rw,u:qjy:rw,g::r,o::- file1

 

備份和恢復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

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95002

(1)
qjyqjy
上一篇 2018-04-05
下一篇 2018-04-05

相關推薦

  • 第四周課程總結

    sed高級編輯命令模式空間相當于正在處理數據的這塊空間保持空間相當于倉庫,臨時存放暫時沒有處理完的半成品的空間P(大寫):打印模式空間開端至\n內容,并追加到默認輸出之前(即只打印第一行)h: 把模式空間中的內容覆蓋至保持空間中H:把模式空間中的內容追加至保持空間中g: 從保持空間取出數據覆蓋至模式空間G:從保持空間取出內容追加至模式空間x: 把模式空間中的…

    Linux筆記 2018-04-22
  • 學習liunx 系統筆記

    服務器按應用功能可分為:web 服務器 ? 數據庫服務器 ? 文件服務器 ?中間件應用服務器 ?日子服務器 ? 監控服務器 ? 程序版本控制服務器 ?虛擬機服務器 ? ? 郵件服務器 ? 打印服務器 ? 域控制服務器 ?多媒體服務器 ?通訊服務器 ? ?ERP 服務器等! 服務器按外形可分為:塔式服務器 ? 、機架式服務器 ?、刀片式服務器。  

    Linux筆記 2018-04-01
  • linux與xshell入門

    難的不行,做標記

    2018-07-29
  • linux是隨身筆記part1

    第一周學習

    2018-06-25
  • Linux命令之date

    語法,選項,參數

    Linux筆記 2018-07-22
欧美性久久久久