(使用这个技巧,并没有起作用)
将我的 ubuntu 从 16.04 重新安装到 14.04 后。我的 C 程序无法执行。我的用户名相同。
我用过了:
chmod +x ./hello
chmod -R 775 hello
我仍然得到:
bash: ./hello: Permission denied
我使用 GUI,勾选执行或更改权限组或类型,几秒钟后它突然恢复。但我可以读取和写入其中的每个文件,当我再次编译它然后执行时,它总是不起作用。
我该如何解决?
(阅读了许多其他问题,但对我来说仍然不起作用..)
$ ls -l
total 160
-rw------- 1 reigin reigin 1323 Agu 31 07:14 bentuk.class
-rw------- 1 reigin reigin 2438 Agu 31 07:14 bentuk.java
-rw------- 1 reigin reigin 1290 Sep 1 04:16 bentukq.class
-rw------- 1 reigin reigin 2183 Sep 1 04:16 bentukq.java
-rw------- 1 reigin reigin 644 Agu 29 05:09 deret.class
-rw------- 1 reigin reigin 841 Agu 29 05:09 deret.java
-rw------- 1 reigin reigin 1471 Agu 27 04:30 Fkonversi.class
-rw------- 1 reigin reigin 8519 Sep 20 14:44 hello
-rw------- 1 reigin reigin 264 Sep 20 09:06 hello.c
-rw------- 1 reigin reigin 262 Agu 25 23:52 hello.c~
-rw------- 1 reigin reigin 417 Agu 26 00:00 hello.class
-rw------- 1 reigin reigin 281 Agu 26 00:00 hello.java
-rw------- 1 reigin reigin 182 Sep 1 18:13 HelloWorld.java
-rw------- 1 reigin reigin 8612 Agu 26 01:20 jumlah
-rw------- 1 reigin reigin 484 Agu 26 01:20 jumlah.c
-rw------- 1 reigin reigin 557 Agu 27 05:43 jumlah.class
-rw------- 1 reigin reigin 645 Agu 26 00:22 jumlah.java
drwx------ 1 reigin reigin 4096 Sep 17 12:46 lat2
drwx------ 1 reigin reigin 4096 Sep 17 12:46 lat3
-rw------- 1 reigin reigin 8517 Sep 20 09:23 new
-rw------- 1 reigin reigin 250 Sep 20 09:23 new.c
-rw------- 1 reigin reigin 25424 Agu 31 07:18 noted.txt
drwx------ 1 reigin reigin 4096 Sep 20 11:42 ong
-rw------- 1 reigin reigin 1006 Agu 31 06:16 suhu.class
-rw------- 1 reigin reigin 1354 Agu 31 06:15 suhu.java
drwx------ 1 reigin reigin 0 Sep 17 12:46 suhuu
-rw------- 1 reigin reigin 645 Agu 26 10:17 terbesar.class
-rw------- 1 reigin reigin 865 Agu 26 01:29 terbesar.java
-rw------- 1 reigin reigin 8664 Sep 1 11:24 test
-rw------- 1 reigin reigin 266 Sep 1 11:24 test.c
-rw------- 1 reigin reigin 8758 Agu 29 03:36 tigainteger
-rw------- 1 reigin reigin 2343 Agu 29 03:30 tigainteger_.c
-rw------- 1 reigin reigin 2345 Agu 29 03:34 tigainteger.c
-rw------- 1 reigin reigin 1184 Agu 27 13:46 tigainteger.class
-rw------- 1 reigin reigin 2776 Agu 27 13:09 tigainteger.java
grep
结果 :
# mount | grep 'on /media
/dev/sda7 on /media/reigin/data type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
答案1
这里的问题是文件系统是 NTFS,不支持 Unix 权限。您需要使用 选项fmask
,mount
该选项在挂载驱动器时设置挂载驱动器上所有文件的权限。
请注意,您需要具有 root 权限才能使这些命令运行。
首先,如果需要,卸载驱动器:
umount /dev/sda7
如果它给出如下错误:
umount: /dev/sda7: not mounted
忽略它。
接下来,创建一个目录作为挂载点:
mkdir -p /media/reigin/data
最后,挂载驱动器:
mount -o fmask=0022 /dev/sda7 /media/reigin/data
这将为755
驱动器上的每个文件分配权限(但目录仍将具有默认权限)。请注意,这不是永久性的;每次安装驱动器时都必须执行此操作。