日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
理解Linux文件所屬組:CAPI(linux文件所屬組capi)

在Linux系統(tǒng)中,不光每個(gè)文件都有一個(gè)所有者(owner),還有一個(gè)所屬組(group)的概念。所屬組指的是文件所在的組,在文件訪問(wèn)管理中擔(dān)任著重要角色。一些操作,比如讀取、寫(xiě)入和執(zhí)行,都需要通過(guò)組的定義來(lái)授權(quán)文件訪問(wèn)。在Linux系統(tǒng)中,C語(yǔ)言也提供了API來(lái)處理文件所屬組的操作,開(kāi)發(fā)者可以使用這些API來(lái)進(jìn)行文件訪問(wèn)控制的編程。

成都創(chuàng)新互聯(lián)公司專注于湖口企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),購(gòu)物商城網(wǎng)站建設(shè)。湖口網(wǎng)站建設(shè)公司,為湖口等地區(qū)提供建站服務(wù)。全流程按需開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

本文將介紹Linux系統(tǒng)中的文件所屬組概念,以及C語(yǔ)言API如何為文件訪問(wèn)提供了支持。

Linux中文件所屬組的概念

在Linux中,每個(gè)文件都有一個(gè)所有者和一個(gè)所屬組。所有者一般指的是文件創(chuàng)建者或擁有者,可以理解為文件的主人。所有者默認(rèn)擁有對(duì)文件的所有訪問(wèn)權(quán)限。每個(gè)文件所屬組也是一個(gè)標(biāo)識(shí)符(ID),可以是一個(gè)用戶組或其他類型的組。組成員可以被授權(quán)在文件級(jí)別上進(jìn)行訪問(wèn)。如果一個(gè)組具有執(zhí)行權(quán)限,組中的任何成員都可以執(zhí)行該文件。

對(duì)于大多數(shù)Linux系統(tǒng)管理員來(lái)說(shuō),文件訪問(wèn)權(quán)限是一個(gè)非常熟悉的主題。權(quán)限由三個(gè)分組控制:文件所有者、文件所屬組以及其他人。每個(gè)分組都可以分別授予讀取(r)、寫(xiě)入(w)和執(zhí)行(x)的權(quán)限。這些權(quán)限的合理分配及控制可以保護(hù)文件安全,并鼓勵(lì)文件共享。

C語(yǔ)言API中的文件所屬組支持

Linux系統(tǒng)提供了訪問(wèn)文件所述組的多個(gè)工具和API,包括C語(yǔ)言API。C語(yǔ)言是一種面向過(guò)程的語(yǔ)言,有著非常豐富的文件訪問(wèn)API,并支持對(duì)文件所屬組的操作。以下是C API中的幾個(gè)實(shí)現(xiàn):

1. getgid(): 獲取進(jìn)程的實(shí)際組ID。

2. getegid(): 獲取進(jìn)程的有效組ID。

3. setgid(): 設(shè)置進(jìn)程的組ID,只有超級(jí)用戶有權(quán)限改變組ID。

4. setegid(): 設(shè)置進(jìn)程的有效組ID,并返回之前的值。

5. getgroups(): 獲取進(jìn)程所在的所有組ID。

6. setgroups(): 設(shè)置進(jìn)程的所有組ID。

使用這些API可以實(shí)現(xiàn)對(duì)文件訪問(wèn)控制的編程。在C語(yǔ)言API中,可以使用組ID或者組名來(lái)獲取或設(shè)置文件所屬組。系統(tǒng)會(huì)在文件中存儲(chǔ)文件所有者及其所在組的信息。

下面是一段C API的示例代碼:

“`

#include

#include

#include

#include

#include

#include

int mn(int argc, char** argv) {

// 文件所有者

uid_t owner_uid = getuid();

// 文件所屬組

gid_t owner_gid = getgid();

// 獲取當(dāng)前進(jìn)程的有效組ID

gid_t process_egid = getegid();

// 打印文件信息

printf(“Owner UID=%d GID=%d\n”, owner_uid, owner_gid);

printf(“Effective GID=%d\n”, process_egid);

return 0;

}

“`

在這個(gè)例子中,使用了幾個(gè)C語(yǔ)言API函數(shù)獲取了文件所有者、所屬組以及當(dāng)前進(jìn)程的有效組ID。這些信息可以實(shí)現(xiàn)編程時(shí)對(duì)文件訪問(wèn)的權(quán)限管理。

相關(guān)問(wèn)題拓展閱讀:

  • Linux下的umask、特殊權(quán)限與ACL權(quán)限

