Linux 关于文件权限问题

runup · 2016年07月20日 · 最后由 runup 回复于 2016年07月21日 · 7399 次阅读

在看 the linux command,里面提到的设置文件的默认权限 umask 在 ubuntu 默认情况下

umask #0002,即文件为 -rw-rw-r--

按照我对文章的理解,默认情况下新建立的文件,文件所有者具有 r,w 权限,但是没有 x 权限。 因此在不改变 umask 值的情况下,进行如下操作:

touch demo.rb  #demo.rb中内容为puts "hello world"
ls -l demo.rb  #-rw-rw-r--

终端下执行文件,此时用户为文件所有者

ruby demo.rb  # "hello world"

问题:既然文件所有者不具备“x”,即执行权限,那么我在终端下为何能运行文件成功,还是说我漏了一些知识点?

你执行的是 ruby 后面的文件是个参数

#1 楼 @xworm 就是说,ruby demo.rb 不代表文件是可执行文件?

demo.rb

#!/usr/bin/env ruby
puts 'hello world'

执行

$ ./demo.rb  # -rw-r--r--
-bash: ./demo.rb: Permission denied

$ chmod u+x demo.rb  # -rwxr--r--
$ ./demo.rb    # 此时 demo.rb 才是可执行文件
hello world

这样应该能看明白了吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号