Ruby操作文件權限技巧分享
Ruby語言雖然是一個比較新型的語言,但是其靈活性易操作性使得這款解釋型腳本語言的應用范圍非常廣泛。那么今天我們就為大家介紹有關Ruby操作文件權限的一些技巧。#t#
為了得到一個文件的權限和所有者,我們能夠是用File的uid和gid方法來實現(xiàn)Ruby操作文件權限:
- data = File.stat("somefile")
- owner_id = data.uid
- group_id = data.gid
類File::Stat 有一個實力方法mode,它返回文件的權限:
- perms = File.stat
("somefile").mode
File的chown方法能夠改變一個文件的擁有者和組id:
- uid = 201
- gid = 10
- File.chown(uid,
gid, "alpha", "beta")- f1 = File.new("delta")
- f1.chown(uid, gid)
- f2 = File.new("gamma")
- f2.chown(nil, gid) #
Keep original owner id
chmod 方法能夠改變一個文件的權限:
- File.chmod(0644,
"epsilon", "theta")- f = File.new("eta")
- f.chmod(0444)
我們經常需要知道某個文件,我們是否有讀或者寫的權限,我們可以使用File::Stat類的一些Ruby操作文件權限實例方法:
- info = File.stat("
/tmp/secrets")- rflag = info.readable?
- wflag = info.writable?
- xflag = info.executable?
有時我們需要區(qū)分有效的用戶id,和實際的用戶id,我們可以使用readable_real?, writable_real?, 和 executable_real?:
- info = File.stat("/tmp/secrets")
- rflag2 = info.readable_real?
- wflag2 = info.writable_real?
- xflag2 = info.executable_real?
可以通過比較當前進程的有效用戶ID(和組ID)來測試文件的所有權,File::Stat類有實例方法 owned?和grpowned?
注意這些Ruby操作文件權限方法,很多在FileTest里面也有:
- rflag = FileTest::readable?
("pentagon_files")- # Other methods are:
writable? executable? readable_real?- writable_real?
- # executable_real? owned? grpowned?
- # Not found here: uid gid mode
和進程聯(lián)系在一起的umask方法決定了一個新的文件的初始權限.(unmask的具體含義去網上搜索搜索就有了).
可以通過File的類方法unmask方法來獲取umask。如果指定一個參數(shù),則umask將會被設置為這個,并且將會返回原來的umask:
- File.umask(0237) #
Set the umask- current_umask =
File.umask# 0237
以上就是全部全部Ruby操作文件權限的技巧方法介紹。