android 安全讲座第三层 linux权限基础知识
android系統是給予linux的內核,所以關于linux內核中最重要的權限提取,這里列舉一下基礎知識,以備將來真正的利用系統漏洞進行權限提升的時候做儲備。
問題:
1 文件權限 4755的含義?
這個4表示其他用戶執行文件時,具有與所有者相當的權限。
2 文件權限中 s/S中的含義
字母不是小寫的s或者t,而是大寫的S和T,那代表此文件的特殊權限沒有生效,是因為你尚未給它對應用戶的x權限.
下面是基礎的權限知識,只能解釋問題1中的755.
chmod是Linux下設置文件權限的命令,后面的數字表示不同用戶或用戶組的權限。
一般是三個數字:
第一個數字表示文件所有者的權限
第二個數字表示與文件所有者同屬一個用戶組的其他用戶的權限
第三個數字表示其它用戶組的權限
權限分為三種:讀(r=4),寫(w=2),執行(x=1)。綜合起來還有可讀可執行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執行(rwx=7=4+2+1)。
所以,chmod 755 設置用戶的權限為:
1.文件所有者可讀可寫可執行
2.與文件所有者同屬一個用戶組的其他用戶可讀可執行
3.其它用戶組可讀可執行
關于問題1中的4
chmod 4755與chmod 755 的區別在于開頭多了一位,這個4表示其他用戶執行文件時,具有與所有者相當的權限。
一下子不好理解
下面的解釋可能更加明白
對可執行文件設置 setuid 權限時,將對運行該文件的進程授予基于文件屬主的訪問權限。該訪問權限不是基于正在運行可執行文件的用戶。使用此特殊權限,用戶可以訪問通常只有屬主才可訪問的文件和目錄。
可以使用chmod u+s 或chmod g+s來設置二進制的可執行文件的euid。setuid只能對二進制的可執行設置。
這里面涉及到了另外一個的linux的知識
進程的uid和euid
linux系統中每個進程都有2個ID,分別為用戶ID(uid)和有效用戶ID(euid),UID一般表示進程的創建者(屬于哪個用戶創建),而EUID表示進程對于文件和資源的訪問權限(具備等同于哪個用戶的權限)。C語言中,可以通過函數getuid()和geteuid()來獲得進程的兩個ID值。
當一個用戶登陸系統時,系統會將UID和EUID都賦值為/etc/passwd文件中的UID,一般情況下2個ID是相同的,但是某些情況下會出現2個ID不同的情況。
gid和egid同理。
passwd 實例
【關于linux的passwd命令】passwd命令是用來修改用戶登陸密碼的,用來記錄用戶登陸密碼的文件為/etc/shadow,該文件只有root用戶具有訪問權限,如下所示:gaolu@gaolu-desktop:~$gaolu@gaolu-desktop:~$ cd /etcgaolu@gaolu-desktop:/etc$ ls -l shadow-rw-r----- 1 root shadow 978 2009-02-22 21:25 shadowgaolu@gaolu-desktop:/etc$
另一種特殊權限t:
再看個實例,查看你的/tmp目錄的權限
[root@MyLinux ~]# ls -dl /tmpdrwxrwxrwt 6 root root 409608-2211:37/tmp tmp目錄是所有用戶共有的臨時文件夾,所有用戶都擁有讀寫權限,這就必然出現一個問題,A用戶在/tmp里創建了文件a.file,此時B用戶看了不爽,在/tmp里把它給刪了(因為擁有讀寫權限),那肯定是不行的。
有t特權的目錄下的文件或目錄只有owner和root才可以刪除和修改,其他的人即使有寫權限也不能刪除。
setuid:chmod u+s xxx
setgid: chmod g+s xxx
stick bit : chmod o+t xxx
或者使用八進制方式,在原先的數字前加一個數字,三個權限所代表的進制數與一般權限的方式類似,如下:
suid guid stick bit
1 1 1
所以:
suid的二進制串為:100,換算十進制為:4
guid的二進制串為:010,換算十進制:2
stick bit 二進制串:001,換算十進制:1
于是也可以這樣設:
setuid:chmod 4755 xxx
setgid:chmod 2755 xxx
stick bit:chmod 1755 xxx
最后,在一些文件設置了特殊權限后,字母不是小寫的s或者t,而是大寫的S和T,那代表此文件的特殊權限沒有生效,是因為你尚未給它對應用戶的x權限.
需要先理解了linux權限的基礎知識,剩下的繼續討論
轉載于:https://blog.51cto.com/sunzeduo/1316327
總結
以上是生活随笔為你收集整理的android 安全讲座第三层 linux权限基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6.LibSVM核函数
- 下一篇: 技术人员应该如何培养