Linux下的umask、特殊權(quán)限與ACL權(quán)限

在了解到Linux系統(tǒng)上的文件目錄權(quán)限,有時(shí)候你會(huì)發(fā)現(xiàn)為什么剛創(chuàng)建的文件是

-rw-r–r–

這個(gè)權(quán)限,目錄是

drwxr-xr-x

權(quán)限,有些是

-rwsr-xr-x

,又有些是

drwsrws–T

?這些則與umask、特殊權(quán)限有關(guān)。

什么是umask?umask一般是用在你初始創(chuàng)建一個(gè)目錄或者文件的時(shí)候賦予他們的權(quán)限。它與chmod的效果剛好相反,umask設(shè)置的是權(quán)限“補(bǔ)碼”,而chmod設(shè)置的是文件權(quán)限碼。一般在/etc/profile、

或用戶家目錄下的.bash_profile或.profile中設(shè)置umask值。

默認(rèn)的umask是0022,0022四個(gè)數(shù)字代表是賦值初始化準(zhǔn)備丟棄的權(quán)限。(相對(duì)應(yīng)文件來(lái)說(shuō),x權(quán)限就算沒(méi)說(shuō)明出來(lái)丟棄一樣必須默認(rèn)丟棄)

  之一個(gè)0代表suid 丟棄的權(quán)限;

  第二個(gè)0代表本文件/目錄擁有者什么權(quán)限都沒(méi)丟棄;

  第三個(gè)2代表本文件/目錄的用戶組丟棄了w權(quán)限;

  第四個(gè)2代表本文件/目錄的文件/目錄的用戶組丟棄了w權(quán)限。

  一般我們會(huì)這樣表示:

umask +default permission(默認(rèn)權(quán)限) =777(目錄)/666(文件)

但存在特殊情況如果把umask設(shè)為135呢?

要了解特殊權(quán)限需對(duì)安全上下文有一個(gè)概念:

前提:進(jìn)程有屬主和屬組;文件有屬主和屬組

(1) 任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程,取決發(fā)起者對(duì)程序文件是否擁有執(zhí)行權(quán)限

(2) 啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為發(fā)起者,進(jìn)程的屬組為發(fā)起者所屬的組

(3) 進(jìn)程訪問(wèn)文件時(shí)的權(quán)限,取決于進(jìn)程的發(fā)起者

(a) 進(jìn)程的發(fā)起者,同文件的屬主:則應(yīng)用文件屬限

(b) 進(jìn)程的發(fā)起者,屬于文件屬組;則應(yīng)用文件屬組權(quán)限

(c) 應(yīng)用文件“其它”權(quán)限

1.SUID 權(quán)限僅對(duì)二進(jìn)制程序(binary program)有效;

2.執(zhí)行者對(duì)于該程序需要具有x 的可執(zhí)行權(quán)限;

3.本權(quán)限僅在執(zhí)行該程序的過(guò)程中有效(run-time);

4.執(zhí)行者將具有該程序擁有者(owner) 的權(quán)限。

5.SUID設(shè)置在目錄上無(wú)意義

權(quán)限設(shè)定:

chmod u+s FILE…

chmod u-s FILE…

s 標(biāo)志在文件擁有者的x 項(xiàng)目為SUID,那s 在群組的x 時(shí)則稱為Set GID

# ls -l /usr/bin/locate

-rwx–s–x. 1 root slocateJun/usr/bin/locate

與SUID 不同的是,SGID 可以針對(duì)文件或目錄來(lái)設(shè)定!如果是對(duì)文件來(lái)說(shuō), SGID 有如下的功能:

-1.SGID 對(duì)二進(jìn)制程序有用;

-2.程序執(zhí)行者對(duì)于該程序來(lái)說(shuō),需具備x 的權(quán)限;

-3.執(zhí)行者在執(zhí)行的過(guò)程中將會(huì)獲得該程序群組的支持!

# ll /usr/bin/locate /var/lib/mlocate/mlocate.db

-rwx–s–x. 1 root slocateJun/usr/bin/locate

-rw-r—–. 1 root slocateJun 15 03:44 /var/lib/mlocate/mlocate.db

與SUID 非常的類似,使用xiaoming 這個(gè)賬號(hào)去執(zhí)行l(wèi)ocate 時(shí),那xiaoming將會(huì)取得slocate 群組的支持, 因此就能夠去讀取 mlocate.db 。

SGID 也能夠用在目錄上,這也是非常常見(jiàn)的一種用途

目錄設(shè)定了SGID 的權(quán)限后,他將具有如下的功能:

