1. 程式人生 > >《用戶管理和權限設置》

《用戶管理和權限設置》

linux 用戶權限 權限設置 selinux

1.管理用戶組
RHEL系統中普通用戶和組的ID默認從500開始,0~499作為系統保留。


2.命令行管理用戶

  • 1)使用useradd創建用戶
    用法:useradd [options] user_name
    -u UID:為新用戶指定一個uid(不使用系統默認按順序分配),使用-r強制簡歷系統用戶,-o允許新用戶不唯一的uid
    -g Group:為新用戶指定一個組(指定組必須存在)
    -G Goups:為新用戶指定一個附加組
    -M 不創建用戶的家目錄
    -m 為新用戶創建家目錄,使用-k選項將skeleton——dir內的檔案復制到家目錄下
    -c 為新用戶進行說明註釋(/etc/passwd的說明欄)
    -d 為新用戶指定家目錄,默認值為default_home內的login
    -s 為新用戶指定登錄後使用的shell
    -e 為新用戶指定帳號的終止日期,日期格式為MM/DD/YY
    -f 用戶帳號過期幾日後永久失效,當值為0時帳號則立刻失效,為-1時關閉此功能,默認關閉

例子:
useradd -u 1000 -c "ftp user" -s /bin/nologin user1


  • 2)使用passwd設置用戶密碼
    用法:passwd [options] user_name
    常用選項:
    -l 鎖定指定密碼
    -u 解鎖指定的被鎖定的帳號
    -n 指定密碼最短時間
    -x 指定密碼最長時間
    -w 指定密碼過期前的警告天數
    -i 指定密碼過期後,帳號失效前的天數
    -s 報告指定用戶密碼的狀態
    --stdin 從標準輸入讀入密碼,常用於shell腳本
    例子:
    passwd user1
    用cat命令查看:
    cat /etc/passwd
    查看用戶密碼信息新行:
    cat /etc/shadow

  • 3)用usermod命令修改用戶帳號信息:
    用法:usermod [options] user_name
    -L 鎖定帳號(在/etc/passwd中密碼部分前加一個!)
    -U 用於解鎖
    -l 改變用戶的登錄名
    例子:
    usermod -c "web user" user1
    cat /etc/passwd |grep user1
    查看用戶的密碼文件,在密碼前加“!”符號,用戶不能登錄
    grep user1 /etc/passwd

  • 4)使用userdel命令刪除用戶
    用法:userdel [options] user_name
    -f 強制刪除用戶,即使該用戶仍在登錄
    -r 刪除用戶的同時刪除該用戶的家目錄和郵件
    例子:
    userdel user1
    ls /home
    沒有-r選項刪除用戶,而用戶的家目錄被保留,如果同名組沒有其他成員,則連同刪除,反之,保留。

  • 5)使用groupadd命令新建組
    用法:groupadd [options] group_name
    -g 指定新建組的gid
    -o 可以重復使用gid
    -r 建立系統帳號
    例子:創建一個新組
    groupadd nona
    修改nona密碼:(沒有密碼的組是不允許用戶申請加入的)
    gpasswd nona
    查看當前組群:
    groups
    用戶主動申請加組群nona
    newgrp nona
    用戶退出組群:exit
    刪除組nona的密碼:gpasswd -r nona
    在root用戶下,將用戶zhangsan加入到nona組中
    gpasswd -a zhangsan nona
    將lisi設置為組nona的管理員
    gpasswd -A lisi nona
    切換組:
    newgrp nona(在zhangsan用戶下)
    修改組名,將nona名改為xs:
    groupmod -n nona xs
    刪除組:
    groupdel xs

    查看user1的uid,gid,組:
    id user1
    查看用戶的帳號密碼信息:
    change -l user1
    設置用戶user1帳號過期時間是2018-05-28:
    change -E "2018-05-28" user1
    檢查系統內用戶帳號信息的完整性:
    pwck (輸出中系統帳號家目錄信息的缺失是正常的)


  • 6)sudo命令獲得root權限
    使用visudo命令編輯sudo配置文件
    visudo /etc/sudoers

