Linux-用戶及權限

1. 用戶組

RHEL 7/CentOS 7系統中的用戶組有以下3類:
超級用戶,UID 0:系統的超級用戶。
系統用戶,UID 1-999:系統中系統服務由不一樣用戶運行,更加安全,默認被限制不能登陸系統。
普通用戶,UID1000~60000:即管理員建立的用於平常工做而不能管理系統的普通用戶。shell

1.1 groupadd :添加用戶組
通常建立用戶的時候會自動建立與用戶名相同的基本組,而groupadd命令一般單首創建用戶組,而且做爲部分用戶的附加組,便於對這部分用戶的權限作集中管理。centos

# 用法
groupadd [選項] group

# 選項
-g GID:指定GID;默認是上一個組的GID+1;
-r: 建立系統組;

1.2 groupmod:修改組屬性安全

# 用法
roupmod [選項] GROUP

# 選項
-g GID:修改GID;
-n new_name:修改組名;

1.3 groupdel:刪除用戶組app

# 用法
groupdel [選項] GROUP

1.4 gpasswd:組(密碼/用戶)操做ui

# 用法
gpasswd [選項] 組

# 選項
-a, --add USER                向組 GROUP 中添加用戶 USER
-d, --delete USER             從組 GROUP 中添加或刪除用戶
-r, --delete-password         remove the GROUP's password

1.5 newgrp:(臨時)登陸到指定的組加密

# 用法
newgrp [-] [group]
-: 會模擬用戶從新登陸以實現從新初始化其工做環境;

2. 用戶

2.1 useradd:建立用戶code

# 用法
useradd [選項] 用戶名 (建立用戶,默認設定配置文件/etc/login.defs)
useradd -D:顯示建立用戶的默認配置;
useradd -D 選項: 修改默認選項的值;(結果保存於/etc/default/useradd文件中)

# 選項(更多選項查看幫助)
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中;
-r, --system:建立系統用戶;

2.2 usermod:修改用戶屬性orm

# 用法
usermod [選項] 登陸

# 選項
-u, --uid UID:修改用戶的ID爲此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, --append:與-G一同使用,用於爲用戶追加新的附加組;
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄;
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!";
-U, --unlock:解鎖用戶的密碼;

2.3 user del:刪除用戶繼承

# 用法
userdel [選項] 用戶名

# 選項
-r:刪除用戶時一併刪除其家目錄;

2.4 passwd:設置密碼屬性遞歸

# 用法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用戶本身的密碼;
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;

# 選項
-l, -u:鎖定和解鎖用戶;
-d:清除用戶密碼串;
-e DATE: 過時期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
--stdin:從標準輸入讀取密碼,如 echo "PASSWORD" | passwd --stdin USERNAME

2.5 su:switch user

# 用法
su [options...] [-] [user [args...]]

# 說明
登陸式切換:會經過讀取目標用戶的配置文件來從新初始化
  su - USERNAME
  su -l USERNAME
非登陸式切換:不會讀取目標用戶的配置文件進行初始化
  su USERNAME

注意:管理員可無密碼切換至其它任何用戶;

-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;

3. 相關文件

3.1 /etc/passwd:用戶信息

# 格式以下
name:password:UID:GID:GECOS:directory:shell
# name: 用戶名
# password:能夠是加密的密碼,也但是佔位符x;
# UID:用戶ID;
# GID:用戶所屬的主組的ID;
# GECOS:註釋信息;
# directory:用戶的家目錄;
# shell:用戶的默認shell,登陸時默認shell程序;

3.2 /etc/shadow:用戶密碼

# 格式以下
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過時期限:保留字段

3.3 /etc/group:用戶組信息

group_name:password:GID:user_list
user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表;

4. 用戶權限

4.1 chmod
注意:用戶僅能修改屬主爲本身的那些文件的權限;

# 用法
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

# 選項
-R, --recursive change files and directories recursively(遞歸)

# 示例&說明
chmod 755 FILE
chmod ugo+rwx FILE
chmod a-w FILE
a:全部,u:屬主,g:屬組,o:其它;
r:讀,w:寫,x:執行
chmod --reference=RFILE FILE(將FILE的權限修改成與RFILE一致)

4.2 chown:修改文件的屬主、屬組(修改屬組至關於chgrp)
注意:僅管理員可修改文件的屬主和屬組

# 用法
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

# 選項
-R, --recursive operate on files and directories recursively(遞歸)

# 示例&說明
chown user1:group1 FILE (將FILE的屬主設爲user1,屬組設爲group1)
chgrp --reference=RFILE FILE(將FILE的屬主、屬組修改成與RFILE一致)

5. 特殊權限

5.1 SUID

