linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...
問(wèn)題:
我想執(zhí)行media文件夾下自己寫(xiě)的某個(gè)程序,但無(wú)法執(zhí)行?
1. 于是我以root的身份在終端以輸入指令chmod a+x 1,回車(chē)后沒(méi)反應(yīng),查詢(xún)?cè)撐募A的屬性,也沒(méi)有改變,即修改權(quán)限無(wú)效。
2. 直接圖形界面進(jìn)入文件夾,打開(kāi)文件屬性,屬性權(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)限竟然沒(méi)變,依舊沒(méi)法執(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ū)格式的硬盤(pán)或者U盤(pán)時(shí),linux系統(tǒng)自動(dòng)掛載該移動(dòng)硬盤(pán)到/media目錄下,通過(guò)ls -al查看其權(quán)限,顯示為:drwx------,證明我們可以進(jìn)入到該盤(pán)符目錄,當(dāng)進(jìn)一步查看該盤(pán)符下的某可執(zhí)行文件的權(quán)限時(shí),就如上所說(shuō)發(fā)現(xiàn)其為-rw-------,即可以對(duì)該文件進(jìn)行讀寫(xiě)操作,但不能執(zhí)行該文件,通過(guò)chmod更改權(quán)限也無(wú)濟(jì)于事.
此時(shí)如何獲得執(zhí)行權(quán)限?(再比如在移動(dòng)硬盤(pán)上有一源代碼,通過(guò)編譯產(chǎn)生了目標(biāo)程序,但是當(dāng)通過(guò)./來(lái)執(zhí)行時(shí),卻告知沒(méi)有權(quán)限,同時(shí)sudo chmod +x也不起任何作用,在實(shí)際工作中遇到這樣的情況時(shí),一般可以通過(guò)將源碼拷貝到linux系統(tǒng)磁盤(pán)中進(jìn)行編譯或者將編譯好的目標(biāo)程序拷貝到linux系統(tǒng)的磁盤(pán)中再使用chmod更改權(quán)限來(lái)解決,但如果能直接讓linux系統(tǒng)掛載的移動(dòng)硬盤(pán)具有執(zhí)行權(quán)限就方便多了)
linux設(shè)備掛載
這一問(wèn)題涉及到硬盤(pán)掛載,首先需要了解linux系統(tǒng)中與磁盤(pán)掛載相關(guān)的兩個(gè)系統(tǒng)文件。
/etc/fstab是系統(tǒng)分區(qū)信息以及系統(tǒng)啟動(dòng)時(shí)磁盤(pán)的掛載參數(shù),該文件是一個(gè)靜態(tài)文件(系統(tǒng)啟動(dòng)后不再改變,如人為改變,需要重啟系統(tǒng));
/etc/mtab是當(dāng)前系統(tǒng)中已經(jīng)掛載的磁盤(pán)列表,該文件是一個(gè)動(dòng)態(tài)文件,即隨系統(tǒng)mount和umount文件系統(tǒng)而隨時(shí)發(fā)生改變,例如當(dāng)插入U(xiǎn)盤(pán)時(shí),系統(tǒng)在mtab文件中寫(xiě)入該磁盤(pán)的相關(guān)信息,當(dāng)拔下U盤(pán)時(shí),系統(tǒng)隨之刪除mtab文件中有關(guān)該磁盤(pá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盤(pán)
fstab和mtab文件中的格式都是按照“設(shè)備名稱(chēng)—掛載點(diǎn)—分區(qū)類(lèi)型—掛載選項(xiàng)—dump選項(xiàng)—pass選項(xiàng)”的格式組織列表。[鳥(niǎo)哥的linux私房菜]
讓linux掛載的移動(dòng)硬盤(pán)具有執(zhí)行權(quán)限 1、設(shè)備名稱(chēng)是指系統(tǒng)中設(shè)備的名稱(chēng),比如/dev/sda1或/etc/sdb1或/etc/sdc1等,這些設(shè)備名稱(chēng)可以通過(guò)sudo fdisk -l命令來(lái)查看。
2、掛載點(diǎn)實(shí)際上就是為掛載磁盤(pán)創(chuàng)建的文件夾,比如./,./usr,和./swap這樣的系統(tǒng)默認(rèn)掛載點(diǎn),當(dāng)然我們可以自己使用mkdir創(chuàng)建一個(gè)文件夾作為掛載點(diǎn)。
3、分區(qū)類(lèi)型在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)開(kāi)機(jī)不自動(dòng)掛載 或使用mount -a時(shí)不掛載;
(2)rw和ro:rw表示以讀寫(xiě)權(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允許指定的普通用戶(hù)掛載該設(shè)備,nouser表示禁止普通用戶(hù)掛載該設(shè)備(僅root可以掛載該設(shè)備),users表示允許所有普通用戶(hù)掛載該設(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)換文件名稱(chēng))、uid=****(掛載設(shè)備的指定用戶(hù)id,可以通過(guò)id命令或者查看/etc/passwd文件方式獲得)、gid=****(掛載設(shè)備的指定用戶(hù)群組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)可以參見(jiàn)man mount。
5、dump選項(xiàng)用來(lái)設(shè)置是否讓備份程序dump備份文件系統(tǒng),0為不備份,1為備份,如果上次用dump備份,將顯示備份至今的天數(shù)。
6、pass選項(xiàng),告訴fsck程序在開(kāi)機(jī)時(shí)以什么順序檢查文件系統(tǒng),為0就表示不檢查,(./)分區(qū)只能是1,其它的分區(qū)只能是2,當(dāng)數(shù)字相同就同時(shí)檢查。
linux用戶(hù)和群組以及權(quán)限
在linux下面掛載windows分區(qū)格式的移動(dòng)硬盤(pán)了,關(guān)鍵就是設(shè)置掛載選項(xiàng)從而獲得相應(yīng)權(quán)限。
當(dāng)掛載Windows分區(qū)格式的文件系統(tǒng)時(shí),我們可以通過(guò)uid=****,gid=****和umask=***/dmask=***/fmask=***來(lái)設(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ù)字表示其他用戶(hù)的權(quán)限mask,如果umask=000,就表示不屏蔽任何用戶(hù)的任何權(quán)限,即所有用戶(hù)具有讀、寫(xiě)和執(zhí)行權(quán)限,再例如fmask=033,就表示文檔所有者具有讀、寫(xiě)和執(zhí)行權(quán)限,而群組和其他用戶(hù)只具有讀取的權(quán)限。
問(wèn)題解決方案
1.修改/etc/fstab(推薦)
可以在/etc/fstab中添加像下面這樣的掛載配置,并重啟系統(tǒng)讓系統(tǒng)掛載硬盤(pán),從而獲得執(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ū),再通過(guò)df -h查詢(xún)windows分區(qū)的掛載具體情況)
萬(wàn)一在fstab中修改有誤,導(dǎo)致開(kāi)機(jī)失敗,可以按屏幕提示按s鍵就可以了,進(jìn)入系統(tǒng)后修改好fstab
或者按m鍵進(jìn)入單用戶(hù)維護(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.專(zhuān)用分區(qū)
雙系統(tǒng)中可以先裝windows。在里邊分好區(qū),然后專(zhuān)門(mén)給linux留一個(gè)32G的fat32分區(qū),免得和ntfs打交道。
把經(jīng)常用的東西放fat32,這樣保證你什么時(shí)候都能用。
把windows下常用但linux不用的放ntfs。把linux常用但windows不用的放到linux自己的分區(qū)。
4.圖形界面以root登陸(ubuntu 12.04下親測(cè)無(wú)效)
ps:
media文件夾下很多文件只讀的原因:
只讀的原因是win8的快速重啟技術(shù)開(kāi)啟后進(jìn)入其它系統(tǒng)對(duì)該分區(qū)進(jìn)行寫(xiě)操作會(huì)導(dǎo)致數(shù)據(jù)丟失 所以ntfs-3g(linux上的ntfs支持模塊)默認(rèn)禁止對(duì)ntfs寫(xiě)操作。如果ntfs系統(tǒng)中不能讀寫(xiě),沒(méi)法兒更改里邊的文件屬性。
另外/下的文件夾切忌修改權(quán)限
由于掛載的分區(qū)是ntfs的所以不能按照l(shuí)inux的權(quán)限方式修改,目前看到的權(quán)限是mount時(shí)賦予的。
mount 簡(jiǎn)單用法:
需要root權(quán)限
mount 分區(qū) 掛載點(diǎn)
分區(qū):類(lèi)似/dev/sda1之類(lèi)
掛載點(diǎn):目的文件夾,最好是空的
例:把第一分區(qū)(sda1)掛載到/home/xxx/a
mount /dev/sda1 /home/xxx/a
卸載只需 umount 掛載點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux文件系统中文件基本权限,Lin
- 下一篇: 定时从linux获取文件,Linux 使