1. 程式人生 > >Linux學習之十五-Linux文件特殊權限和附加權限

Linux學習之十五-Linux文件特殊權限和附加權限

增加 ech IE address 二進制 prot atime 說明 orm

Linux文件特殊權限和附加權限

1、特殊權限suid

範圍:只能針對二進制命令文件

作用:讓普通用戶擁有二進制命令文件所有者的權限

舉例1:普通用戶使用passwd命令修改密碼

cat /etc/shadow 存放密碼的文件,用sha512加密方式加密

echo 123456|passwd --stdin a 非交互式設置密碼

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd

[root@localhost ~]# ll /etc/shadow

---------- 1 root root 977 Apr 3 14:11 /etc/shadow

可見,passwd具有s權限,具有root用戶權限,才能修改密碼,普通用戶具有執行權限但不一定擁有以root身份執行時的權限,添加s權限後就具有了root用戶的執行權限

舉例2:netstat命令通過修改s權限可以使普通用戶具有root身份

在root用戶下使用netstat命令

[root@localhost ~]# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:52113 0.0.0.0:* LISTEN 1186/sshd

tcp 0 0 :::52113 :::* LISTEN 1186/sshd

udp 0 0 0.0.0.0:68 0.0.0.0:* 1109/dhclient

在普通用戶下使用netstat命令

[test@localhost ~]$ netstat -lntup

