ruby-on-rails - Ruby寫檔案遇到的問題
天蓬老师
天蓬老师 2017-04-21 11:15:21
0
0
694

我使用resque運行一個worker, 這個worker使用Ruby的File類寫文件,非常簡單。

但是遇到一個奇怪問題,在ubuntu下寫文件一直不成功,出現了Permission denied錯誤

resque進程如下

$  ps -ef | grep resque
grant   5868     1  0 15:02 ?        00:00:00 /bin/sh -l -c . 
/etc/environment && cd /home/grant/test/current; nohup bundle exec rake 
environment resque:work RAILS_ENV=production QUEUE=* VERBOSE=1 
PIDFILE=tmp/pids/resque-worker.pid

grant   5871  5868  0 15:02 ?        00:00:28 resque-1.24.1: Waiting for *

被寫的文件權限

$ ls -l test.txt
-rw-rw-r-- 1 jack jack 21931 Jun 25 16:46 text.txt

grant用戶權限,他已經屬於jack用戶組了

$ groups grant
grant : jack  grant

如果在用grant用戶直接編輯這個test.txt是可以編輯的

我後來將文件權限改成666,就寫成功了,後來裝了個auditd來確認下到底是誰寫的。

$ sudo ausearch -k test-file-changed | tail -1
type=SYSCALL msg=audit(1372321822.380:6): arch=40000003 syscall=5 
success=yes exit=15 a0=facbae40 a1=88241 a2=1b6 a3=0 items=3 ppid=20992 
pid=26087 auid=4294967295 uid=1008 gid=1009 euid=1008 suid=1008 fsuid=1008 
egid=1009 sgid=1009 fsgid=1009 ses=4294967295 tty=(none) comm="ruby" 
exe="/usr/local/bin/ruby" key="test-file-changed"

uid = 1008 是 grant gid = 1009 是 grant

我懷疑是不是因為這個gid是grant的原因導致的呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(0)
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板