用戶和權限管理

用戶管理:

    創建用戶、修改用戶屬性、刪除用戶、創建組、修改組屬性、刪除組

權限管理:

    密碼管理、修改文件的屬主、修改屬組、修改文件權限

Unix-like:多用戶、多任務

1、Linux系統的多用戶

組與用戶的對應:

    一對一、一對多、多對一、多對多

wKiom1T4FK_Q8N-_AAC55qQH-YU490.jpg

特殊用戶和組:

    root/root、nobody/nogroup

用戶名:用戶ID

組:容器:映射用戶羣和訪問權限

      權限指派的容器,角色(role)

文件:屬主、屬組

    屬主:擁有者

    屬組:所屬的組

用戶的類型:

    管理員:root,0

    普通用戶:1-65535

        系統用戶:1-499

可登錄用戶:500-65535


2、用戶管理

2.1、創建用戶

useradd,adduser    創建用戶    用法:useradd USERNAME    

創建用戶的時候,系統會同時創建一個與用戶同名的組,這個組是用戶的私有組

以用戶的角度來說,組的類型:

    私有組:基本組

    額外組:

# cat /etc/passwd   
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

注:可以看到每個用戶都是使用冒號(:)隔開的7個段使用man 5 可以看到相關的說明

# export LANG=en        #爲了避免裏面出現亂碼,先把文字改爲英文
# man 5 passwd

用戶的屬性:

    account:password:UID:GID:GECOS:directory:shell

    用戶名:密碼佔位符:UID:GID:註釋信息:家目錄:默認shell

    默認法則:

        UID:已有最大UID+1

        GID:/etc/group中已有最大GID+1,如果沒有給用戶組指定基本組,且其UID相同的GID未被佔用,則GID用UID

        註釋信息:空

        家目錄:/home/USERNAME

        shell:/bin/bash

2.2在創建用戶的時定製用戶屬性

    -u UID,有效範圍0-65535 ,不能重複

    -g GID,有限範圍已有的GID

# useradd -g 1001 bcde

    -G GID,有效範圍已有的GID,可以有多個,用逗號分隔創建附屬組

    -c COMMENT:指定註釋信息

# useradd -c "cao yuan lang" gentoo
# tail -1 /etc/passwd
gentoo:x:1001:1001:cao yuan lang:/home/gentoo:/bin/bash

    -d 路徑  -d /path/to/somewhere:指定家目錄

# mkdir /tmp/chen
# useradd -d /tmp/chen/chen1 slackware
# !tai        #tail -1 /etc/passwd
slackware:x:1002:1002::/tmp/chen/chen1:/bin/bash

    -s /path/to/shell_commend:指定shell

# useradd -s /bin/bash wolf
# !tail        #tail -1 /etc/passwd
wolf:x:1003:1003::/home/wolf:/bin/dash

    -r:創建系統用戶,ID號範圍爲1-499之間的用戶;系統用戶的家目錄不會被真正創建

    -M:不爲用戶創建家目錄

    -m:強行爲用戶創建家目錄

2.3、查看用戶屬性和切換用戶

id    查看用戶屬性

    -u:顯示有效用戶uid

    -g:顯示有效用戶gid

    -un:顯示用戶名稱

    -gn:顯示用戶組名稱

# id root
uid=0(root) gid=0(root) groups=0(root)
# id -u root
0
# id -un root
root
# useradd user1
# useradd -g 500 user2
# id -un user2
user2
# id -gn user2
user1

finger:查看用戶信息

# yum install finger        #安裝finger命令 

su(switch user)切換用戶:    su USERNAME

    su -l USERNAME

    su - USERNAME

管理員su到普通用戶時,不需要密碼; 反之,則不行

2.4、修改用戶屬性

usermod:

    -u UID   改UID號

    -g GID   改基本組

    -G GID   改附加組,但 -G 很少獨立使用,經常和 -a 使用,如果不加 -a ,則會覆蓋原來的附加組,加了 -a 則保留原來的額外組(附加組),並創建新的額外組

    -c COMMENT   修改註釋信息

    -s /PATH/TO/SHELL    修改shell

    -l NEW_NAME:改用戶名的登錄名稱

    -m -d /path/to/somewhere   修改家目錄,和 -m 一起使用,不使用 -m 只修改家目錄指向,同時使用 -m 選項則把原來家目錄移動爲新的家目錄

# mkdir /tmp/user
# usermod -m -d /tmp/user/user1 wolf1  #把用戶wolf1的家目錄/home/wolf1改爲/tmp/user/user1

2.5、刪除用戶

