1. 怎麼在linux終端中打開文件
linux是不靠擴展名識別文件的。文件都能編輯,就是看你又沒有許可權了。有一種比較方便的方法,比如ubuntu
gnome下,sudo
nautilus,就可以打開一個root許可權的nautilus,裡面執行任何文件都是root許可權。
2. 如何查看文件夾的許可權 linux
先來了解一下文件的基本信息把!
我們一般會嫌麻煩,直接上:,可讀,可寫,可執行
sudo chmod 777 文件名
3. 為什麼ubuntu系統打開文件時沒有許可權,怎麼解決這個問題終端里輸入什麼命令可以打開自己安裝的
使用root帳號設置好許可權,開放給你的帳號使用。
在你當前的登錄的帳號上,可以使用sudo -i 命令看能否進入root帳號。
進入root帳號後,用chmod命令修改許可權。
4. 如何在Linux中管理文件和文件夾的許可權
命令行:文件許可權
改動文件許可權和所有權的兩個命令如下:
chmod - 更改許可權
chown - 更改所有權
上面兩個命令用起來都不難。不過你要明白,只有用戶是當前所有者或根用戶,才能夠實際更改文件的許可權或所有權,這一點很重要。所以,如果你是用戶Bethany,要是不藉助根許可權(或sudo),就無法對用戶Jacob擁有的文件和文件夾進行更改。比如說:
數據分區上創建了一個新的文件夾,名為/DATA/SHARE。Bethany和Jacob這兩個用戶都需要擁有讀取和寫入該文件夾的訪問許可權。有許多方法可以實現這一點(其中一個方法是,把兩個用戶加入到一個特殊的用戶組――我們會在另一篇文章中探討如何管理用戶組)。如果Bethany和Jacob是系統上的唯一兩個用戶(而且你知道自己的網路很安全――這很重要),就可以更改該文件夾的許可權,為他們授予訪問權。為此,一個方法就是執行該命令。
sudo chmod -R ugo+rw /DATA/SHARE
上面這個命令的詳細分解如下:
sudo - 這用於為使用sudo的任何系統上的命令獲得管理員許可權(不然你就得使用'su'以獲得根許可權,運行不帶'sudo'的上面這個命令)
chmod - 改動許可權的命令
-R - 這改動父文件夾及其裡面子對象的許可權
ugo+rw - 這為User(用戶)、Group(用戶組)及Other(其他對象)授予讀取和寫入訪問許可權。
你可能也猜測到了,這個命令完全開放了SHARE文件夾的許可權,那樣系統上的任何人都能訪問該文件夾。正如我在前面提到的那樣,一種更安全的方法就是使用用戶組。但我們使用這種方法僅僅是為了演示。
許可權的詳細分解如下:
u - 用戶
g - 用戶組
o - 其他對象
"其他對象"這個條目是個危險的條目,因為它實際上為每個人賦予了文件夾/文件的許可權。你為某文件或文件夾所能賦予的許可權如下:
r - 讀取
w- 寫入
x - 執行
使用-R這個參數選項符很重要。如果你在SHARE目錄裡面有許多子文件夾和文件,又希望許可權從父對象(包含文件夾)應用到子對象(子文件夾和文件),就必須使用-R(遞歸)這個參數選項符,那樣同樣的許可權就可以一路應用到父文件夾裡麵包含的最深層文件夾。
命令行:文件所有權
更改文件或文件夾的所有權同樣很簡單。假設Jacob為Bethany把一個文件夾移入到SHARE目錄裡面,但是Jacob仍擁有所有權。只要藉助一個簡單的命令,就可以更改這個所有權:
sudo chown -R bethany /DATA/SHARE
讓我們詳細分解這個命令。
sudo - 必須用到管理員許可權,因為我們所處理的是屬於另一個用戶的文件夾
chown - 更改所有權的命令·-R - 這個遞歸參數選項符確保所有子對象都獲得同樣的所有權變更。
bethany - 文件夾的新所有者
/DATA/SHARE - 所要修改的目錄
要是Bethany將文件夾發回給Jacob,就需要再次更改所有權(如果使用用戶組,同樣可以簡化這一步)。
GUI:用戶許可權
我准備在Ubuntu 13.10系統上,使用Nautilus文件管理器,演示如何更改文件許可權。
假設你需要允許每個人都獲得讀取/寫入文件夾TEST的許可權。為此,在Nautilus文件管理器裡面,採取下面這些步驟:
1.打開Nautilus
2.瀏覽至目標文件或目標文件夾
3.滑鼠右擊該文件或文件夾
4.選擇Properties(屬性)
5.點擊Permissions(許可權)選項卡
6.點擊Others(其他)部分中的Access files(訪問文件)
7.選擇"Create and delete files"(創建並刪除文件)
8.點擊Change Permissions for Enclosed Files(更改所附文件的許可權)
9.在隨後彈出的窗口中,選擇Files(文件)下的Read and Write(讀取和寫入),選擇Folders(文件夾)下的Create and delete files(創建並刪除文件),見圖A。
10.點擊Change(更改)。
11.點擊Close(關閉)。
如果你需要更改不屬於你的文件夾的許可權,戲法就會出現。可以實現這一幕,但必須在擁有管理員訪問權的前提下啟動Nautilus。為此,採取下面這些步驟:
1.打開終端窗口
2.執行命令sudo -i
3.執行命令nautilus
sudo -i命令為你賦予了持久訪問sudo的許可權,直到你輸入exit命令,清除該訪問權。一旦Nautilus打開,你可以更改文件夾或文件的許可權,如上所述――即便你不是該文件夾或文件的所有者。
注意:如果你所使用的發行版並不使用sudo,就要把上述指令改成如下:
1.打開終端窗口
2.執行命令su
3.鍵入你的根密碼,按回車鍵
4.執行命令nautilus。
在你完成這項任務之後,關閉Nautilus窗口,然後關閉終端窗口。
GUI:更改所有權
更改文件或文件夾的所有權常常需要使用管理員許可權。所以為此,你需要採用上面介紹的方法來啟動Nautilus。
想藉助Nautilus更改文件夾或文件的所有權,請採取下面這些步驟:
1.在藉助管理員許可權打開的Nautilus窗口中,找到相應的文件夾或文件
2.滑鼠右擊該文件夾(或文件)
3.點擊Permissions(許可權)選項卡
4.從Owner(所有者)下拉框中選擇新的所有者(見下圖)
5.點擊Close(關閉)。
就是這樣。現在,你藉助命令行或GUI,更改文件或文件夾的許可權或所有權時應該不會有任何問題了。使用用戶組讓你可以更改許可權和所有權,卻擁有更強大的功能和更高的安全性――我們以後會介紹這方面。現在,請享受更改文件和文件夾的便利吧!
5. mac 文件 的許可權問題
步驟如下:
1、快捷鍵 commond+shift+G,跳出前往文件夾的窗口,如下:
拓展資料:
Mac修改地址:
一、通用修改
需要根據MAC晶元型號聯系廠家拿到對應的固件刷寫工具,以及MAC地址文件,其中MAC地址是需要向IEEE聯盟購買有效段的,並是唯一的,如果出現重復的則會報IP地址重復的錯誤而導致相同MAC地址的計算機網路訪問異常 。
Unix/Linux 系統下修改MAC地址
進入保存MAC信息文件
圖形界面下Alt+Ctrl+Space →打開命令行終端→
方法1、輸入:ifconfig
方法2、輸入:ifconfig |grep "inet" |cut -c 0-36|sed -e 's/[a-zA-Z: ]//g'
方法3、輸入:hostname -i
方法4、輸入:netstat -r
方法5、輸入:cat /etc/resolv.conf→顯示相關網路數據
其中inet addr為ip地址,HWaddr是主機的HardwareAddress即MAC。
二、修改MAC
方法1、修改MAC的方法:在/etc/rc.d/init.d/中的network中加入ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx(MAC)然後重新啟動就會發現網卡地址已經是xxxxxxx了。
方法2、也可以將/sbin/ipconfig eth0 hw ether MACaddr加入到 /etc/rc.local中去。
資料來源: CSDN官網:《Mac 對系統文件的許可權設置》
網路:MAC (介質訪問控制層)
6. MAC command後綴文件運行提示沒有許可權
需要添加文件的可執行許可權,光有讀寫是不夠的。打開終端,輸入:
7. linux下使用./打開文件提示許可權不夠
linux下使用./打開文件提示許可權不夠是設置錯誤造成的,解決方法為:
1、首先打開Linux,進入界面。
8. linux文件許可權命令
有三種不同類型的用戶可對文件或目錄進行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創建者。所有者可以允許同組用戶有權訪問文件,還可以將文件的訪問許可權賦予系統中的其他用戶。在這種情況下,系統中每一位用戶都能訪問該用戶擁有的文件或目錄。
每一文件或目錄的訪問許可權都有三組,每組用三位表示,分別為文件屬主的讀、寫和執行許可權;與屬主同組的用戶的讀、寫和執行許可權;系統中其他用戶的讀、寫和執行許可權。當用ls -l命令顯示文件或目錄的詳細信息時,最左邊的一列為文件的訪問許可權。例如:
$ ls-l sobsrc.tgz
-rw-r--r--1root root483997Ju1l517:3lsobsrc.tgz
r(Read,讀取,許可權值為4):對文件而言,具有讀取文件內容的許可權;對目錄來說,具有瀏覽目 錄的許可權。
w(Write,寫入,許可權值為2):對文件而言,具有新增、修改文件內容的許可權;對目錄來說,具有刪除、移動目錄內文件的許可權。
x(eXecute,執行,許可權值為1):對文件而言,具有執行文件的許可權;對目錄了來說該用戶具有進入目錄的許可權。
u 表示「用戶(user)」,即文件或目錄的所有者。
g 表示「同組(group)用戶」,即與文件屬主有相同組ID的所有用戶。
o 表示「其他(others)用戶」。
a 表示「所有(all)用戶」。它是系統默認值。
+ 添加某個許可權。
– 取消某個許可權。
= 賦予給定許可權並取消其他所有許可權(如果有的話)。
設置mode所表示的許可權可用下述字母的任意組合:
r 可讀。
w 可寫。
x 可執行。
X 只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加x 屬性。
s 在文件執行時把進程的屬主或組ID置為該文件的文件屬主。方式「u+s」設置文件的用戶ID位,「g+s」設置組ID位。
t 保存程序的文本到交換設備上。
u 與文件屬主擁有一樣的許可權。
g 與和文件屬主同組的用戶擁有一樣的許可權。
o 與其他用戶擁有一樣的許可權。
-c:若該檔案許可權確實已經更改,才顯示其更改動作
-f:若該檔案許可權無法被更改也不要顯示錯誤訊息
-v:顯示許可權變更的詳細資料
-R:對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞回的方式逐個變更)
–help:顯示輔助說明
–version:顯示版本
$ chmod a+x sort
$ chmod ug+w,o-x text
$ chmod u+s a.out
–rws--x--x1inin users7192Nov414:22a.out
$ chmod a–x mm.txt
$ chmod–x mm.txt
$ chmod ugo–x mm.txt
$ chmod644mm.txt
$ ls–l
-rw-r--r--1inin users1155Nov511:22mm.txt
$ chmod750wch.txt
$ ls–l
-rwxr-x---1inin users44137Nov129:22wchtxt
-c或–changes 效果類似」-v」參數,但僅回報更改的部分。
-f或–quiet或–silent 不顯示錯誤信息。
-h或–no-dereference 只對符號連接的文件作修改,而不更動其他任何相關文件。
-R或–recursive 遞歸處理,將指定目錄下的所有文件及子目錄一並處理。
-v或–verbose 顯示指令執行過程。
–help 在線幫助。
–reference=<參考文件或目錄> 把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同。
–version 顯示版本信息。
$chgrp-R book/opt/local/book
user : 新的檔案擁有者的使用者 ID
group : 新的檔案擁有者的使用者群體(group)
-c : 若該檔案擁有者確實已經更改,才顯示其更改動作
-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)
–help : 顯示輔助說明
–version : 顯示版本
$chownyusi yusi123.com
$ chown-R yusi.users/demo
橫線代表空許可。r代表只讀,w代表寫,x代表可執行。注意這里共有10個位置。第一個字元指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第一個字元是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄。例如:
– rw- r– r–
普通文件 文件主 組用戶 其他用戶
是文件sobsrc.tgz 的訪問許可權,表示sobsrc.tgz是一個普通文件;sobsrc.tgz的屬主有讀寫許可權;與sobsrc.tgz屬主同組的用戶只有讀許可權;其他用戶也只有讀許可權。
確定了一個文件的訪問許可權後,用戶可以利用Linux系統提供的chmod命令來重新設定不同的訪問許可權。也可以利用chown命令來更改某個文件或目錄的所有者。利用chgrp命令來更改某個文件或目錄的用戶組。
下面分別對這些命令加以介紹。
chmod 命令
chmod命令是非常重要的,用於改變文件或目錄的訪問許可權。用戶用它控制文件或目錄的訪問許可權。
以主文件夾下的一個名為「cc」的文件夾為例。下面一步一步介紹如何修改許可權:
1.打開終端。輸入」su」(沒有引號)
2.接下來會要你輸入密碼,輸入你的root密碼。
3.假設我的文件夾在主目錄里,地址為 /var/home/dengchao/cc 。假設我要修改文件許可權為777,則在終端輸入 chmod 777 /var/home/userid/cc 文件夾的許可權就變為了777。
如果是修改文件夾及子文件夾許可權可以用 chmod -R 777 /var/home/userid/cc
具體的許可權(例如777的含意等)在下面解釋下:
1.777有3位,最高位7是設置文件所有者訪問許可權,第二位是設置群組訪問許可權,最低位是設置其他人訪問許可權。
其中每一位的許可權用數字來表示。具體有這些許可權:
2. 首先我們來看如何確定單獨一位上的許可權數值,例如最高位表示文件所有者許可權數值,當數字為7時,7用「rwx」表示 –{4(r)+2(w)+1(x)=7}–又如果數值為6,則用「rw-」表示–{4(r)+2(w)+0(x)=6}–,」-」表示不具備許可權,這里表 示不具備「執行」許可權。
假如我們設定其他用戶的訪問許可權為 「r–」,則數值為4+0+0=4
一開始許多初學者會被搞糊塗,其實很簡單,我們將rwx看成二進制數,如果有則用1表示,沒有則有0表示,那麼rwx則可以表示成為:111
而二進制的111就是7。
3.我們再來看下怎麼確定3個數位上的許可權。假如我們要給一個文件設置許可權,具體許可權如下:
文件所有者有「讀」、「寫」、「執行」許可權,群組用戶有「讀」許可權,其他用戶有「讀」許可權,則對應的字母表示為」rwx r– r–「,對應的數字為744
一般都是最高位表示文件所有者許可權值,第二位表示群組用戶許可權,最低位表示其他用戶許可權。
下面來舉些例子熟悉下。
許可權 數值
rwx rw- r– 764
rw- r– r– 644
rw- rw- r– 664
該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
1. 文字設定法
chmod [who] [+ | – | =] [mode] 文件名¼
命令中各選項的含義為:
操作對象who可是下述字母中的任一個或者它們的組合:
操作符號可以是:
文件名:以空格分開的要改變許可權的文件列表,支持通配符。在一個命令行中可給出多個許可權方式,其間用逗號隔開。例如:chmod g+r,o+r example使同組和其他用戶對文件example 有讀許可權。
例1:
即設定文件sort的屬性為:
文件屬主(u) 增加執行許可權
與文件屬主同組用戶(g) 增加執行許可權
其他用戶(o) 增加執行許可權
例2:
即設定文件text的屬性為:
文件屬主(u) 增加寫許可權
與文件屬主同組用戶(g) 增加寫許可權
其他用戶(o) 刪除執行許可權
例3:
假設執行chmod後a.out的許可權為(可以用ls – l a.out命令來看):
並且這個執行文件要用到一個文本文件shiyan1.c,其文件存取許可權為「–rw——-」,即該文件只有其屬主具有讀寫許可權。
當其他用戶執行a.out這個程序時,他的身份因這個程序暫時變成inin(由於chmod命令中使用了s選項),所以他就能夠讀取shiyan1.c這個文件(雖然這個文件被設定為其他人不具備任何許可權),這就是s的功能。
因此,在整個系統中特別是root本身,最好不要過多的設置這種類型的文件(除非必要)這樣可以保障系統的安全,避免因為某些程序的bug而使系統遭到入侵。
例4:
以上這三個命令都是將文件mm.txt的執行許可權刪除,它設定的對象為所有使用者。
2. 數字設定法
我們必須首先了解用數字表示的屬性的含義:0表示沒有許可權,1表示可執行許可權,2表示可寫許可權,4表示可讀許可權,然後將其相加。所以數字屬性的格式應為3個從0到7的八進制數,其順序是(u)(g)(o)。
例如,如果想讓某個文件的屬主有「讀/寫」二種許可權,需要把4(可讀)+2(可寫)=6(讀/寫)。
數字設定法的一般形式為:chmod [mode] 文件名¼
例1:
即設定文件mm.txt的屬性為:
文件屬主(u)inin 擁有讀、寫許可權
與文件屬主同組人用戶(g) 擁有讀許可權
其他人(o) 擁有讀許可權
例2:
即設定wchtxt這個文件的屬性為:
文件主本人(u)inin 可讀/可寫/可執行權
與文件主同組人(g) 可讀/可執行權
其他人(o) 沒有任何許可權
chgrp命令
功能:改變文件或目錄所屬的組。
語法:chgrp[選項] group filename¼
參數:
該命令改變指定指定文件所屬的用戶組。其中group可以是用戶組ID,也可以是/etc/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。
該命令的各選項含義為:
– R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。
例1:
改變/opt/local /book/及其子目錄下的所有文件的屬組為book。
chown命令
功能:更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶yusi,為了讓用戶yusi能夠存取這個文件,root用戶應該把這個文件的屬主設為yusi,否則,用戶yusi無法存取這個文件。
語法:chown[選項] 用戶或組 文件
說明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID。組可以是組名或組ID。文件是以空格分開的要改變許可權的文件列表,支持通配符。
參數說明:
例1:把文件yusi123.com的所有者改為yusi。
例2:把目錄/demo及其下的所有文件和子目錄的屬主改成yusi,屬組改成users。
例如:chown qq /home/qq (把home目錄下的qq目錄的擁有者改為qq用戶)
例如:chown -R qq /home/qq (把home目錄下的qq目錄下的所有子文件的擁有者改為qq用戶)
9. Linux操作系統文件訪問許可權詳解
一直以root登陸使用linux的人來說很少有許可權被拒這種概念,但某些時候又深受許可權拒絕困擾。
知道為什麼很多程序中需要使用getuid(),setuid()?為什麼以普通許可權登陸的用戶不能進入/root,為什麼在/目錄下執行ls -l後可以顯示root的信息,但ls /root -al卻是許可權不夠?為什麼有些文件夾可以繼續創建文件,但就是不能ls?等等,相信看了此文就能明白。
主要是學習筆記,不足之處請指正。
CentOS 5.4 [testc@xxx opt]$ uname -a Linux xxx 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux
一、口令文件1,格式存儲文件/etc/passwd,格式如下:root:x:0:0:root:/root:/bin/bash aaa:x:501:501:bj, bj, 8111111,136000111:/home/aaa:/bin/bash用戶名:加密密碼:用戶ID:組ID:注釋:工作目錄:shell:
默認情況是第一行的格式;注釋欄位可以自行修改,用逗號隔開,如第二行格式,這主要是給finger命令使用時可解析。
可以vi /etc/passwd修改,但為了保證其格式的正確性,請用vipw命令編譯此文件。
sh-3.2# finger aaa Login: aaa Name: bj Directory: /home/aaa Shell: /bin/bash Office: bj, 8111111 Home Phone: 136000111 Never logged in. No mail. No Plan.
2,編程實例
/*getpwnam_pwuid.c*/ #include #include #include
int main(void)
{ //struct passwd *pwd = getpwnam("aaa");struct passwd *pwd = getpwuid(501);if(pwd == NULL)
{ printf("err.\n");return 1;}
printf("name:%s\n", pwd->pw_name);printf("passwd:%s\n", pwd->pw_passwd);printf("description:%s\n", pwd->pw_gecos);printf("uid:%d\n", pwd->pw_uid);printf("gid:%d\n", pwd->pw_gid);printf("dir:%s\n", pwd->pw_dir);printf("shell:%s\n", pwd->pw_shell);
return 0;}
sh-3.2# gcc getpwnam_pwuid.c -o app sh-3.2# ./app name:aaa passwd:x description:bj, bj, 8111111,136000111 uid:501 gid:501 dir:/home/aaa shell:/bin/bash
二、組文件1,格式存儲文件/etc/group,格式如下root:x:0:root bin:x:1:root,bin,daemon aaa:x:501:組名:加密密碼:組ID:指向的各用戶名
2,改變文件uid和gid.
sh-3.2# pwd /root/study sh-3.2# ls -al -rw-r——r—— 1 root root 397 10-11 03:23 test.c
chgrp 改變所屬組ID,當然只有root許可權才可以修改。
sh-3.2# chgrp aaa test.c sh-3.2# ls -al -rw-r——r—— 1 root aaa 397 10-11 03:23 test.c
這個aaa就是新組名,其在/etc/group中,可以通過adser aaa自行添加sh-3.2# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon.
gdm:x:42:sabayon:x:86:plmtest:x:500:aaa:x:501:
chown 改變用戶ID或組ID sh-3.2# chown aaa:aaa test.c sh-3.2# ls -al -rw-r——r—— 1 aaa aaa 397 10-11 03:23 test.c
3,編程實例
/*getgrnam.c*/ #include #include
int main(int argc, char *argv[])
{ if(argv[1] == NULL)
{ printf("input error.\n");return 1;}
struct group *gp = getgrnam(argv[1]);if(gp == NULL)
{ printf("err.\n");return 1;}
printf("name:%s\n", gp->gr_name);printf("psswd:%s\n", gp->gr_passwd);printf("gid:%d\n", gp->gr_gid);
int i;for(i = 0; gp->gr_mem[i] != NULL; i++)
{ printf("group name:%s\n", gp->gr_mem[i]);}
return 0;}
sh-3.2# gcc getgrnam.c -o app sh-3.2# ./app bin name:bin psswd:x gid:1 group name:root group name:bin group name:daemon 4,文件許可權不細講了sh-3.2# ls -al總計 483984 drwxr-x—— 13 root root 4096 02-22 00:01 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
-rw-r——r—— 1 root root 464023491 10-25 22:33 3.3.005-080425.tgz -rw—— 1 root root 9346 02-21 23:16 .bash_history -rw-r——r—— 1 root root 24 2007-01-06 .bash_logout -rw-r——r—— 1 root root 191 2007-01-06 .bash_profile -rw-r——r—— 1 root root 176 2007-01-06 .bashrc drwxrwxrwx 10 1000 users 4096 08-23 20:16 cflow-1.3 -rw-r——r—— 1 root root 759691 08-23 20:13 cflow.tar.gz -rw-r——r—— 1 root root 100 2007-01-06 .cshrc -rwxr-xr-x 1 root root 582 11-11 21:48 delete_M.sh -rw-r——r—— 1 root root 2518 11-11 20:25 .dir_colors
主要是最左邊一列:drwxr-x——10個字元,最左邊是文件類型,-默認為普通文件;d:目錄文件;l符號鏈接……
後面9個,3個一組共三組,分別表示所屬用戶uid的許可權;所屬組或者附屬組gid的許可權;其它許可權。
三個字元分別是讀、寫、執行許可權讀4,寫2, 執行1
所以chmod 777 test.c,提升到讀、寫、執行許可權。
5,組許可權操作實例此節演示相同組的成員之間共享資源,即不同uid但相同gid的用戶共享同一組的資源。
為了方便起見,我同時開了兩個終端。
"sh-3.2#"以root許可權登陸的shell /bin/sh "[testa@xxx root]"以testa用戶登陸的shell
註:下文提到的「用戶」是指/etc/passwd里定義的通過終端登陸的用戶(此文即以下增加的三個賬號名)。
sh-3.2# useradd testa sh-3.2# useradd testb sh-3.2# useradd testc
sh-3.2# tail -f /etc/passwd -n 4 sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin testa:x:500:500::/home/testa:/bin/bash testb:x:501:501::/home/testb:/bin/bash testc:x:502:502::/home/testc:/bin/bash
再開一個終端登陸testa,之前那個終端保持。
sh-3.2# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa)
[testa@xxx home]$ ls -al總計 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
drwx—— 3 testa testa 4096 02-21 22:56 testa drwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc
[testa@xxx home]$ cd testb bash: cd: testb: 許可權不夠
通過root修改testb目錄許可權為770,即當前uid或者gid相同的用戶均有讀寫執行許可權。
sh-3.2# cd /home/ sh-3.2# chmod 770 testb
[testa@xxx home]$ ls -al總計 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb (here modify)
drwx—— 3 testc testc 4096 02-21 22:52 testc
[testa@xxx home]$ cd testb bash: cd: testb: 許可權不夠[testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa)
此時雖然開放了testb的所屬組許可權,但用戶testa的gid=500(testa) groups=500(testa),它還不屬於testb組。
下面修改testa的gid為testb(或者增加其附屬組groups值為testb)
sh-3.2# usermod -G testb testa (增加用戶testa的附屬組testb)
sh-3.2# id testa uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
此時testa終端需要重新登下,使剛才更改生效[testa@xxx root]$ exit exit [root@xxx ~]# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
[testa@xxx root]$ cd /home/ [testa@xxx home]$ ls -al總計 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc [testa@xxx home]$ cd testb [testa@xxx testb]$ pwd /home/testb
以上是增加了用戶testa的附屬組testb,使其對於屬於testb組的資源有了訪問許可權。
下面再使用newgrp切換用戶testa的gid.
[testa@xxx testb]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
[testa@xxx testb]$ newgrp testb [testa@xxx testb]$ id uid=500(testa) gid=501(testb) groups=500(testa),501(testb)
此時testa用戶的gid已改為501(testb)。
組之前的關系在文件/etc/group sh-3.2# tail -f /etc/group -n 4 sabayon:x:86:testa:x:500:testb:x:501:testa (最後一列:組內用戶列表。即組testb里包含testa,testa屬於testb組,大概就這意思吧……)
testc:x:502:
雖然知道控制組關系的文件,但不能直接修改些文件,否則執行newgrp時會出現"抱歉"錯誤提示。
當然root用戶許可權是無限制的,它訪問文件時不需要進行許可權檢查。
三、相關系統調用getuid();getgid();int setuid(uid_t uid);int setgid(gid_t gid);
只有超級用戶或者需要設置的uid和當前用戶的uid一致才可以設置,否則返回-1,置errno = EPERM, errno可以通過strerror()翻譯。
其它:[testa@xxx home]$ su testa [testa@xxx home]$ sudo touch aa
testa is not in the sudoers file. This incident will be reported.
以root許可權vim /etc/sudoers增加testa ALL=(ALL) ALL
參考:APUE2E,1.8, 4.4, 8.11
10. 在LINUX中如何用命令將某文件夾許可權設定為777
方法是:
1、首先打開軟體後點擊左邊的檔案,點擊十字。