(No info could be read for "-p": geteuid()=502 but you should be root.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:52113 0.0.0.0:* LISTEN -

tcp 0 0 :::52113 :::* LISTEN -

udp 0 0 0.0.0.0:68 0.0.0.0:* -

在root用戶下查看netstat命令的權限

[root@localhost ~]# ll /bin/netstat

-rwxr-xr-x 1 root root 128216 Mar 22 2017 /bin/netstat

在普通用戶下使用stat命令查看命令詳細屬性,當前的權限為0755

[test@localhost ~]$ stat /bin/netstat

File: `/bin/netstat‘

Size: 128216 Blocks: 256 IO Block: 4096 regular file

Device: 802h/2050d Inode: 788614 Links: 1

Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2018-04-03 14:46:08.529638732 +0800

Modify: 2017-03-22 07:52:14.000000000 +0800

Change: 2018-04-03 14:48:07.523615430 +0800

在root用戶下修改權限u+s

[root@localhost ~]# chmod u+s /bin/netstat

[root@localhost ~]# ll /bin/netstat

-rwsr-xr-x 1 root root 128216 Mar 22 2017 /bin/netstat

在普通用戶下使用stat命令再次查看命令詳細屬性,當前的權限為4755

[test@localhost ~]$ stat /bin/netstat

File: `/bin/netstat‘

Size: 128216 Blocks: 256 IO Block: 4096 regular file

Device: 802h/2050d Inode: 788614 Links: 1

Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2018-04-03 14:46:08.529638732 +0800

Modify: 2017-03-22 07:52:14.000000000 +0800

Change: 2018-04-03 14:46:46.432625876 +0800

在普通用戶下重新使用netstat命令,發現具有了root身份,即和在root用戶下執行的結果一樣

[test@localhost ~]$ netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:52113 0.0.0.0:* LISTEN 1186/sshd

tcp 0 0 :::52113 :::* LISTEN 1186/sshd

udp 0 0 0.0.0.0:68 0.0.0.0:* 1109/dhclient

使用u-x命令(沒有執行權限)

[root@localhost ~]# chmod u-x /bin/netstat

[root@localhost ~]# ll /bin/netstat

-rwSr-xr-x 1 root root 128216 Mar 22 2017 /bin/netstat

2、特殊權限sgid

作用:和SUID一樣,只是SGID是獲得該程序所屬用戶組的權限

舉例:locate 查找文件原理:把系統中所有文件名存儲在一個數據庫中並建立索引

所以查找起來locate比find要快很多

updatedb 更新locate命令數據庫內容的命令

[root@localhost ~]# chmod g+s /usr/bin/locate

[root@localhost ~]# ll /usr/bin/locate

-rwx--s--x 1 root slocate 38464 Mar 12 2015 /usr/bin/locate

[root@localhost ~]# chmod g-x /usr/bin/locate

[root@localhost ~]# ll /usr/bin/locate

-rwx--S--x 1 root slocate 38464 Mar 12 2015 /usr/bin/locate

[root@localhost ~]# stat /usr/bin/locate

File: `/usr/bin/locate‘

Size: 38464 Blocks: 80 IO Block: 4096 regular file

Device: 802h/2050d Inode: 658161 Links: 1

Access: (2701/-rwx--S--x) Uid: ( 0/ root) Gid: ( 21/ slocate)

Access: 2018-04-02 15:23:19.000000000 +0800

Modify: 2015-03-12 17:21:21.000000000 +0800

Change: 2018-04-03 15:19:24.432622176 +0800

[root@localhost ~]# chmod g+x /usr/bin/locate

[root@localhost ~]# stat /usr/bin/locate

File: `/usr/bin/locate‘

Size: 38464 Blocks: 80 IO Block: 4096 regular file

Device: 802h/2050d Inode: 658161 Links: 1

Access: (2711/-rwx--s--x) Uid: ( 0/ root) Gid: ( 21/ slocate)

Access: 2018-04-02 15:23:19.000000000 +0800

Modify: 2015-03-12 17:21:21.000000000 +0800

Change: 2018-04-03 15:20:09.750626919 +0800

3、特殊權限sbit

Sticky Bit 粘滯位

作用:只針對目錄有效,對於目錄的作用是:當用戶在該目錄下建立文件或目錄時,僅有自己與 root才有權力刪除

最具有代表的就是/tmp目錄,任何人都可以在/tmp內增加、修改文件(因為權限全是rwx),但僅有該文件/目錄建立者與 root能夠刪除自己的目錄或文件

[root@localhost ~]# stat /tmp/

File: `/tmp/‘

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 1048577 Links: 3

Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2018-04-03 13:49:59.000000000 +0800

Modify: 2018-04-03 14:14:02.000000000 +0800

Change: 2018-04-03 14:14:09.311623966 +0800

[root@localhost ~]# chmod o-x /tmp/

[root@localhost ~]# stat /tmp/

File: `/tmp/‘

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 802h/2050d Inode: 1048577 Links: 3

Access: (1776/drwxrwxrwT) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2018-04-03 13:49:59.000000000 +0800

Modify: 2018-04-03 14:14:02.000000000 +0800

Change: 2018-04-03 15:21:02.341604692 +0800

4、附加權限

又叫做擴展權限

命令格式

chattr [+-=] 選項 文件或目錄名

+增加權限

- 刪除權限

= 等於某權限

chattr change attributes改變附加權限

The letters ‘acdeijstuADST‘ select the new attributes for the files: append only (a), com-pressed (c), no dump (d), extent format (e), immutable (i), data journalling (j), secure dele-tion (s), no tail-merging (t), undeletable (u), no atime updates (A), synchronous directory updates (D), synchronous updates (S), and top of directory hierarchy (T).

部分常用參數說明:

+a append (可讀,如果有執行權限可執行,可追加,但是不能刪除)

+i immutable(可讀,如果有執行權限可執行,不能追加,不能刪除)

用途:給系統的關鍵文件加把鎖

+s secure dele-tion(安全刪除。若誤刪除,數據無法恢復)

+A no atime updates(訪問時不更新訪問時間)

用途:超大並發的情況下,關閉更新訪問時間來降低服務器壓力

+c com-pressed(壓縮)

+d no dump(不備份)

用途:不希望被恢復的文件,linux 找回誤刪除的文件

+t no tail-merging(尾部合並)

lsattr test.txt list attributes查看附加權限位

說明:可根據實際需要對某些文件添加附加權限

參考來源:

https://www.cnblogs.com/dyh004/p/6378456.html

https://www.cnblogs.com/Q--T/p/7864795.html

Linux學習之十五-Linux文件特殊權限和附加權限