3.用戶初始化

  • 1)用戶特定配置文件
    當用戶被創建時,系統從/etc/skel/目錄下復制用戶的配置文件到用戶的目錄。這些配置文件用來定義用戶的工作環境,比如:PATH,別名,這些文件位於每個用戶的家目錄下,僅對當前用戶有效。
    ~/.bashrc 定義函數和別名
    ~/bash_profile 設置環境變量
    ~/.bash_logout 定義用戶退出時執行的命令
    (可將別名定義在bashrc文件中)

    全局配置文件:(對所有用戶都生效)
    /etc/bashrc 定義函數和別名
    /etc/profile 設置環境變量
    /etc/profile.d 目錄下的腳本被/etc/profile引用

    系統預設的值:
    用戶屬性信息的默認值在文件/etc/login.defs中被定義
    例子:查看/etc/login.defs,使用grep命令過濾文件以“#”開頭的註釋行
    grep -v ‘^#‘ /etc/login.defs

    查看/etc/default/useradd文件中的配置項
    cat /etc/default/useradd
    使用useradd命令列出系統預設的添加用戶信息的默認值
    useradd -D
    可以通過useradd -D加上相應的選項更新這些預設值
    -b 定義用戶家目錄的上一級目錄
    -e 用戶帳號的過期日期
    -f 用戶帳號過期幾日後失效
    -g 新建用戶的起始群組或ID
    -s 新建用戶登錄後使用的shell


    4.Linux文件權限管理
    註意:用戶權限高於組的權限,高於其他人的權限

權限 對文件影響 對目錄影響
r(讀取) 可以讀文件內容 可以列出目錄的內容
w(寫入) 可以更改文件內容 可以創建或刪除目錄中任意文件
x (執行) 可以作為執行文件 可以訪問目錄內容(還取決於目錄文件的權限)

在命令行中列出目錄的屬性 :
ll -d /home/demo
查看文件目錄有多大:
du -sh /root

  • 1)在命令行中管理權限
    使用chmod命令更改文件的權限
    用法:
    chmod [options] [模式] file...
    chmod [options] 八進制模式 file...
    chmod [options] --referrence=參考文件 file...

    常用選項
    -R:以遞歸方式更改所有的文件及子目錄
    符號模式:chmod who what which file|girectory
    簡單理解:chmod [-R] [ugoa] [+-=] [rwx] file|firectory

    who:指u、a、g、o(代表擁有者,全部,組,其他)
    what:值+、-、=(代表添加,刪除,精確設置)
    which:r、w、x(代表讀取,寫入,可執行)
    八進制模式:chmod [-R] ### file|diretory
    ###代表數字,#代表權限總和 r=4,w=2,x=1

    精確設置文件的權限:chmod u=rw,g=r file
    統一設置目錄及目錄下所有文件的權限:chmod -R +w targetdir/
    使用數字方式設置權限:chmod 755 file


  • 2)chown命令更改文件用戶所有權
    更改文件或者文件夾的用戶或組的所有權,使用chown或chgrp命令
    用法:
    chown [options] [所屬者]:[所屬組] file
    chown [options] --reference=參考文件 file
    例子:
    改變文件的所屬者:
    chown zhangsan file
    改變文件的所屬組:
    chgrp mail file
    同時改變用戶和組的所有權,並使用-R選項遞歸目錄和目錄下的所有文件:
    chown zhangsan:mail targetdir/

  • 3) 特殊權限
    查看passwd的權限
    ll ‘which passwd‘
    特殊權限對文件和目錄的影響
特權 對文件的影響 對目錄的影響
u+s(setuid或suid) 以擁有文件和目錄的用戶身份執行文件,而不是運行文件的用戶身份 無影響
g+s(setgid或sgid) 以擁有文件的組身份執行文件 對目錄中最新創建的文件將其組所有者設置為與目錄的組所有者相同
o+t(sticky) 無影響 對目錄具有寫入權限的用戶僅可以刪除其擁有的文件,而無法刪除其他用戶所擁有的文件

