#! /usr/bin/perl
######################################################################
# 臥龍小三大量刪除帳號工具 Version 1.0.1 [for RedHat Linux] #
# Copyright 1999 OLS3 mskuo@ms9.hinet.net #
# 程式名稱: ols3delact.pl 及 ols3scandir.pl [臥龍小三工具箱系列] #
# 初版 11/01/99 最後修改日期 11/23/99 #
# 發行站台: http://www.ols3-cgi.com/ 臥龍小三CGI天堂 #
######################################################################
# 版權宣告: #
# Copyright 1999 OLS3 All Rights Reserved. #
# 本工具程式意旨供 RedHat Linux 愛好者使用, #
# 願以 GPL (GNU General Public Licence) 發行. #
######################################################################
# 注意事項: #
# 您必須審慎評估使用本程式是否會對您的軟硬體造成損害,若有任何意 #
# 外,本人不負任何責任。(換言之, 使用本程式要有不怕死的精神! ^_^) #
######################################################################
# 使用方法: #
# 1. 以 root 身份登入主機, 然後將程式放入 /root 中, 並給予執行權! #
# 如下所示: #
# chmod u+x ols3scandir.pl 及 chmod u+x ols3delact.pl #
# #
# 2. 執行 ./ols3scandir.pl /home ? #
# #
# 這個步驟用來掃瞄 /home 之下有那些帳號目錄, 如果, 您的主機中, 帳號 #
# 是建置於 /home/users, 那麼, 就要執行 ./ols3scandir.pl /home/users #
# #
# 之後, 它會將帳號目錄名稱寫入 dir_list 這個記錄檔中, 您可以用 vi 來 #
# 編輯它, 將不想要刪除的帳號名稱去除. #
# #
# 3. 執行 ./ols3delact.pl , 即可刪除大量帳號.(根據 dir_list 的記錄) #
# #
# 本程式會保護: /home/ftp, /home/httpd, /home/lost+found, /home/adm #
# /home/webadm, /home/webmaster 等目錄及帳號, 不會予以刪除. #
# #
# 本程式完成以下幾件事: #
# a. 刪除自家目錄(Home Directory) #
# b. 備份 /etc/passwd , /etc/shadow 及 /etc/group #
# c. 將帳號自 /etc/passwd , /etc/shadow, /etc/group 去除. #
# #
# 注意: 各個帳號的信包 "/var/spool/mail/帳號", 並沒有刪除! #
# 一般而言, 新建的帳號大都沒有信包檔. 如果您要此一功能, 請自行增添. #
# #
# 4. 本程式自動幫您備份 /etc/passwd, /etc/shadow, /etc/group #
# #
# 備份檔名格式為: #
# /etc/passwd-YYYYMMDDhhmmss 及 /etc/shadow-YYYYMMDDhhmmss #
# (如:/etc/passwd-19991101093217 /etc/shadow-19991101093217) #
######################################################################
use strict;
my $dir=$ARGV[0];
if (!$ARGV[0]) {
print "Hey! Notice!\n";
print "*** Usage: ./scandir.pl Directory\n";
print "*** Example: ./scandir.pl /home\n";
exit;
}
opendir (DIR, $dir) || die "$!\n";
my @file=readdir(DIR);
closedir(DIR);
open(FHD, "> dir_list") || die "$!\n";
my $file;
foreach $file (@file) {
unless (($file eq '.')||($file eq '..')) {
if (-d "$dir/$file") {print FHD "$dir/$file\n";}
}
}
close(FHD);
print qq(Please check the file: "dir_list"\n);
print qq(and run ./delact.pl\n); |