-1. 用戶若對(duì)于此目錄具有r 與x 的權(quán)限時(shí),該用戶能夠進(jìn)入此目錄;

-2.用戶在此目錄下的有效群組(effective group)將會(huì)變成該目錄的群組;

-3.用途:若用戶在此目錄下具有w 的權(quán)限(可以新建文件),則使用者所建立的新文件,該新文件的群組與此目錄的群組相同。

這個(gè) Sticky Bit, SBIT 目前只針對(duì)目錄有效,sticky 設(shè)置在文件上無(wú)意義。SBIT 對(duì)于目錄的作用是:

-1.當(dāng)用戶對(duì)于此目錄具有w, x 權(quán)限,亦即具有寫(xiě)入的權(quán)限時(shí);

-2.當(dāng)用戶在該目錄下建立文件或目錄時(shí),僅有自己與root 才有權(quán)力刪除該文件

SUID/SGID/SBIT 權(quán)限設(shè)定

-rwSrwSrwT 1 root root 0 Jun 16 02:53 test

設(shè)定權(quán)限成為 -rws–x–x 的模樣:

# chmod u=rwxs,go=x test; ls -l test

-rws–x–x 1 root root 0 Jun 16 02:53 test

承上,加上 SGID 與 SBIT 在上述的文件權(quán)限中!

# chmod g+s,o+t test; ls -l test

-rws–s–t 1 root root 0 Jun 16 02:53 test

1】ACL 是Access Control List 的縮寫(xiě),主要的目的是在提供傳統(tǒng)的owner,group,others 的read,write,execute 權(quán)限之外的細(xì)部權(quán)限設(shè)定。ACL 可以針對(duì)單一使用者,單一文件或目錄來(lái)進(jìn)行

ACL 主要可以針以下來(lái)控制權(quán)限呢:

1.使用者 (user):可以針對(duì)使用者來(lái)設(shè)定權(quán)限;

2.群組 (group):針對(duì)群組為對(duì)象來(lái)設(shè)定其權(quán)限;

3.默認(rèn)屬性(mask):還可以針對(duì)在該目錄下在建立新文件/目錄時(shí),規(guī)范新數(shù)據(jù)的默認(rèn)權(quán)限;

及1.ACL:Access Control List,實(shí)現(xiàn)靈活的權(quán)限管理;2.CentOS7默認(rèn)創(chuàng)建的xfs和ext4文件系統(tǒng)具有ACL功能;3.CentOS7之前版本,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無(wú)ACL功能,需手動(dòng)增加tune2fs –o acl/dev/sdb1

mount –o acl/dev/sdb1 /mnt/test

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

為多用戶或者組的文件和目錄賦予訪問(wèn)權(quán)限r(nóng)wx

2】ACL 的設(shè)定技巧: getfacl, setfacl

-x :刪除后續(xù)的 acl 參數(shù),不可與 -m 合用;

-b :移除『所有的』 ACL 設(shè)定參數(shù);

-k :移除『預(yù)設(shè)的』 ACL 參數(shù),

-R :遞歸設(shè)定 acl ,亦即包括次目錄都會(huì)被設(shè)定起來(lái);

-d :設(shè)定『預(yù)設(shè) acl 參數(shù)』的意思!只對(duì)目錄有效,在該目錄新建的數(shù)據(jù)會(huì)引用此默認(rèn)值

例:# touch acl_test1

# ll acl_test1

-rw-r–r–. 1 root root 0 Jul 21 17:33 acl_test1

# setfacl -m u:xiaoming:rx acl_test1

# ll acl_test1

-rw-r-xr–+ 1 root root 0 Jul 21 17:33 acl_test1

# setfacl -m u::rwx acl_test1

# ll acl_test1

-rwxr-xr–+ 1 root root 0 Jul 21 17:33 acl_test1

設(shè)定值中的 u 后面無(wú)使用者列表,代表設(shè)定該文件擁有者

2.getfacl 指令用法余setfacl一樣

例:# getfacl acl_test1

file: acl_test1 acl.txt

setfacl -R -b /tmp/dir1

清除dir目錄的ACL權(quán)限

setfacl -R –set-file=acl.txt /tmp/dir1

setfacl –restore acl.txt

linux 文件所屬組 c api的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 文件所屬組 c api,理解Linux文件所屬組:C API,Linux下的umask、特殊權(quán)限與ACL權(quán)限的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。


當(dāng)前題目:理解Linux文件所屬組:CAPI(linux文件所屬組capi)
轉(zhuǎn)載注明:http://m.5511xx.com/article/cdjsoei.html