設置特殊權限有兩種方法:

  • 符號法:setuid=u+s;setgid=g+s;sticky=o+t
  • 數字法:setuid=4;setgid=2;sticky=1

    例子:給目錄設置sgid權限
    chmod u+s directory
    chmod 2775 directory

    搜索所有異常的程序或腳本
    find / -perm -4000


4.擴展屬性
lsattr testfile.txt 查看文件的擴展屬性

  • 1)設置文件的擴展屬性:
    chattr +i testfile.txt
    lsattr testfile.txt
    s:系統刪除這個文件時,用o填充文件區域
    a:只允許追加數據,不允許覆蓋或截斷這個文件
    i:表示不能被刪除,不能修改,不能重復命名,不能創建鏈接
    S:表示同部數據
    d:在文件備份時,dump程序忽略這個文件,通過man chattr獲得說明
    c:以透明方式壓縮這個文件
    u:當一個程序要刪除這個文件時,系統會保留其數據塊以使恢復
    A:告訴系統不要修改對這個文件的最後訪問時間


  • 2)訪問控制列表(ACL)
    查看文件或目錄的acl權限
    用法:getfacl [options] file
    例子:查看文件的acl
    getfacl testfile
    對於添加ACL的文件,使用ll命令列出,權限位的最後帶有“+”號
    ll testfile
  • 3)設置文件或目錄的ACL
    用法:
    setfacl [-bkndRLP] {-m|-M|-x|-X|...} file
    常用選項:
    -m:設置或修改文件的ACL權限
    -x:刪除文件的一個ACL權限
    -b:刪除文件所有的ACL權限
    -k:刪除所有的默認ACL權限
    --set:設置文件ACL,替代當前的ACL
    --mask:重新計算有效的mask值
    -R:遞歸子目錄
    -d:設置默認的ACL權限,僅能針對目錄使用
    --restore:從文件恢復備份的ACL
    例子:查看和設置ACL
    針對用戶zhangsan來設置rwx
    setfacl -m u:zhangsan:rwx acltest.file
    針對組nona來設置rw
    setfacl -m g:nona:rw acltest.file
    設置限制的權限為r
    setfacl -m m:r acltest.file (mask為限制權限)
    查看當前的ACL
    getfacl acltest.file
    設置ACL權限,如果同時設置多個權限,權限之間使用“,”分隔,同時設置多個ACL用戶和組的權限:
    setfacl -m u:user1:rwx,u:user2:rw,u:user3:r,g:nona:rw testfile
    刪除ACL權限
    setfacl -x g:zhangsan acltest.file
    一次性刪除所有ACL的權限
    setfacl -b acltest.file
    設置目錄默認的ACL
    setfacl -d -m g:nona:rwx testdir/
  • 4)備份和恢復ACL
    主要文件操作命令cp和mv都支持備份時保留文件的acl,cp命令需要加上-p參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息的。--restore選項來恢復文件中保存的ACL。
    例子:
    查看目錄及其所有子目錄和文件當前的ACL信息
    getfacl -R testdir/
    備份目錄及其子目錄中文件的ACL
    getfacl -R testdir/ > testdir.acl
    刪除原文件所有ACL
    setfacl -R -b testdir/
    恢復被刪除的ACL信息
    setfacl --restore testdir.acl

5.SELINUX
Selinux狀態有三種:啟用模式(enforcing),寬容模式(permissive),禁用模式(disabled)。
查看當前selinux的狀態:
getenforce
寬容模式設置:
setenforce 0
恢復selinux狀態 :
setenfroce 1
getenforce
永久禁用selinux:
vim /etc/selinux/config
將SElinux=enforcing改為 SElinux=disabled
重啟系統使其生效。

《用戶管理和權限設置》