linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...
問題:
我想執(zhí)行media文件夾下自己寫的某個(gè)程序,但無法執(zhí)行?
1. 于是我以root的身份在終端以輸入指令chmod a+x 1,回車后沒反應(yīng),查詢?cè)撐募A的屬性,也沒有改變,即修改權(quán)限無效。
2. 直接圖形界面進(jìn)入文件夾,打開文件屬性,屬性權(quán)限設(shè)置里面 執(zhí)行權(quán)限都不可選(勾選后自動(dòng)消失,即使使用ROOT權(quán)限同樣)
3. 而拷貝到linux分區(qū)(比如/tmp文件夾下)才可以正常執(zhí)行
pipi@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#g++ -o div divide.cpp
pipi@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#./div
bash: ./div: 權(quán)限不夠
pipi@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#ll div
-rw------- 1 pipi pipi 8522 Oct 2 00:43 div
pipi@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#chmod u+x div
pipi@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#ll div
-rw------- 1 pipi pipi 8522 Oct 2 00:43 div =>權(quán)限竟然沒變,依舊沒法執(zhí)行!!!media這個(gè)文件夾的所有者是root
root@ubuntu:/#ls -ld /media
drwxr-xr-x 5 root root 1024 Sep 29 00:08 /media
即當(dāng)插入一個(gè)windows分區(qū)格式的硬盤或者U盤時(shí),linux系統(tǒng)自動(dòng)掛載該移動(dòng)硬盤到/media目錄下,通過ls -al查看其權(quán)限,顯示為:drwx------,證明我們可以進(jìn)入到該盤符目錄,當(dāng)進(jìn)一步查看該盤符下的某可執(zhí)行文件的權(quán)限時(shí),就如上所說發(fā)現(xiàn)其為-rw-------,即可以對(duì)該文件進(jìn)行讀寫操作,但不能執(zhí)行該文件,通過chmod更改權(quán)限也無濟(jì)于事.
此時(shí)如何獲得執(zhí)行權(quán)限?(再比如在移動(dòng)硬盤上有一源代碼,通過編譯產(chǎn)生了目標(biāo)程序,但是當(dāng)通過./來執(zhí)行時(shí),卻告知沒有權(quán)限,同時(shí)sudo chmod +x也不起任何作用,在實(shí)際工作中遇到這樣的情況時(shí),一般可以通過將源碼拷貝到linux系統(tǒng)磁盤中進(jìn)行編譯或者將編譯好的目標(biāo)程序拷貝到linux系統(tǒng)的磁盤中再使用chmod更改權(quán)限來解決,但如果能直接讓linux系統(tǒng)掛載的移動(dòng)硬盤具有執(zhí)行權(quán)限就方便多了)
linux設(shè)備掛載
這一問題涉及到硬盤掛載,首先需要了解linux系統(tǒng)中與磁盤掛載相關(guān)的兩個(gè)系統(tǒng)文件。
/etc/fstab是系統(tǒng)分區(qū)信息以及系統(tǒng)啟動(dòng)時(shí)磁盤的掛載參數(shù),該文件是一個(gè)靜態(tài)文件(系統(tǒng)啟動(dòng)后不再改變,如人為改變,需要重啟系統(tǒng));
/etc/mtab是當(dāng)前系統(tǒng)中已經(jīng)掛載的磁盤列表,該文件是一個(gè)動(dòng)態(tài)文件,即隨系統(tǒng)mount和umount文件系統(tǒng)而隨時(shí)發(fā)生改變,例如當(dāng)插入U(xiǎn)盤時(shí),系統(tǒng)在mtab文件中寫入該磁盤的相關(guān)信息,當(dāng)拔下U盤時(shí),系統(tǒng)隨之刪除mtab文件中有關(guān)該磁盤的信息。
fstab文件內(nèi)容的格式如下:
# /etc/fstab: static file system information.
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
……
proc ? ? ? ? ? ? ? ? ? ? ? /proc ? ? ? ? ? ? ? ? ? proc ? ?nodev,noexec,nosuid ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? 0
……
mtab文件內(nèi)容的格式如下:
……
proc ? ? ? ? ? ? ? ? ? ? ? /proc ? ? ? ? ? ? ? ? ? ?proc ? rw,noexec,nosuid,nodev ? ? ? ? ?0 ? ? ? ? ? ? ? ? 0
……
root@ubuntu:~#cat /etc/mtab
/dev/loop0 / ext3 rw 0 0
...
/dev/sda1 /host fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0
gvfs-fuse-daemon /home/pipi/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=pipi 0 0
/dev/sda6 /media/000B089D0000696F fuseblk rw,nosuid,nodev,allow_other,default_permissions,blksize=4096 0 0 #小編windows分區(qū)下的c盤
fstab和mtab文件中的格式都是按照“設(shè)備名稱—掛載點(diǎn)—分區(qū)類型—掛載選項(xiàng)—dump選項(xiàng)—pass選項(xiàng)”的格式組織列表。[鳥哥的linux私房菜]
讓linux掛載的移動(dòng)硬盤具有執(zhí)行權(quán)限 1、設(shè)備名稱是指系統(tǒng)中設(shè)備的名稱,比如/dev/sda1或/etc/sdb1或/etc/sdc1等,這些設(shè)備名稱可以通過sudo fdisk -l命令來查看。
2、掛載點(diǎn)實(shí)際上就是為掛載磁盤創(chuàng)建的文件夾,比如./,./usr,和./swap這樣的系統(tǒng)默認(rèn)掛載點(diǎn),當(dāng)然我們可以自己使用mkdir創(chuàng)建一個(gè)文件夾作為掛載點(diǎn)。
3、分區(qū)類型在linux下面有ext2,ext3,ext4,jfs,jfs2,reiserfs,reiser4,swap等(在windows下面有FAT和NTFS等)。
4、常用的掛載選項(xiàng)包括:
(1)auto和noauto: auto允許系統(tǒng)自動(dòng)掛載或使用mount -a就能掛載,fstab默認(rèn)就是這個(gè)選項(xiàng) ;noauto使系統(tǒng)開機(jī)不自動(dòng)掛載 或使用mount -a時(shí)不掛載;
(2)rw和ro:rw表示以讀寫權(quán)限掛載該設(shè)備,ro表示以只讀權(quán)限掛載該設(shè)備;
(3)suid和nosuid:suid表示允許對(duì)該設(shè)備進(jìn)行uid和gid的設(shè)置操作,nosuid就是不允許設(shè)置uid和gid;
(4)dev和nodev:dev表示同時(shí)掛載文件系統(tǒng)上的特殊設(shè)備,nodev表示不掛載這些特殊設(shè)備;
(5)exc和noexc:exec表示允許執(zhí)行該文件系統(tǒng)下的二進(jìn)制文件,noexc當(dāng)然表示不允許執(zhí)行二進(jìn)制文件;
(6)user、nouser、users和owner:user允許指定的普通用戶掛載該設(shè)備,nouser表示禁止普通用戶掛載該設(shè)備(僅root可以掛載該設(shè)備),users表示允許所有普通用戶掛載該設(shè)備,owner表示僅設(shè)備所有者可以掛載。user和users選項(xiàng)同時(shí)隱含noexec,nosuid,nodev選項(xiàng);
(7)sync和asnyc:sync表示對(duì)該設(shè)備的I/O操作同步進(jìn)行,不進(jìn)行緩沖處理,而async表示不同步,進(jìn)行緩沖處理;
(8)defaults: 該選項(xiàng)是rw, suid, dev, exec, auto, nouser, and async這些選項(xiàng)的組合。
linux系統(tǒng)針對(duì)不同的文件系統(tǒng)還可以設(shè)定其他特別選項(xiàng):
對(duì)Windows下的NTFS文件系統(tǒng),可以設(shè)置utf8(表示采用UTF-8轉(zhuǎn)換文件名稱)、uid=****(掛載設(shè)備的指定用戶id,可以通過id命令或者查看/etc/passwd文件方式獲得)、gid=****(掛載設(shè)備的指定用戶群組id)和umask=***(掛載設(shè)備的權(quán)限屏蔽,八進(jìn)制數(shù)值)等。
對(duì)Windows下的FAT(包括msdos,umsdos,vfat等)文件系統(tǒng),可以設(shè)置uid=****,gid=****,umask=***,dmask=***(掛載設(shè)備時(shí)應(yīng)用于目錄的權(quán)限屏蔽,八進(jìn)制數(shù)值)和fmask=***(掛載設(shè)備時(shí)應(yīng)用于普通文件的權(quán)限屏蔽,八進(jìn)制數(shù)值)。更多掛載選項(xiàng)可以參見man mount。
5、dump選項(xiàng)用來設(shè)置是否讓備份程序dump備份文件系統(tǒng),0為不備份,1為備份,如果上次用dump備份,將顯示備份至今的天數(shù)。
6、pass選項(xiàng),告訴fsck程序在開機(jī)時(shí)以什么順序檢查文件系統(tǒng),為0就表示不檢查,(./)分區(qū)只能是1,其它的分區(qū)只能是2,當(dāng)數(shù)字相同就同時(shí)檢查。
linux用戶和群組以及權(quán)限
在linux下面掛載windows分區(qū)格式的移動(dòng)硬盤了,關(guān)鍵就是設(shè)置掛載選項(xiàng)從而獲得相應(yīng)權(quán)限。
當(dāng)掛載Windows分區(qū)格式的文件系統(tǒng)時(shí),我們可以通過uid=****,gid=****和umask=***/dmask=***/fmask=***來設(shè)置權(quán)限,uid和gid直接設(shè)置為自己的uid和gid就可以;
關(guān)于權(quán)限mask的設(shè)置采用數(shù)字式的,同樣第一個(gè)數(shù)字表示所有者的權(quán)限mask,第二個(gè)數(shù)字表示群組的權(quán)限mask,第三個(gè)數(shù)字表示其他用戶的權(quán)限mask,如果umask=000,就表示不屏蔽任何用戶的任何權(quán)限,即所有用戶具有讀、寫和執(zhí)行權(quán)限,再例如fmask=033,就表示文檔所有者具有讀、寫和執(zhí)行權(quán)限,而群組和其他用戶只具有讀取的權(quán)限。
問題解決方案
1.修改/etc/fstab(推薦)
可以在/etc/fstab中添加像下面這樣的掛載配置,并重啟系統(tǒng)讓系統(tǒng)掛載硬盤,從而獲得執(zhí)行權(quán)限。 # ?????????????????????????????? ??????????????? ???????????????????????????????????????????? ?
/dev/sdb6???????? /media/sdb6????????????????????????????????????? ntfs?????? utf8,uid=1000,gid=1000, umask=000????????????????? 0???????????? 0
/dev/sda6???????? /media/E ?????? ntfs?????? utf8,uid=1000,gid=1000,fmask=033??????????????????? 0???????????? 0??????? (小編的系統(tǒng)這么修改的,可先掛載windows分區(qū),再通過df -h查詢windows分區(qū)的掛載具體情況)
萬一在fstab中修改有誤,導(dǎo)致開機(jī)失敗,可以按屏幕提示按s鍵就可以了,進(jìn)入系統(tǒng)后修改好fstab
或者按m鍵進(jìn)入單用戶維護(hù)模式,修改fstab,輸入restart重啟就可以進(jìn)入系統(tǒng)了
解決之后的情況(具有執(zhí)行權(quán)限了,并且可以執(zhí)行):
root@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#ls -l div
-rwxr--r-- 1 pipi pipi 8522 Oct 2 00:43 div
root@ubuntu:/media/000B089D0000696F/mine/C++/POJ/POJ/BOP#./div
2 13 5 6 4 9 0 98 0 0 1 6 2 3 2 4 0 49 0 0
2.使用mount解決
umount /media/...
mount -o rw /dev/sda7 /media
3.專用分區(qū)
雙系統(tǒng)中可以先裝windows。在里邊分好區(qū),然后專門給linux留一個(gè)32G的fat32分區(qū),免得和ntfs打交道。
把經(jīng)常用的東西放fat32,這樣保證你什么時(shí)候都能用。
把windows下常用但linux不用的放ntfs。把linux常用但windows不用的放到linux自己的分區(qū)。
4.圖形界面以root登陸(ubuntu 12.04下親測(cè)無效)
ps:
media文件夾下很多文件只讀的原因:
只讀的原因是win8的快速重啟技術(shù)開啟后進(jìn)入其它系統(tǒng)對(duì)該分區(qū)進(jìn)行寫操作會(huì)導(dǎo)致數(shù)據(jù)丟失 所以ntfs-3g(linux上的ntfs支持模塊)默認(rèn)禁止對(duì)ntfs寫操作。如果ntfs系統(tǒng)中不能讀寫,沒法兒更改里邊的文件屬性。
另外/下的文件夾切忌修改權(quán)限
由于掛載的分區(qū)是ntfs的所以不能按照linux的權(quán)限方式修改,目前看到的權(quán)限是mount時(shí)賦予的。
mount 簡(jiǎn)單用法:
需要root權(quán)限
mount 分區(qū) 掛載點(diǎn)
分區(qū):類似/dev/sda1之類
掛載點(diǎn):目的文件夾,最好是空的
例:把第一分區(qū)(sda1)掛載到/home/xxx/a
mount /dev/sda1 /home/xxx/a
卸載只需 umount 掛載點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件系统中文件基本权限,Lin
- 下一篇: 定时从linux获取文件,Linux 使