userdel:

    userdel [options] USERNAME     只會刪除用戶,不會刪除家目錄

    -r                         加入-r選項後才能刪除用戶的家目錄

2.6、創建組

groupadd      用法:groupadd GRPNAME

    -g GID:創建組的時候爲其制定GID

    -r:創建系統組

# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:

組名:密碼佔位符:GID:以此組爲額外組的用戶列表,用戶詞用逗號分隔

2.7、修改組屬性

groupmod:修改組屬性

    -g GID

    -n NEW_NAME 

2.8、刪除組

groupdel

    groupdel GRPNAME


查看有哪些shell可用:

    /etc/shells            這裏的shell都是安全shell,所有處於這個文件中的shell都是當前系統中的安全shell

    環境變量:SHELL(保存當前用戶的shell)、PATH、HISTFILE


3、權限管理

3.1、密碼管理:

passwd:修改自己的密碼

passwd USERNAME:修改指定用戶的密碼

/etc/shadow    保存密碼的文件

密碼安全策略:

    足夠複雜:

        1、密碼長度越長越好

        2、要包含大寫字母、小寫字母、數字和特殊字符中的至少三類

        3、定期更換:不要重複使用此前用過的密碼

passwd

    -e:設定過期時間

    -n:密碼最短使用天數

    -x:最常使用天數

    -w:警告天數

    -i:非活動時長

    -l:鎖定用戶賬號

    -u:解除鎖定

# passwd wolf   修改wolf的密碼
# passwd -l wolf    鎖定wolf,使其不能登錄
# passwd -u wolf    解鎖wolf
# su - wolf
# passwd    修改wolf自己的密碼

/etc/shadow

    登錄名:加密的密碼:最近一次修改密碼的時間:密碼最短使用期限:密碼最長使用期限:密碼到期警告天數:賬號的非活動天數:賬號過期期限:預留段

    加密機制:

    $1$:加密方法

    $8位隨機數$:salt

    $:密碼

    修改密碼時間:從1970年1月1號開始至上次修改密碼時,所經過的天數

    賬號的非活動天數:賬號密碼到期後,不立即鎖定,給一定的時間給你緩衝,用戶可以登錄,但登錄後要改密碼,不然就不能訪問

加密方法:

    對稱加密:加密和解密使用同一個密鑰:3DES,AES(Advanced Encrption Standard)   密鑰管理及分發功能很差

    公鑰加密:也叫非對稱加密,私鑰/公鑰(s/p),公鑰可以從私鑰中提取得到(反之不行)   加密速度慢,但安全性高,通常用於密鑰分發:RSA,DSA

    單向加密:提取數據特徵碼,

        特性:

   1)、無論輸入是多大的數據,其輸出是定長的;

   2)、如果輸入的數據一樣,其結果一定一樣;反之,輸入數據微小改變,將引起結果的巨大改變    雪崩效應

   3)、算法:md5(message digest),SHA(Secure Hash Algorithm),SHA1

        md5:128bits

        sha1:160bits

        sha-256:256bits

        sha-512:512bits

# openssl passwd -l -salt 12345678 redhat    #自己指定salt

密鑰屬性的修改:

chage:

    -d:修改密碼的最近一次修改時間

    -m,--mindays MIN_DAYS:最短使用期限

    -M, --maxdays MAX_DAYS:最長使用期限

    -W, --warndays WARN_DAYS:警告天數

    -I, --inactive INACTIVE:非活動天數

    -E, --expiredate EXPIRE_DATE:過期時間

usermod:

    -e YYYY-MM-DD:指定賬號過期時間

    -f N:表示非活動時長      N 表示天數

gpasswd:給組設定密碼

newgrp GROUP:臨時設定指定的組爲自己的基本組,使用exit退出

3.2、修改文件屬主和屬組

chown [選項] 用戶 文件     修改屬主

chgrp [選項] 組 文件       修改屬組

chown 用戶:組 文件         修改屬主和屬組

chown 用戶.組 文件         修改屬主和屬組

3.3、修改文件權限

文件系統安全模型:

屬主 屬組 其它

u,  g,  o

---:000 --> 0

--x:001 --> 1

-w-:010 --> 2

-wx:011 --> 3

r--:100 --> 4

r-x:101 --> 5

rw-:110 --> 6

rwx:111 --> 7

3位二進制對應一個8進制

4位二進制對應一位16進制

    0,9,A,B,C,D,E,F

    F:1111

    9:1001

640:rw-r-----

755:rwxr-xr-x

750:rwxr-x---

700:rwx------

600:rw-------

