我想$dir
和它下面的所有內容都是隻讀的。我怎樣才能使用Perl來設置?如何使用Perl遞歸設置只讀權限?
3
A
回答
9
你可以用File::Find和chmod組合(見perldoc -f chmod)做到這一點:
use File::Find;
sub wanted
{
my $perm = -d $File::Find::name ? 0555 : 0444;
chmod $perm, $File::Find::name;
}
find(\&wanted, $dir);
1
未經測試,但它應該工作。請注意您的目錄本身必須保持可執行
set_perms($dir);
sub set_perms {
my $dir = shift;
opendir(my $dh, $dir) or die $!;
while((my $entry = readdir($dh)) != undef) {
next if $entry =~ /^\.\.?$/;
if(-d "$dir/$entry") {
set_perms("$dir/$entry");
chmod(0555, "$dir/$entry");
}
else {
chmod(0444, "$dir/$entry");
}
}
closedir($dh);
}
當然,你可以從Perl中執行shell命令,以及:
system("find $dir -type f | xargs chmod 444");
system("find $dir -type d | xargs chmod 555");
我用xargs的情況下,你有很多條目。
3
system("chmod", "--recursive", "a-w", $dir) == 0
or warn "$0: chmod exited " . ($? >> 8);
相關問題
- 1. 遞歸設置NTFS權限
- 2. 如何從Perl設置文件權限?
- 3. 使用ICACLS將文件權限設置爲'只讀'
- 4. 如何設置Word文檔的只讀權限?
- 5. 設置TeamCity的權限只
- 6. 如何爲使用java的文件設置只讀訪問權限
- 7. 快遞JWT權限:如何設置權限?
- 8. 的Bugzilla:設置權限,以使產品只讀了
- 9. 與只讀權限
- 10. 設置遞歸調用數限制 - Java
- 11. perl遞歸文件讀取
- 12. 使用vbscript設置權限
- 13. 使用IIS刪除只讀權限
- 14. 遞歸地設置所有文件和文件夾的權限
- 15. 什麼是遞歸設置文件權限的Python方式?
- 16. 如何使用NSFileManager遞歸地更改目錄的權限setAttributes
- 17. 的SharePoint:如何設置大多數用戶只讀破碎的權限
- 18. 如何在ios上設置FBLoginview的用戶讀取權限?
- 19. 在AlwaysOn環境中設置Crystal Report的只讀訪問權限
- 20. SQL Server只讀權限
- 21. 具有隻讀權限
- 22. Team Foundation Server只讀權限?
- 23. 授予只讀權限
- 24. 設置權限
- 25. 如何設置設備庫的權限?
- 26. 如何遞歸設置所有的權限來使用PHP的FTP服務器上創建新的文件夾?
- 27. 在Perl中以遞歸方式遞歸讀取文件
- 28. 如何只允許管理員設置管理員權限?
- 29. 如何設置.key文件的權限只能由nginx訪問
- 30. CKAN設置用戶權限
使用這一個。比我的好。 – Cfreak 2010-09-17 19:32:11
應該是:chmod 0555,$ File :: Find :: name; – 2011-12-20 17:31:52
這會將目錄和文件都設置爲555.儘管對於某個目錄而言沒有問題,但您可能不希望所有文件都可執行。我想我會嘗試其他答案之一的shell命令。 – Jistanidiot 2012-10-08 14:57:17