默認狀況下,進程其以發起者的身份運行(前提:發起者具備該程序的執行權限);
SUID可使沒有該程序的執行權限的用戶,臨時以該程序屬主的身份運行該程序。

  • 功能:
    讓執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效)

  • 用法:
chmod u+|-s FILE...     
# 展現位置(屬主的執行權限位):
# 若是屬主本來有執行權限,顯示爲小寫s; 
# 不然,顯示爲大寫S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.2 SGID

  • 功能:
    1)讓執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效)
    2)在該目錄中建立的文件自動繼承此目錄的用戶組(只能夠對目錄設置)

  • 用法:
chmod g+|-s FILE...     
# 展現位置(屬組的執行權限位):
# 若是屬組本來有執行權限,顯示爲小寫s; 
# 不然,顯示爲大寫S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

5.3 SBIT(Sticky BIT)

  • 功用:
    對於屬組或全局可寫的目錄,組內的全部用戶或系統上的全部用戶對在此目錄中都能建立新文件或刪除全部的已有文件;若是爲此類目錄設置Sticky BIT權限,則每一個用戶能建立新文件,且只能刪除本身的文件;

  • 用法:
chmod o+|-t FILE...         
# 展現位置(其它用戶的執行權限位)
# 若是其它用戶本來有執行權限,顯示爲小寫t; 
# 不然,顯示爲大寫T;
  • 示例:
# 系統上的/tmp和/var/tmp目錄默認均有Sticky BIT權限;
[root@VM_0_171_centos ~]# ls -ld /tmp /var/tmp
drwxrwxrwt. 7 root root 4096 5月   6 14:58 /tmp
drwxrwxrwt. 2 root root 4096 4月   4 14:59 /var/tmp

補充:管理特殊權限的另外一方式:

SUID SGID SBIT 左右交叉組合 通常權限
0 0 0 ... 0
0 0 1 ... 1
0 1 0 ... 2
0 1 1 ... 3
1 0 0 ... 4
1 0 1 ... 5
1 1 0 ... 6
1 1 1 ... 7

基於八進制方式賦權時,可於默認的三位八進制數字左側再加一位八進制數字;
例如:chmod 1777

6. 隱藏權限

在Linux系統中除了能對文件設置通常權限和特殊權限外還有一種叫作隱藏權限的功能

6.1 chattr:設置文件的隱藏權限

用法

chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

OPTIONS

-R  遞歸設置目錄中的文件權限
-V  詳盡打印輸出信息
-f  抑制多數錯誤信息
-v version  設置文件版本

參數說明(來自man幫助文檔):

The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write(C), no dump (d), synchronous directory updates (D), extent format (e),immutable (i), data journalling (j), secure deletion (s), synchronous updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).

示例

[root@VM_0_171_centos tmp]# chattr -V +i acl
chattr 1.42.9 (28-Dec-2013)
acl的標誌被設爲 ----i-----------
[root@VM_0_171_centos tmp]#

6.2 lsattr:查看文件的隱藏權限

用法

lsattr [ -RVadv ] [ files...  ]

OPTIONS

-R     遞歸
-V     顯示lsattr程序版本號
-a     List all files in directories, including files that  start  with '.'
-d     查詢目錄自己
-v     顯示文件版本號

示例

[root@VM_0_171_centos tmp]# lsattr -v
  123 suS-iadAcj-t---- ./acl
687539122 ---------------- ./attr
7. 文件訪問控制列表facl

指定的特定用戶或用戶組對某個文件的操做權限(在原來的u、g、o以外,另外一層對用戶或用戶組的賦權機制)

7.1 setfacl
用法:

# 賦權給用戶
setfacl  -m  u:USERNAME:MODE  FILE...
# 賦權給用戶組
setfacl  -m  g:GROUPNAME:MODE FILE...
# 撤銷賦權
setfacl  -x u:USERNAME  FILE...
setfacl  -x  g:GROUPNAME  FILE...

7.2 getfacl
用法:

getfacl FILE...

示例:

# 對acl文件爲gentoo用戶賦予rwx選項
[root@VM_0_171_centos tmp]# setfacl -m u:gentoo:rwx acl
# 查詢文件的訪問控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
user:gentoo:rwx
group::r--
mask::rwx
other::r--
# 撤銷acl文件對gentoo用戶的賦權
[root@VM_0_171_centos tmp]# setfacl -x u:gentoo acl
# 再次查詢訪問控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
# 設置訪問控制列表後,文件的權限位後會增長一個+
[root@VM_0_171_centos tmp]# ls -l acl
-rw-r--r--+ 1 root root 35 5月   6 16:31 acl
相關文章
相關標籤/搜索