644:rw-r--r--

chmod:change mode    改變文件權限(mode):

chmod [選項] 權限 文件

    -R:遞歸修改權限

    --refernce=/path/to/somefile FILE

# chmod --reference=/etc first.sh       #把first.sh的權限改成etc的權限

權限定義方式:

    1)、同時修改三類用戶的權限:8進制數字方式          

# chmod 444 first.sh  將三類用戶改爲只讀

    2)、修改某一類或某些類用戶的權限:u,g,o,a

    u=rw

    u= ,g= 

    ug=

# chmod u=rw[-] first.sh        #使主有讀、寫權限,
# chmod g=r,o=--- first.sh      #使組有讀權限,其它用戶沒有權限

    3)、只修改某類用戶的某位或某些爲權限:u,g,o,a

    +/-

    u+w

    [a]+x

    [a]-x

    g-rw

# chmod g+x first.sh        #使組有執行權限

3.4、文件特殊權限

特殊權限、ACL、定時任務

安全上下文:

cat --> /bin/cat

openstack:/bin/cat /etc/fstab

/etc/shadow

openstack,passwd,/etc/shadow

s:suid,set uid,屬主有s權限,意味着任何用戶在執行此程序時,其進程的屬主不再是發起者本人,而是這個程序文件的屬主

    s:屬主有執行權限

    S:屬主無執行權限

chmod u+s /path/to/somefile

chmod u-s /path/to/somefile

chmod 4644 /path/to/somefile

s:sgid,set gid,屬組有s權限,意味着執行此程序時,其進程的屬組不在是運行者本人所屬的基本組,而是此程序文件的屬組

chmod g+s /path/to/somefile

chmod g-s /path/to/somefile 

t:sticky,粘貼位,附加在other的權限上,表現爲t

    t:其他用戶原有執行權限

    T:其他用戶原無執行權限

chmod o+t /path/to/somefile

chmod o-t /path/to/somefile

u:s

g:s

o:t

ugt:000:0

    001:1

    010:2

    011:3

    100:4

    101:5

    110:6

    111:7

chmod 6664 /tmp/a.txt        第一個數字對應ugt,後面三位數字對應文件的權限

    umask:0022

ACL:文件訪問控制列表

hadoop:/var/tmp/test.txt

    hadoop,hadoop

    664:其它,只讀

hadoop希望能夠讓hive寫此文件,他改如何進行:只能修改other的權限有寫權限

acl:用於實現在原有的訪問控制機制之外補充一種文件訪問控制機制

用戶訪問文件:

    1)、用戶是否爲文件屬主

    2)、用戶是否有特定的訪問控制條目

    3)、用戶是否屬於文件屬組

    4)、用戶所屬的組是否有特定的訪問控制條目

    5)、其它

getfacl /path/to/somewhere:查看文件或目錄的訪問控制列表

setfacl -m u:USERNANE:MODE: /path/to/somewhere:爲USERNAME指定的用戶設定問件/path/to/somewhere具有MODE訪問權限

setfacl -m g:GROUPNANE:MODE: /path/to/somewhere:爲GROUPNAME指定的組設定對文件/path/to/somewhere具有MODE訪問權限

setfacl -x u:USERNANE: /path/to/somewhere:爲USERNAME指定的用戶取消對文件/path/to/somewhere訪問權限

setfacl -x g:USERNANE: /path/to/somewhere:爲USERNAME指定的用戶組取消對文件/path/to/somewhere訪問權限

額外掛載的文件系統默認不支持acl,如果要支持

方法1:

    mount -o acl DEVICEMOUNT_POINT

    永久有效,需要編輯/etc/fatab,在掛載選項後附加acl選項

方法2:

    設定分區的默認掛載選項彙總有acl,掛載時無需再指定acl

    tune2fs -o acl DEVICE

    取消此默認掛載選項:

    tune2fs -o ^aclDEVICE

hadoop:文件/var/tmp/hadoop.txt,664

    拒絕hive用戶對此的任何訪問

    setfacl -m u:hive:--- /var/tmp/hadoop.txt

複製文件/var/log/messages至/data目錄,其屬主爲root用戶,且有讀寫權限,屬組爲root組,且有讀寫權限,可以被任何人讀取,

可以被gentoo用戶和magedu組讀寫,但centos用戶沒有任何訪問權限

# mkdir /data
# cp /var/log/messages /data
# chmod 664 /data/messages
# setfacl -m u:gentoo:rw /data/messages
# setfacl -m g:magedu:rw /data/messages
# setfacl -m u:centos:--- /data/messages


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章