linux 用戶及權限

用戶管理
用戶賬號 與 組賬號 惟一標識: UID(用戶的ID) GID(組的ID)
管理員的UID爲:0
用戶
/etc/passwd #用戶基本信息
添加用戶
useradd
-u 設置帳戶UID
-d 設置帳戶家目錄 默認爲/home/用戶名
-g 設置帳戶所屬基本組
-e 設置帳戶的失效日期 格式爲YYYY-MM-DD
-G 設置帳戶所屬附加組
-s 設置帳戶登錄Shell算法

例:vim

[root@server0 ~]# grep 'nsd01' /etc/passwd
    nsd01:x:1001:1001::/home/nsd01:/bin/bash
    用戶名:密碼佔位符:UID:GID:用戶的描述信息:家目錄:解釋器
    [root@server0 /]#  useradd  nsd01
    [root@server0 /]#  id  nsd01 
    [root@server0 /]#  grep  'nsd'  /etc/passwd 

    [root@server0 /]#  useradd -u 1100 nsd02     #指定UID
    [root@server0 /]#  grep  'nsd'  /etc/passwd 

    [root@server0 /]#  useradd -d /op/haha nsd03  #指定家目錄
    [root@server0 /]#  grep  'nsd'  /etc/passwd 
       指定登錄的解釋器程序
    [root@server0 /]#  useradd -s /sbin/nologin nsd04 
    [root@server0 /]#  grep  'nsd'  /etc/passwd
      若是用戶的解釋器程序爲/sbin/nologin則不能登錄操做系統
    [root@server0 /]# useradd -g nsd01 nsd09
    [root@server0 /]# id nsd09

    [root@server0 /]# useradd -G nsd01  nsd10
    [root@server0 /]# id nsd10

修改用戶信息
usermod
-u 修改帳戶UID
-d 修改帳戶家目錄
-g 修改帳戶所屬基本組
-G 修改帳戶所屬附加組
-e 修改帳戶的失效日期
-s 修改帳戶登錄Shell 安全

顯示帳戶信息
id 用戶名bash

刪除用戶
userdel
-r 遞歸刪除 刪除用戶家目錄less

臨時切換用戶身份
su - 用戶名ide

帳戶密碼
/etc/shadow #用戶密碼信息
[root@server0 ~]# head -1 /etc/shadow
root:$6$UiGI4Tc2$htsXYn5cJnOqv3P1VLcUSgfjDu2pL5yiJBuua6foZAHdwqeuLHfYUfS/vBn27Wjvoel8EJgtdsMjyquqvKAmf1:16261:0:99999:7:::
用戶名 : 密碼 : 上一次修改時間 : 密碼最短使用時間 : 密碼最長使用時間 : 提早多少時間警告:::
修改密碼:
passwd 用戶名
-l 鎖定帳戶
-u 解鎖帳戶
#管理員模式下
echo '密碼' | passwd --stdin 用戶名 #非交互式更改密碼ui

組帳戶管理
組帳戶:
方便管理用戶賬號(權限)把相同權限用戶加入到同一個組中
分類:
基本組
附加組(公共組 從屬組)
/etc/group #組基本信息
建立組賬號
groupadd操作系統

例:code

[root@server0 ~]# useradd kenji
    [root@server0 ~]# useradd tom
    [root@server0 ~]# useradd kaka
    [root@server0 ~]# useradd henter
    [root@server0 ~]# groupadd   tarena
    [root@server0 ~]# grep 'tarena' /etc/group

gpasswd
gpasswd -a #加入組成員
gpasswd -d #刪除組成員
gpasswd -M #覆蓋組成員server

例:

