用戶權限管理

描述:

用戶在系統上的操作受到權限的約束,例如對文件或者目錄進行查看、修改、復制、刪除等操作時,由文件或者目錄對應的操作的權限所決定的。

root的家目錄下創建一個普通文件和目錄并查看其屬性:

[root@localhost ~]# echo 123 > file1
[root@localhost ~]# ll file1
-rw-r--r-- 1 root root 4 Aug 12 19:51 file1

[root@localhost ~]# mkdir dir1
[root@localhost ~]# ll
drwxr-xr-x  2 root root    4096 Aug 12 19:53 dir1

拿文件file1來解讀下:(共有7個字段)

-rw-r--r-- 1 root root 4 Aug 12 19:51 file1

1, -rw-r–r–

   – :表示文件類型

補充:Linux系統上常見的文件類型:

     -: file 常規文件

  d: directory 目錄文件

  b: block device 快設備文件,支持以“block”為單位進行隨機訪問

  c: character device 字符設備文件,支持以“character”為單位進行線性訪問

  l: symbolic link 符號鏈接文件

  p: pipe 命名管道

    s: socket 套接字文件

  

   rw-r–r–: 代表文件的權限(3位為一組)

 左三位:rw-  定義所有者的權限(user,owner

 中三位:r–  定義所屬組的權限(group

    右三位:r–  定義其他人的權限(other)

  2,數字1: 表示有多少文件名連接到此節點(i-node

  3,root:  表示文件的屬主為root

  4root:表示文件的所屬用戶組

  5,0:  表示文件的容量大小,默認單位為B

  6,Aug 12 19:51: 表示文件的創建日期或者是最近的修改日期

  7,file1  表示文件名

其所表示的含義為:文件file1是普通文件,所有者是root,權限為可讀寫,所屬組為root,權限為可讀,其它用戶的權限為可讀,其鏈接數為1。


文件權限

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

owner:  屬主, u

group:  屬組, g

other:  其他, o

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

r: readable

w: writable

x: excutable

 

權限對文件和目錄的意義

文件:

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

w:  可修改其內容

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

示例:1,cat命令是二進制文件,每個用戶為什么都可以使用這個命令呢?主要是其的權限決定的,對于所有者,所屬組和其他人三種身份都具有X權限位,即擁有執行權限,可執行這個命令的文件變為程序

[root@localhost ~]# ll /bin/cat
-rwxr-xr-x 1 root root 48568 May 11  2016 /bin/cat

   2,/etc/passwd文件是有關用戶的信息,現在ping用戶想查看下這個文件,對于這個文件來說,ping用戶是other身份,權限位顯示只有讀權限,所以可用cat命令來查看相關信息,但不能修改和刪除該文件

[ping@localhost ~]$ ll /etc/passwd
-rw-r--r-- 1 root root 1769 Aug 12 18:45 /etc/passwd
[ping@localhost ~]$ echo 123 >> /etc/passwd
-bash: /etc/passwd: Permission denied
[ping@localhost ~]$ rm -f /etc/passwd
rm: cannot remove `/etc/passwd': Permission denied

目錄:

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

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

x:  可以使用ls -l 查看此目錄中文件列表,可以cd 進入此

默認情況下只給目錄x 權限,不給文件x 權限

示例:先用root身份先在/tmp下創建一個dir1目錄,接著在/tmp下創建一個file1文件,注意,目錄和文件的所有者,所屬組和屬性

[root@localhost tmp]# mkdir dir1
drwxr-xr-x  2 root root 4096 Aug 12 22:04 dir1
[root@localhost dir1]# ll

 現在用普通用戶ping進入到/tmp下,該用戶對于該目錄是other身份,由于目錄在other的權限位上有r和x則,ping用戶可以進入該目錄查看文件,由于沒x權限,故不能修改文件內容或刪除文件

[ping@localhost tmp]$ cd dir1
[ping@localhost dir1]$ ls
file1
[ping@localhost dir1]$ echo 11 >> file1
-bash: file1: Permission denied
[ping@localhost dir1]$ rm -f file1
rm: cannot remove `file1': Permission denied

權限組合機制:

– – –  000  0

– – x  001  1

– w –  010  2

– w x  011  3

r – –  100  4

r – x  101  5

r w –  110  6

r w x  111  7

chmod命令:改變文件的權限  用戶僅能修改屬主為自己的那些文件的權限

  用戶類型:屬主u   屬組g   其他人o   所有人a

  1,chmod [option]… Mode[,mode]…file…

mode表示法:

  賦權表示法:直接操作一類用戶的所有權限位rwx

  u=    g=   o=   a=

修改當前目錄下的file1文件的權限

-rw-r--r--  1 root root       4 Aug 12 19:51 file1
[root@localhost ~]# chmod u=rwx,g=rw,o=rw file1
[root@localhost ~]# ll
-rwxrw-rw-  1 root root       4 Aug 12 19:51 file1

  授權表示法:直接操作一類用戶的一個權限位r,w,x

  u+,u-   g+,g-   o+,g-   a+,a-

[root@localhost ~]# chmod u-x,g+x,o-rw file1
[root@localhost ~]# ll file1
-rw-rwx--- 1 root root 4 Aug 12 19:51 file1

2,chmod [option]… OCTAL-mode file…

3,chmod [option]..—reference=RFILE file…

 -R:遞歸修改

先將當前目錄下的dir1目錄及其包含的文件的權限改為777,然后按照/etc/fstab文件的權限將dir1目錄及其包含的文件的權限進行修改

[root@localhost ~]# ll /etc/fstab
-rw-r--r--. 1 root root 921 Jul 26  2016 /etc/fstab
[root@localhost ~]# chmod -R --reference=/etc/fstab dir1
[root@localhost ~]# ll;ll dir1
drw-r--r--  2 root root    4096 Aug 13 00:21 dir1
-rw-r--r-- 1 root root 4 Aug 13 00:21 test

chown命令:改變文件所有者   僅管理員可修改文件的屬主和屬組

  chown [-R]  dirname/filename…

-R: 遞歸(recursive)修改,連同子目錄下的所有文件、目錄都更新成為這個用戶。常用在更改某一目錄內所有文件情況

示例:將dir1目錄及其包含的文件的所有者改為ping用戶

[root@localhost ~]# chown ping -R dir1
[root@localhost ~]# ll;ll dir1
drw-r--r--  2 ping root    4096 Aug 13 00:21 dir1
-rw-r--r-- 1 ping root 4 Aug 13 00:21 test

chgrp命令:改變文件所屬用戶組   僅管理員可修改文件的屬主和屬組

    chgrp [-R] dirname/filename…

       -R: 遞歸(recursive)修改,連同子目錄下的所有文件、目錄都更新成為這個用戶組。常用在更改某一目錄內所有文件情況

示例:將dir1目錄及其包含的文件的所屬組改為ping用戶組

[root@localhost ~]# chgrp ping -R dir1
[root@localhost ~]# ll;ll dir1
drw-r--r--  2 ping ping    4096 Aug 13 00:21 dir1
-rw-r--r-- 1 ping ping 4 Aug 13 00:21 test

  chgap [option] … –reference =RFILE file…

新建文件和目錄的默認權限

 umask值可以用來保留在創建文件權限

 umask:  查看umask值

 root umask 是 是 022

[root@localhost ~]# umask
0022

 非特權用戶umask是 是 002 

[ping@localhost ~]$ umask
0002

umask #:  設定 

新建FILE 權限: 666-umask

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

示例:以root用戶身份先設置umask值為135,在當前目錄下創建test2文件

[root@localhost ~]# umask 135
[root@localhost ~]# touch test2
[root@localhost ~]# ll test2
-rw-r---w- 1 root root 0 Aug 13 00:50 test2

其中test2文件的權限為642,是根據新建FILE 權限: 666-umask得到的,666-135=531,由于普通文件不能擁有執行(奇數)權限,故在對應位的權限上+1,即得到的結果為642(rw-r—w-)

 新建DIR 權限: 777-umask

 umask S  模式方式顯示

 umask p  輸出可被調用

 : 全局設置: /etc/bashrc  用戶設置:~/.bashrc

 

Linux文件系統上的特殊權限

 SUID, SGID, Sticky

三種常用權限:r, w, x user, group, other

安全上下文

前提:進程有屬主和屬組;文件有屬主和屬組

(1)  任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

(2)  啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

(3)  進程訪問文件時的權限,取決于進程的發起者

(a)  進程的發起者,同文件的屬主:則應用文件屬主權限

(b)  進程的發起者,屬于文件屬組;則應用文件屬組權限

(c)  應用文件“其它”權限

特殊權限數字表示法

 SUID SGID STICKY

  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

 

可執行文件上SUID權限

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬主

SUID 只對二進制可執行程序有效

執行者對該程序需要具有X的可執行的權限

本權限僅在執行該程序中有效

執行者將具有該程序的所有者的權限

SUID 設置在目錄上無意義

權限設定:

chmod u+s FILE…

chmod u-s FILE..

示例:普通用戶可以修改自己的口令,可以查看/etc/passwd的內容,是因為ping用戶對于/usr/bin/passwd這個程序來說是具有x權限的,表示ping用戶可以執行passwd;passwd的擁有者是root;ping用戶在執行passwd的過程中,會‘暫時’獲得root的權限;/etc/passwd可以被ping所執行的passwd所修改。但如果ping用戶使用cat去讀取/etc/shadow時,是不能讀取該文件的內容的,因為cat不具有SUID權限

[ping@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passwd
[ping@localhost ~]$ ll /etc/shadow
---------- 1 root root 1039 Aug 12 18:45 /etc/shadow

[ping@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

[root@localhost tmp]# touch test1       加入具有SUID的權限
[root@localhost tmp]# chmod 4755 test1;ll test1
-rwsr-xr-x 1 root root 0 Aug 13 01:21 test1

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬組

對文件來說:

SGID對二進制程序有效

程序執行者對于該程序來說,需要具有X權限

執行者在執行的過程中將會獲得該程序用戶組的支持

對目錄來說:

用戶若對此目錄具有r與x權限時,該用戶能夠進入此目錄

用戶在此目錄下的有效組將會變成該目錄的用戶組

若用戶在此目錄下具有w權限(可以新建文件),則用戶所創建的新文件的用戶組與此目錄的用戶組相同

權限設定:

示例:

[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 38464 Mar 12  2015 /usr/bin/locat

[root@localhost tmp]# chmod 6755 test1;ll test1       加入具有SUID/SGID的權限
-rwsr-sr-x 1 root root 0 Aug 13 01:21 test1

目錄上的SGID

  默認情況下,用戶創建文件時,其屬組為此用戶所屬的 主 組

  一旦某目錄被設定了SGID ,則對此目錄有寫權限的用戶在此

目錄中創建的文件所屬的組為此目錄的屬組

  通常用于創建一個協作目錄

  權限設定:

chmod g+s DIR…

chmod g-s DIR.

 

Sticky

 具有寫權限的目錄通常用戶可以刪除該目錄中的任何

文件,無論該文件的權限或擁有權

 在目錄設置Sticky  位,只有文件的所有者或root可 可

以刪除該文件

sticky  設置在文件上無意義

 權限設定:

chmod o+t DIR…

chmod o-t DIR…

示例:

[root@localhost tmp]# ll -d /tmp
drwxrwxrwt. 4 root root 4096 Aug 13 01:21

[root@localhost tmp]# chmod 1755 test1;ll test1      加入具有SBIT的功能
-rwxr-xr-t 1 root root 0 Aug 13 01:21 test1
[root@localhost tmp]# chmod 7666 test1;ll test1       具有空的SUID/SGID權限
-rwSrwSrwT 1 root root 0 Aug 13 01:21 test1

權限位映射

SUID: user, 占據屬主的執行權限位

s:  屬主擁有x 權限

S :屬主沒有x 權限


SGID: group, 占據屬組的執行權限位

s: group 擁有x 權限

S group 沒有x 權限


Sticky: other, 占據other 的執行權限位

t: other 擁有x 權限

T other 沒有x

 

設定文件特定屬性

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

 chattr +a  只能增加

 lsattr  顯示特定屬性

 

訪問控制列表

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

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

 ACL 生效順序:所有者,自定義用戶,自定義組,其他

  

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

? getfacl file |directory       查看文件或目錄的acl

? setfacl -m u:username:per   file|directory       設置用戶的acl

? setfacl -Rm g:groupname:per  directory         遞歸設置組的acl

? setfacl -m d:u:user:per directory       設置默認acl參數,只對目錄有效,在該目錄新建的數據會引用此默認值

? setfacl -x u:username file |directory       取消用戶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 復制file1acl 權限給file2

 

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

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

(Effective Permission)

用戶或組的設置必須存在于mask 權限設定 范圍內才會生效。

setfacl -m mask::rx file

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

如:

 setfacl –set u::rw,u:wang: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

#getfacl -R /tmp/dir1

示例:普通用戶hadoop想在root創建的文件具有rw權限,可利用acl來設置其權限

[root@localhost backup]# cp /etc/inittab ./
[root@localhost backup]# getfacl inittab 
# file: inittab
# owner: root
# group: root
user::rw-
group::r--
other::r--
[hadoop@localhost backup]$ cd /backup
[hadoop@localhost backup]$ ll
total 4
-rw-r--r-- 1 root root 884 Aug 13 02:17 inittab
[hadoop@localhost backup]$ echo 123 >> inittab 
bash: inittab: Permission denied
[root@localhost backup]# setfacl -m u:hadoop:rw inittab  設置hadoop用戶的acl
[root@localhost backup]# getfacl inittab 
# file: inittab
# owner: root
# group: root
user::rw-
user:hadoop:rw-
group::r--
mask::rw-
other::r--
[root@localhost backup]# su hadoop
[hadoop@localhost backup]$ echo 123 >> inittab
[hadoop@localhost backup]$ tail inittab 
id:3:initdefault:
123
[root@localhost backup]# setfacl -x u:hadoop inittab     取消hadoop用戶的acl
[root@localhost backup]# getfacl inittab 
# file: inittab
# owner: root
# group: root
user::rw-
user:tom:rwx
group::r--
group:mygroup:rw-
mask::rwx
other::r--
[root@localhost backup]# setfacl -m m::r inittab      設置mask值
[root@localhost backup]# getfacl inittab      
# file: inittab               有效權限(effective permission)
# owner: root          用戶或組所設置的權限必須要存在于mask的權限范圍內才會生效
# group: root
user::rw-
user:tom:rwx			#effective:r--
user:hadoop:rwx			#effective:r--
group::r--
group:mygroup:rwx		#effective:r--
mask::r--
other::r--

[root@localhost backup]# su hadoop
[hadoop@localhost backup]$ echo "123" >> inittab 
bash: inittab: Permission denied

原創文章,作者:pingsky,如若轉載,請注明出處:http://www.www58058.com/28505

(0)
pingskypingsky
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • N25-第十周博客作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 內核空間的啟動流程 一. POST 加電自檢 在加電之后,智能設備所運行的內部存儲的一系列檢測程序集合??s寫為POST。這些檢測程序在軟件加載到硬件上運行之前對硬件的基本完整性加以驗證。 用于實現POST的代碼在主板上ROM(CMOS)芯片上。 二. Boot Sequence(BI…

    Linux干貨 2017-03-25
  • 第二十一周作業

    1、回顧并詳細總結MySQL的存儲引擎、索引; 常用存儲引擎的對比: 特點 MyISAM InnoDB MEMORY MERGE NDB 存儲限制 有 64TB 有 沒有 有 事務安全 支持 鎖機制 表鎖 行鎖 表鎖 表鎖 行鎖 B樹索引 支持 支持 支持 支持 支持 哈希索引 支持 全文索引 支持 集群索引 支持 數據緩存 支持 支持 支持 索引緩存 支持…

    2017-07-29
  • 【招聘】北京/互聯網/運維工程師/7-15K/雙休,五險一金

    崗位職責:   1、負責服務器的規劃、調試優化、日常監控、故障處理、數據備份、日志分析等工作;   2、參與運維流程制定,確保任何突發情況都能高效響應;  3、負責服務器部署,對服務器構架和網絡進行優化和改進;  4、負責運維相關數據的收集、分析和總結;  5、負責技術運維相關的文檔、手冊…

    Linux干貨 2016-04-16
  • N22-第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# ll -d  /etc/skel/drwxr-xr-x. 3 root root 74 3月&…

    Linux干貨 2016-09-19
  • 馬哥教育網絡班22期+第5周課程練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell;cat /etc/passwd | grep "^\<root\>"cat /etc/passwd | grep "^\<fedora\>"cat /etc/passwd | grep "^\<user1\…

    Linux干貨 2016-09-19
  • Shell編程之位置變量

           linux中命令可以接受參數,同樣的,shell腳本也可以接受參數。這些參數用$1、$2、$3…$n表示。       $0  表示腳本本身       $1  傳遞給腳本的第1個參數 $2  傳…

    Linux干貨 2016-08-12

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-04 23:21

    對命令的用法通過示例有了很好的展示。

欧美性久久久久