亚洲欧美换脸一区二区|国产无套无码AⅤ在线观看|国产精品视频综合区|一本无码av中文出轨人

<delect id="ygqmy"></delect>
  • <dfn id="ygqmy"><noscript id="ygqmy"></noscript></dfn>
  • <menu id="ygqmy"><acronym id="ygqmy"></acronym></menu>
  • <delect id="ygqmy"></delect>
    首頁 > 資訊 > 數(shù)碼 > permission denied怎么解決(看完Linux權(quán)限說明后就明白了)

    permission denied怎么解決(看完Linux權(quán)限說明后就明白了)

    導(dǎo)讀: 我們?cè)谑褂?Linux 的過程中,或多或少都會(huì)遇到一些關(guān)于使用者和群組的問題,比如最常見的你想要在某個(gè)路徑下執(zhí)行某個(gè)指令,會(huì)經(jīng)

    我們?cè)谑褂?Linux 的過程中,或多或少都會(huì)遇到一些關(guān)于使用者和群組的問題,比如最常見的你想要在某個(gè)路徑下執(zhí)行某個(gè)指令,會(huì)經(jīng)常出現(xiàn)這個(gè)錯(cuò)誤提示 。

    permission denied

    反正我大概率見到這個(gè)錯(cuò)誤都是在使用 FTP 傳輸文件的時(shí)候,等了半天傳輸百分比還是零,我說網(wǎng)絡(luò)這么慢么?怎么都不傳輸呢?其實(shí)我不知道,這是由于權(quán)限問題所致。

    我一般的修復(fù)方式是直接賦予 777 權(quán)限,或者直接使用 su 管理員登錄。。。。。。

    大家可能不太知道我說的是什么,也有一些大佬可能覺得我這種方式太 low 了,不管怎樣,遇到這種問題就是說你得權(quán)限不夠,為什么呢?下面我們就需要來認(rèn)識(shí)一下 Linux 中的使用者和群組了。

    使用者和群組

    在 Linux 中,關(guān)于文件所有者分為三類,即文件所有者、群組和其他人所屬,這里分別解釋以下這三個(gè)概念

    • 文件所有者

    Linux 是一個(gè)多用戶多任務(wù)系統(tǒng),多用戶就意味著有些用戶創(chuàng)建的文件是否對(duì)其他用戶可見,這是一種可見性問題,同時(shí)也是一種隱私性問題,為了考慮到每個(gè)人的隱私權(quán),Linux 設(shè)計(jì)了文件所有者的角色。如果你有一些資料和文件的隱私性比較高,你就可以把文件設(shè)置成 "只有我自己可見" ,這就是文件所有者的作用。

    • 群組

    群組的這個(gè)概念用在團(tuán)隊(duì)開發(fā)中,用處比較多的就是為項(xiàng)目設(shè)置權(quán)限,比如你就職于一個(gè)銀行的外包部門,你和其他外包部門共同為某個(gè)銀行服務(wù),所有的外包團(tuán)體都使用一臺(tái)服務(wù)器,這就會(huì)涉及到群組權(quán)限的問題,你們外包部門開發(fā)的項(xiàng)目不想讓其他外包部門所看到,就會(huì)把該項(xiàng)目設(shè)置成群組可見。但是銀行是總負(fù)責(zé)人,所有銀行具有查看你們所有外包部門項(xiàng)目的權(quán)限,因此,你還需要設(shè)置銀行的權(quán)限。

    • 其他人所屬

    其他人和群組是相對(duì)的,其他人在群組之外,沒有權(quán)限查看群組內(nèi)文件的一種權(quán)限關(guān)系。

    除了上面三個(gè)概念之外,還有一個(gè)權(quán)限級(jí)別最高的大佬,它就是 root,這個(gè) root 權(quán)限是最高的。

    Linux 文件權(quán)限

    在聊完上面使用者和群組的概念之后,接下來我們就來談一下文件權(quán)限要如何設(shè)置的問題,這塊內(nèi)容是很重要的,因?yàn)檫@部分內(nèi)容是很好解決 permission denied 問題的關(guān)鍵。

    權(quán)限屬性

    首先登錄 Linux 系統(tǒng),使用 su - 可以切換成為 root 身份,然后執(zhí)行 ls -al 會(huì)看到下面這些


    一共有七列內(nèi)容,這七列內(nèi)容如下圖所示。


    學(xué)習(xí)的時(shí)候可以直接使用 root ,因?yàn)楹罄m(xù)的 chgrp,chown 等指令都需要 root 來處理,但是工作中強(qiáng)烈建議不要使用 root 權(quán)限。

    使用 exit 可以退出 root 身份。

    上面這段指令中,ls 是 list 的意思,也就是列出,而選項(xiàng) -al 則表示文件詳細(xì)權(quán)限和屬性。

    • 權(quán)限,第一列表示的是權(quán)限,權(quán)限一共通過 10 個(gè)字符來表示,我們拿 home 權(quán)限為例,來列舉各個(gè)字符表示的含義


    第一個(gè)字符表示的是文件類型,文件類型有很多種,一般 [d] 表示的是目錄,能用cd命令進(jìn)入到這個(gè)目錄中??梢钥吹綀D中幾乎所有都是目錄。


    如果是 [-] 則表示文件,如果是 [l] 則表示鏈接文件,如果是 [b] 則表示設(shè)備文件中的可隨機(jī)存取設(shè)備,如果是 [c] 則表示為設(shè)備文件中的一次性讀取設(shè)備(鍵盤、鼠標(biāo))。

    接下來的九個(gè)字符分為三組,三個(gè)一組,分別表示所屬人、所屬群組、其他所有者權(quán)限,每組內(nèi)的權(quán)限都是三個(gè) rwx 的組合,[r] 表示可讀,[w]表示可寫,[x] 表示可執(zhí)行,這里需要注意的是,如果沒有權(quán)限,就會(huì)變?yōu)?-號(hào)。

    • 鏈接,這一列表示有多少文件名鏈接到這個(gè)節(jié)點(diǎn)(i-node)上,每個(gè)文件都會(huì)將它的權(quán)限和屬性記錄到文件系統(tǒng)的 i-node 上,不過,我們使用的目錄樹卻是使用文件名來記錄的,因此每個(gè)文件名都會(huì)關(guān)聯(lián)到一個(gè) i-node ,所以這個(gè)屬性就是記錄有多少文件鏈接到了同一個(gè) i-node 上。

    什么是 i-node ?

    i-node 的描述方式很像是我們之前聊過的 Socket,Socket 就是一個(gè)四元組,有時(shí)會(huì)加上協(xié)議類型變?yōu)槲逶M,如果你不太清楚我說的是什么,可以看下我的這篇文章 原來這才是 Socket!

    我們知道,磁盤的最小存儲(chǔ)單位是扇區(qū),操作系統(tǒng)在讀取扇區(qū)時(shí),不會(huì)一個(gè)扇區(qū)接著一個(gè)扇區(qū)這樣讀取,因?yàn)樾侍?,而是?strong>塊為單位進(jìn)行讀取,塊是由多個(gè)扇區(qū)組成的。

    文件中的數(shù)據(jù)都存儲(chǔ)在扇區(qū)中,但是我們并不知道哪一塊數(shù)據(jù)是我們需要的,為了存儲(chǔ)一些文件的元信息,比如文件的創(chuàng)建者,創(chuàng)建日期,文件的大小,開發(fā)人員提出了 i-node ,也就是索引節(jié)點(diǎn)。一般來說,i-node 具有如下內(nèi)容

    具體關(guān)于 i-node 的內(nèi)容,我們后面還會(huì)再說。

    • 然后第三列表示這個(gè)文件的所屬人,由圖可見,大部分文件的所屬人都是 root 用戶。

    • 第四列表示這個(gè)文件的所屬群組,在 Linux 系統(tǒng)下,你登錄的賬號(hào)會(huì)添加到一個(gè)或者多個(gè)所有人群組中,這一欄就表示對(duì)應(yīng)的群組權(quán)限。

    • 第五列表示文件大小,默認(rèn)單位為字節(jié)(Bytes)。

    • 第六列為創(chuàng)建這個(gè)文件的日期和最近修改日期,從圖中可以看到,這個(gè)日期格式有可能不是我們想要的,如果要顯示完整的日期格式,可以使用 ls -l --full-time,包括年、月、日、時(shí)間。

    如果想要讓系統(tǒng)默認(rèn)的語系變?yōu)橛⑽牡脑挘敲茨憧梢孕薷南到y(tǒng)配置文件 /etc/locale.conf,首先我們可以查看一下系統(tǒng)都支持哪些語言。


    修改默認(rèn)語言,輸入

    vi /etc/profile

    在文檔的最后輸入

    export LANG="en_US.UTF-8"

    就可以切換成為英文,如果想使用中文,可以輸入

    export LANG="zh_CN.GB18030"

    然后使用 esc + :wq 保存,保存之后使用

    source /etc/profile

    即可完成設(shè)置。

    • 第七列為文件名,有一類特殊的文件名,它表示著隱藏文件,如果文件名之前多一個(gè) . ,那就表示隱藏文件。

    權(quán)限的重要性

    • 提供系統(tǒng)保護(hù):非權(quán)限用戶不能操作具有某些權(quán)限的功能和數(shù)據(jù)。

    • 適合團(tuán)隊(duì)開發(fā)和數(shù)據(jù)共享:團(tuán)隊(duì)所有組成員和個(gè)人所屬能夠共享項(xiàng)目。

    如果沒有恰當(dāng)?shù)脑O(shè)置系統(tǒng)權(quán)限,可能會(huì)造成某些泄密事件或者其他不可忽視的后果,所以權(quán)限問題大家要引起重視,下面我們就來聊一聊如何設(shè)置系統(tǒng)權(quán)限。

    改變系統(tǒng)權(quán)限和屬性

    我們現(xiàn)在知道文件權(quán)限對(duì)于一個(gè)系統(tǒng)安全的重要性了,現(xiàn)在就要聊一聊如何修改文件權(quán)限了。常用的修改文件權(quán)限的指令有

    • chgrp :改變文件所屬群組

    • chown:改變文件所有者

    • chmod:改變文件權(quán)限

    chgrp

    chgrp 就是 change group 的縮寫,我覺得李納斯把縮寫用到了極致,這也許是我們現(xiàn)在對(duì)于縮寫這么流行的原因。chgrp 能夠改變文件群組,不過,要改變?nèi)航M的話,要被改變的群組名稱要在 /etc/group 文件內(nèi)存在才行,否則就會(huì)顯示錯(cuò)誤。

    chown

    既然 chgrp 能夠改變文件群組,那么 chown 能夠改變文件所有者,同樣也需要注意的是,文件所有者必須是系統(tǒng)中存在的賬號(hào),也就是在 /etc/passwd 這個(gè)文件中有記錄的使用者名稱才可改變。除此之外,chown 還可以直接修改群組名稱。

    chmod

    變更文件權(quán)限使用的是 chmod 這個(gè)指令,但是,權(quán)限的設(shè)置有兩種方式,可以分別使用數(shù)字或者符號(hào)進(jìn)行權(quán)限變更。

    • 使用數(shù)字改變文件權(quán)限

    Linux 文件基本權(quán)限有 9 種,分別是 owner/group/others 三種身份加自己的 read/write/execute 權(quán)限,這九個(gè)權(quán)限三個(gè)為一組,我們可以使用數(shù)字表示各個(gè)權(quán)限。

    一般 r 表示 4;w 表示 2;x 表示 1,每種身份各自的權(quán)限是需要累加的,比如 rwx 就表示 4 + 2 + 1 = 7。比如我們最常見的 chmod 777 它就表示賦予所有的權(quán)限,也就是說誰都能看/寫/執(zhí)行,所以這種文件也存在極大的安全問題。使用數(shù)字改變文件權(quán)限是我們最常用的一種方式。

    • 使用符號(hào)改變文件權(quán)限

    九種文件權(quán)限分別對(duì)應(yīng)著:(1) user (2) group (3) others,所以我們可以借由 u,g,o 來代表三種身份的權(quán)限。除此之外,a 代表 all 即全部的身份。

    比如我們想要給 -rwxr-xr-x 設(shè)置權(quán)限,那么我們所使用的命令應(yīng)該是

    chmod u=rwx,go=rx .filename

    如果我們想要給所有人增加寫入權(quán)限,就可以這么操作

    chmod a+w .filename

    如果我們想給所有人去掉寫入權(quán)限,就可以這么寫入指令

    chmod a-w .filename

    我們上面列出了三種指令,分別是 =、+、- 號(hào),= 號(hào)表示賦值指定權(quán)限,+ 號(hào)表示增加權(quán)限,- 號(hào)表示去掉某些權(quán)限,在 + 和 - 的狀態(tài)下,只要沒找到指令的項(xiàng)目,那么該權(quán)限不會(huì)發(fā)生變動(dòng)。

    Linux 目錄和文件權(quán)限

    我們上面聊的都是文件權(quán)限,文件是容納數(shù)據(jù)的地方,這些文件包括一般文本文件、數(shù)據(jù)庫文件、二進(jìn)制文件等,權(quán)限對(duì)于文件的意義在于

    • r(read):可以讀取文件的實(shí)際內(nèi)容,比如讀取文本文件的文字內(nèi)容

    • w(write):可以新增、編輯或者修改文件中的內(nèi)容(不包括刪除文件)

    • x(execute):使文件具有被文件系統(tǒng)執(zhí)行的權(quán)限。

    Windows 下面判斷文件是否能夠執(zhí)行的因素是看文件擴(kuò)展名, 比如 .exe, .bat, .com 等等,但是在 Linux 中,判斷文件是否具有可執(zhí)行權(quán)限是直接判斷文件有沒有 x 這個(gè)權(quán)限,和文件名無關(guān)。

    但是在 Linux 中,不只有文件具有權(quán)限,目錄也有權(quán)限,文件是存放實(shí)際數(shù)據(jù)的地方,而目錄是記錄文件所在位置的清單,我們只有通過目錄才能找到文件放在哪里!權(quán)限對(duì)于不同的目錄,也代表著不同的概念。

    • r (read contents in directory):表示具有讀取目錄結(jié)構(gòu)清單的權(quán)限,所以如果你具有讀取一個(gè)目錄的權(quán)限時(shí),就代表你可以查詢目錄下的文件,所以你就可以使用 ls 將目錄的內(nèi)容顯示出來。

    • w(modify contents of directory):寫入權(quán)限表示你具有對(duì)文件目錄和目錄中的文件進(jìn)行修改的操作,主要包括

      • 刪除已經(jīng)存在的文件和目錄。

      • 創(chuàng)建新的文件和目錄。

      • 將已存在的文件或目錄進(jìn)行改名。

      • 移動(dòng)目錄內(nèi)文件、目錄位置。

    • x(access directory):這執(zhí)行權(quán)限有啥用?總不能目錄也能夠被執(zhí)行把?其實(shí)并不是這樣,執(zhí)行權(quán)限表示著你有沒有權(quán)限進(jìn)入到指定目錄下,也就是 cd(change directory) 。

    Linux 文件種類和擴(kuò)展名

    想必大家都聽說過這樣一句話:任何設(shè)備在 Linux 下都是文件,但是文件也分為多種,除了上面介紹過的一般文件(-)目錄文件(d) 之外,還包括下面這些文件類型

    • 常規(guī)文件(regular file):常規(guī)文件就是我們使用 ls -al 所顯示出來的屬性,也就是上面我們列出的第一個(gè)字符,


    文件類型又可以分為

    1. 純文本文件(ASCII),這是 Linux 系統(tǒng)中最多的一種文件類型,純文本文件是我們能夠直接看到的數(shù)據(jù),你可以使用 cat 來直接看到這部分內(nèi)容。比如我們最常用的設(shè)置 Linux 靜態(tài) ip 的文件 ens33 ,就可以使用 cat 命令來輸出

    cat ifcfg-ens33


    1. 二進(jìn)制文件,在 Linux 中,查看二進(jìn)制文件可以使用 xxd 或者 od 進(jìn)行格式化輸出

    2. 數(shù)據(jù)格式文件,數(shù)據(jù)文件直接使用 cat 讀取會(huì)顯示亂碼,但是它能夠通過 last 指令進(jìn)行輸出

    • 目錄,目錄沒什么好說的,就是表示一個(gè)文件清單,目錄的表示就是 [d],也就是 directory。

    • 鏈接文件(link),鏈接文件就是某些程序執(zhí)行時(shí)需要和這些鏈接文件進(jìn)行鏈接才能執(zhí)行的一種文件類型。

    • 設(shè)備與設(shè)備文件(device),Linux 下的設(shè)備分為兩種,塊設(shè)備和字符設(shè)備:

    塊設(shè)備是一個(gè)能存儲(chǔ)固定大小塊信息的設(shè)備,它支持以固定大小的塊,扇區(qū)或群集讀取和(可選)寫入數(shù)據(jù)。每個(gè)塊都有自己的物理地址。通常塊的大小在 512 - 65536 之間。所有傳輸?shù)男畔⒍紩?huì)以連續(xù)的塊為單位。塊設(shè)備的基本特征是每個(gè)塊都較為對(duì)立,能夠獨(dú)立的進(jìn)行讀寫。常見的塊設(shè)備有 硬盤、藍(lán)光光盤、USB 盤

    塊設(shè)備一般位于 /dev/sda 下,它的第一個(gè)屬性為 [b]。


    另一類 I/O 設(shè)備是字符設(shè)備。字符設(shè)備以字符為單位發(fā)送或接收一個(gè)字符流,而不考慮任何塊結(jié)構(gòu)。字符設(shè)備是不可尋址的,也沒有任何尋道操作。常見的字符設(shè)備有 打印機(jī)、網(wǎng)絡(luò)設(shè)備、鼠標(biāo)、以及大多數(shù)與磁盤不同的設(shè)備。


    字符設(shè)備最大的特點(diǎn)就是一次性讀取,不能夠截?cái)噍敵?,舉例來說,你不可能將鼠標(biāo)一下跳到另外一個(gè)地方,而是采用平滑移動(dòng)的方式才可以,字符設(shè)備的第一個(gè)屬性是 [c]。

    • 數(shù)據(jù)接口文件(sockets):數(shù)據(jù)接口文件顧名思義就是利用 socket 承接網(wǎng)絡(luò)數(shù)據(jù)的,它的屬性是 [s],一般在 /run 或者 /tmp 這些目錄中看到。

    • 數(shù)據(jù)輸送文件(FIFO,pipe):FIFO 也是一種特殊類型的文件,它的主要目的在于解決多個(gè)程序同時(shí)存取一個(gè)文件所造成的的錯(cuò)誤問題,它的第一個(gè)屬性為 [p]。

    Linux 擴(kuò)展名

    說到這個(gè)擴(kuò)展名其實(shí)就很頭疼,Linux 中是沒有擴(kuò)展名這個(gè)概念的,但是又有一些擴(kuò)展名的命名方式,這就很尷尬,所以暫且成為擴(kuò)展類型吧。一般有下面幾種

    • *.sh ,這是一個(gè)執(zhí)行腳本或者批處理腳本,一般也被稱為 shell 腳本,里面是一些 shell 語法寫的指令。

    • .tar,.tar.gz,.zip,*.tgz,這種擴(kuò)展類型是打包的壓縮文件,根據(jù)不同的打包方式有不同的擴(kuò)展類型

    • .html ,.php :網(wǎng)頁相關(guān)文件,分別代表 HTML 和 PHP 語法的網(wǎng)頁文件。

    精彩內(nèi)容