gpasswd - M '' 組名   #刪除該組所有成員   
    [root@server0 ~]# grep 'tarena' /etc/group  #查看組信息
    [root@server0 ~]# gpasswd -a kenji tarena   #加入組成員
    [root@server0 ~]# id kenji 
    [root@server0 ~]# gpasswd -a tom tarena
    [root@server0 ~]# grep 'tarena' /etc/group
    [root@server0 ~]# gpasswd -a kaka tarena
    [root@server0 ~]# grep 'tarena' /etc/group
    [root@server0 ~]# gpasswd -d kenji tarena   #刪除組成員
    [root@server0 ~]# grep 'tarena' /etc/group
    [root@server0 ~]# gpasswd -M 'kenji,henter' tarena
    [root@server0 ~]# grep 'tarena' /etc/group
    [root@server0 ~]# gpasswd -M 'kenji,kaka,tom,henter' tarena
    [root@server0 ~]# grep 'tarena' /etc/group
    [root@server0 ~]# gpasswd -M  '' tarena
    [root@server0 ~]# grep 'tarena' /etc/group

用戶安全:

passwd
-l鎖定 -u解鎖 -S 看狀態

[root@server0 ~# useradd test
    [root@server0 ~]# echo 123 | passwd --stdin test
            更改用戶 test 的密碼 。
            passwd:全部的身份驗證令牌已經成功更新。
    [root@server0 ~]# passwd -S test
    test PS 2018-01-01 0 99999 7 -1 (密碼已設置,使用 SHA512 算法。)
    [root@server0 ~]# passwd -l test
            鎖定用戶 test 的密碼 。
            passwd: 操做成功
    [root@server0 ~]# passwd -S test
            test LK 2018-01-01 0 99999 7 -1 (密碼已被鎖定。)
    [root@server0 ~# passwd -u test
            解鎖用戶 test 的密碼。
            passwd: 操做成功
    [root@server0 ~]# passwd -S test
            test PS 2018-01-01 0 99999 7 -1 (密碼已設置,使用 SHA512 算法。)

chage #查看用戶信息
選項:
-d, --lastday 最近日期 將最近一次密碼設置時間設爲「最近日期」 0 強制修改密碼
-E, --expiredate 過時日期 將賬戶過時時間設爲「過時日期」 yyyy/mm/dd 指定失效日期 (-1 取消)
-h, --help 顯示此幫助信息並推出
-I, --inactive INACITVE 過時 INACTIVE 天數後,設定密碼爲失效狀態
-l, --list 顯示賬戶年齡信息
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設爲「最小天數」
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設爲「最大天數」
-R, --root CHROOT_DIR chroot 到的目錄
-W, --warndays 警告天數 將過時警告天數設爲「警告天數」

[root@server0 ~]# chage -E 2018/01/31 tom
    [root@server0 ~]# chage -l tom
    最近一次密碼修改時間                  :1月 02, 2018
    密碼過時時間                  :從不
    密碼失效時間                  :從不
    賬戶過時時間                      :1月 31, 2018
    兩次改變密碼之間相距的最小天數     :0
    兩次改變密碼之間相距的最大天數     :99999
    在密碼過時以前警告的天數    :7

與用戶相關的配置問文件
/etc/passwd
/etc/shadow
/etc/login.defs #添加系統用戶的默認配置文件
/etc/skel/ #存儲用戶系統環境配置文件

[root@test ~]# ls /etc/skel/ -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@test ~]# useradd yy1
[root@test ~]# ls /home/yy1/ -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@test ~]# touch /etc/skel/test.txt
[root@test ~]# useradd yy2
[root@test ~]# ls -a /home/yy2/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  test.txt

基本權限的類型
訪問方式(權限)
讀取:容許查看內容 -read r
寫入:容許修改內容 -write w
可執行:容許運行和切換 -execuit x

對於文本文件:
r: cat head tail less
w: vim
x: 運行

權限適用對象(歸屬)
全部者:擁有此文件/目錄的用戶-user u
所屬組:擁有此文件/目錄的組-group g
其餘用戶:除全部者,所屬組之外的用戶-other o

[root@server0 ~]# ls -ld /etc/
drwxr-xr-x. 133 root root 8192 10月 30 10:14 /etc/
[root@server0 ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2089 10月 30 10:14 /etc/passwd
[root@server0 ~]# ls -l /etc/rc.local 
lrwxrwxrwx. 1 root root 13 5月   7 2014 /etc/rc.local -> rc.d/rc.local

權限位 硬鏈接數 屬主 屬組 大小 最後修改時間 文件/目錄名稱

權限位(9位)
文件類型(1) User(屬主)(3) Group(屬組)(3) Other(其餘人)(3)

文件類型

  • 表明普通文件 d 表明目錄 l 表明連接文件
    三位一組分別爲 全部者權限,所屬組權限,其餘帳戶權限

設置基本權限
chmod (只root能用)
chmod 歸屬關係+-=權限類別 文檔
-R 遞歸將權限應用於全部的子目錄與子文件

[root@server0 ~]# chmod u-x /nsd01/
    [root@server0 ~]# ls -ld /nsd01/
    drw-r-xr-x. 2 root root 6 10月 30 10:41 /nsd01/
    [root@server0 ~]# chmod g+w /nsd01/
    [root@server0 ~]# ls -ld /nsd01/
    drw-rwxr-x. 2 root root 6 10月 30 10:41 /nsd01/
    [root@server0 ~]# chmod u=rwx,g=rx,o=r /nsd01/
    [root@server0 ~]# ls -ld /nsd01/
    drwxr-xr--. 2 root root 6 10月 30 10:41 /nsd01/

如何判斷用戶具有權限
1.判斷用戶所屬的身份 是不是全部者 是否在全部組 全部者>所屬組 >其餘人 匹配及中止
2.看相應權限位的權限劃分

目錄的r 權限:可以ls 瀏覽此目錄內容
目錄的w 權限:可以執行 rm/mv/cp/mkdir/touch/..等更改目錄內容的操做
目錄的x 權限:可以cd切換到此目錄

設置文件歸屬
使用chown命令
chown [全部者][:[所屬組]] 文件或目錄
-R 遞歸將權限應用於全部的子目錄與子文件
例:

[root@server0 /]# chown :tedu /nsd02
        [root@server0 /]# ls -ld /nsd02
        drwxr-xr-x. 2 root tedu 6 10月 30 11:42 /nsd02
        [root@server0 /]# useradd dc
        [root@server0 /]# chown dc:tedu /nsd02
        [root@server0 /]# ls -ld /nsd02
        drwxr-xr-x. 2 dc tedu 6 10月 30 11:42 /nsd02
        [root@server0 /]# chown student /nsd02
        [root@server0 /]# ls -ld /nsd02
        drwxr-xr-x. 2 student tedu 6 10月 30 11:42 /nsd02

特殊權限(附加權限)

Set UID
附加在屬主的x位上
屬主的權限標識會變成s
適用於可執行文件,Set UID 可讓使用者具備文件屬組的身份及部分權限
(傳遞全部者身份) 如 手持尚方寶劍
例:

[root@server0 /]# cp /usr/bin/touch  /usr/bin/hahach
[root@server0 /]# chmod u+s /usr/bin/hahach
[root@server0 /]# ls -l /usr/bin/hahach 
-rwsr-xr-x. 1 root root 62432 10月 30 14:14 /usr/bin/hahach
[root@server0 /]# su - dc
[dc@server0 ~]$ touch a.txt 
[dc@server0 ~]$ hahach b.txt
[dc@server0 ~]$ ls -l
total 0
-rw-rw-r--. 1 dc   dc 0 Oct 30 14:15 a.txt
-rw-rw-r--. 1 root dc 0 Oct 30 14:15 b.txt

Set GID
附加在屬組的x位
屬組的權限標識變成爲s
適用於可執行文件,功能於Set UID相似
適用於目錄,Set GID能夠是目錄下新增的文檔自動設置與父目錄相同的屬組

爲了使在這個目錄下新增的文件或目錄的所屬組和父目錄相同(只針對將來生成的文件)

例:

[root@server0 /]# ls -l /test/1.txt 
-rw-r--r--. 1 root root 0 10月 30 14:37 /test/1.txt
[root@server0 /]# chown :tedu /test/
[root@server0 /]# chmod g+s /test/
[root@server0 /]# ls -ld /test
drwxr-sr-x. 2 root tedu 18 10月 30 14:37 /test
[root@server0 /]# mkdir /test/testone
[root@server0 /]# ls -l /test/
-rw-r--r--. 1 root root 0 10月 30 14:37 1.txt
drwxr-sr-x. 2 root tedu 6 10月 30 14:39 testone

Sticky Bit
附加在其餘人的x位
其餘人的權限標識變成爲t
適用於開放w 權限的目錄,能夠阻止用戶濫用w 寫入權限
(禁止操道別人的文檔)
例:

[root@server0 /]# chmod u+w,g+w,o+w /public/
[root@server0 /]# chmod o+t /public/
[root@server0 /]# ls -ld /public/
drwxrwxrwt. 2 root root 6 10月 30 14:43 /public/

[zhangsan@server0 /]$ ls -l /public/
-rw-rw-r--. 1 dc       dc       0 Oct 30 14:53 dc.txt
-rw-rw-r--. 1 test     test     0 Oct 30 14:52 test.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 Oct 30 14:52 zhangsan.txt
[zhangsan@server0 /]$ rm -rf /public/test.txt 
rm: cannot remove ‘/public/test.txt’: Operation not permitted

ACL 訪問控制列表
做用
文檔歸屬的侷限性
任何人只屬於三種角色:屬主,屬組,其餘人
沒法實現更精細的控制
acl訪問策略
能狗對個別用戶,個別組設置獨立的權限
大多掛載EXT3/4(存儲小文件),XFS(存儲大文件)文件系統已支持
命令
getfacl 文檔 #查看ACL策略
setfacl [-R] -m u:用戶名:權限類別 文檔
setfacl [-R] -m g:組名 :權限類別 文檔
setfacl [-R] -x u:用戶名 文檔 #刪除指定ACL策略
setfacl [-R] -b 文檔 #清空ACL策略

例:

[dc@server0 ~]$ cd /NB/
    bash: cd: /NB/: Permission denied

    [root@server0 /]# ls -ld /NB/
    drwxrwx---. 2 root cw 6 10月 30 15:27 /NB/
    [root@server0 /]# setfacl -m u:dc:rx /NB/
    [root@server0 /]# ls -ld /NB/
    drwxrwx---+ 2 root cw 6 10月 30 15:27 /NB/
    [root@server0 /]# getfacl /NB/
    getfacl: Removing leading '/' from absolute path names
    # file: NB/
    # owner: root
    # group: cw
    user::rwx
    user:dc:r-x
    group::rwx
    mask::rwx
    other::---

    [dc@server0 ~]$ cd /NB/
    [dc@server0 NB]$

權限的數值變化
權限的數值化
基本權限:r=4,w=2,x=1
附加權限:SUID=4,SGID=2,Sticky Bit=1
採起數值形式設置權限
chmod [-R ] nnn 文當 設置基本權限
chmod [-R ] xnnn 文檔 設置附加權限(x爲附加權限數值)

例如:
    [root@room1pc32 桌面]# mkdir /test01
    [root@room1pc32 桌面]# ls -ld /test01
    drwxr-xr-x. 2 root root 6 11月 11 09:26 /test01
    [root@room1pc32 桌面]# chmod 007 /test01
    [root@room1pc32 桌面]# ls -ld /test01
    d------rwx. 2 root root 6 11月 11 09:26 /test01
    [root@room1pc32 桌面]# chmod 777 /test01 
    [root@room1pc32 桌面]# ls -ld /test01
    drwxrwxrwx. 2 root root 6 11月 11 09:26 /test01
    [root@room1pc32 桌面]# chmod 4750 /test01/
    [root@room1pc32 桌面]# ls -ld /test01/
    drwsr-x---. 2 root root 6 11月 11 09:26 /test01/
相關文章
相關標籤/搜索