存档

‘科技’ 分类的存档

/etc/fstab & mount options

2006年10月22日 没有评论

Information about the local and remotely mounted file systems is stored in/etc/fstab. Each file system is described on a separate line. Each line is composed of multiple fields, each separated by spaces or tabs. When your system boots, it processes each file system in the order listed.

A sample /etc/fstab might look like the following:

/dev/hda1 / ext2 defaults 1 1
/dev/hda2 swap swap defaults 0 0
/dev/hda5 /usr ext2 defaults 1 2
/dev/hda7 /tmp ext2 defaults 1 2
/dev/hda8 /var ext2 defaults 1 2
/dev/hda9 /home ext2 defaults 1 2
/dev/hdc /cdrom iso9660 ro,noauto,user 0 0
none /proc proc defaults 0 0

Field Name Description
——————————-
fs_spec: Describes the block device or remote file system to be mounted.
fs_file: Describes the mount point (the directory the file system will be mounted as). For swap partitions, this should be “none.”
fs_vfstype: Describes the file system type. Valid file system types are minix, ext, ext2, xiafs, msdos, hpfs, iso9660, nfs, and swap. This field can also be set to “ignore,” which will cause the system to ignore the entry. Ignoring an entry is useful for marking unused partitions.
fs_mntops: Mount options. Specifies mounting options. Mount options are covered later in this section.
fs_freq: Used by the dump(8) command to determine which file systems need to be dumped. A value of 0 indicates that the file system does not need to bedumped.
fs_passno: Used by the fsck(8) program to determine the order in which filesystems are checked upon boot. The root file system should have an fs_passno setting of 1, and other local file systems should have an fs_passno of 2. Remote file systems should have an fs_passno of 0, which indicates they should not be checked on boot.

Mount Options

Although most file systems in /etc/fstab are given the mount option of Default, there are other options you can use. Options are listed in /etc/fstab, and are separated by commas (no spaces or tabs).

Mount Option Description
—————————-
async: I/O is done asynchronously to this file system.
atime: Timestamps for each inode are updated when accessed.
auto: Can be mounted with the -a option of the mount(8) command.
defaults: Use the default mount options: rw, suid, dev, exec, auto, nouser,and async.
dev: Interpret character or block special devices on the file system.
exec: Allow binaries (programs) to be executed on this file system.
noatime: Timestamps for each inode are not updated when accessed.
noauto: Cannot be mounted with the -a option of the mount(8) command (it must be mounted explicitly).
nodev: Do not interpret character or block special devices on the file system.
noexec: Do not allow binaries (programs) to be executed on this file system.
nosuid: Do not allow setuid or setgid permissions on programs to take effect.
nouser: Do not allow nonroot users to mount this file system.
remount: Attempt to remount a file system that has already been mounted. This is typically used to change mount options, and is only used by the mount(8) command (never used in /etc/mnttab).
ro: Mount the file system as read-only.
rw: Mount the file system as read-write.
suid: Allow setuid or setgid permissions on programs to take effect.
sync: I/O is done synchronously to this file system.
user: Allow nonroot users to mount this file system. This option also sets the noexec, nosuid, and nodev options, unless overridden.

分类: 科技 标签:

Fix P1 bug in AA system

2006年10月18日 没有评论

It took me about two days on fixing a P1 bug in AA system. I did not debug programs before, especally the AA is a very large program. In the fixing process, I stared on the code, and asked for help from other engineers, try to add debug information into code. Though I failed again and again, but I feel it was more nearly to the success, because, at least I known what would happen and who could make effect through all the failure.

First, know the actual factor the debugs describes, you’d better do it by yourself, it would be very benifit for your understanding the trouble. Second, try to locate which program would be the target debuged, in this case, Bruce told me to focus on “/bin/SYS_INSTALLSTARTOS”, and thanks for Sam’s advice, I watch on the “/webui/software/update.cgi” as the target which is proved to be right choice. In the “update.cgi”. I put many “print” and “echo” lines to collect the returned values created by the program running.

The issue is, the GUI hang or has no information when the patch is installed. Using the original “update.cgi”, the patch would be installed successfully without error, but the last screen has not inforamtion said the operating status, as normaly, there would be some lines messages said the patch was installed successfully and reboot the system. Other way, if I comment some lines, the successfully information displayed. but in fact, the patch is not installed which is proved by issueing “rpm -qa | grep UDO”.

In the first way, I found the XML parser seemed hang, so I commented these XML lines and added the “reboot” and “pre_err_message” returned from the second way, yes, the program would run well, install the patch and display successfully information. But it could not be considered as the final resolution.

I watched the code again, very carefully, and found other XML function which executes without hang, How do I use this XML formation to instead the trouble one? Just modify the trouble ones as the precious, remove the strings “>>INSTALL_LOG”. Yeah! I got it! The update.cgi runs well as what I want.

Summary, partience is the most important thing, and more carefully debug tracing. Nothing is difficult if put all heart on it, or nothing is easy if always thinks it’s too hard to do it.

The following is some modified part of the “update.cgi”source code:
Precious XML:
my $xml_out = `$config{‘update_system_cmd’} $install_file 0 pre_install 2>/dev/null`;
# Get parameter from XML input
my $parser = new XML::DOM::Parser;
my $doc = $parser->parse($xml_out);
my $pre_msg = &xml_in($doc, “pre_msg”, 0);
my $force_install_flag = 0;

Second XML(also my target):
my $cmd_out = `$config{‘update_system_cmd’} $install_file $force_install install 2>/dev/null`;
# ori: my $cmd_out = `$config{‘update_system_cmd’} $install_file $forceinstall install >> INSTALL_LOG 2>/dev/null`
$errnum = $?;
# Get parameter from XML input
my $parser = new XML::DOM::Parser;
my $doc = $parser->parse($cmd_out); # even confuse here
$patch_extra_msg = &xml_in($doc, “err_msg”, 0);
$reboot = &xml_in($doc, “need_reboot”, 0);
Summary, the term “INSTALL_LOG” makes the code confused and XML parser not work.

分类: 科技 标签:

dos2unix

2006年10月17日 没有评论

When use vi to open the text files created in Windows, I found there’s “^M” in the end of each line. Such file is not able to recognized by Linux, it is also why I could not import the Iplanet LDIF files created in Windows to OpenLDAP. There are two methods to resolve this issue.

First use vi edit this file to instead of “^M” string combination. Or second way maybe the more easier, use “dos2unix” command to convert.
# man dos2unix
Dos/MAC to Unix text file format converter.
“iconv” is a tools to convert big5 to UTF-8 character set.

分类: 科技 标签:

Linux boot

2006年10月17日 没有评论

image=/boot/vmlinuz-2.2.15
This is the actual virtual memory compressed kernel of Linux

initrd=/boot/initd-2.2.15.img
This reveals the location of the second stage(RAM) load.

During the installation ,the RAM disk file system is started in Read-only mode. After the second stage is finished with a few tests, the RAM disk is unloaded from memory and the real root partition is mounted form the file system in Read/Write mode.

MBR: master boot recorder
# mkbootdisk /dev/fd0 `uname -r`

分类: 科技 标签:

PAM(Pluggable Authentication Modules)

2006年10月15日 没有评论

PAM(Pluggable Authentication Modules), invented by MicroSun, is a mechanism for authentication. It provides some dynamic libraries and a integreted API in order to seprete the system services with their authentication procedures. To the benifit, the Adminstrator could configure every authentication more flexibly, because he/she need not to modify the original service program. New authentication modules are also able to be added,respectively.

分类: 科技 标签:

Verify the OpenLDAP server/Add Starting dn

2006年10月15日 没有评论

After install OpenLDAP, use the following commands to check the LDAP service run well:
1. Start up LDAP service with specific port:
# sladp -h “ldap://:389”
2. Execute the “ldapsearch” utility,
# ldapsearch -x -b ” -s base ‘(objectclass=*)’ namingContexts
If return texts as:
dn:
namingContexts: dc=plasmon,dc=sit
It validate the LDAP is running well with correct setting.

Since the LDAP installed successfully, the next step is add root dn for all structure, in my case, “dc=plasmon,dc=sit” is the top node. Create an LDIF file named “phillip”by vi:
dn: dc=plasmon,dc=sit
objectclass: dcObject
objectclass: organization
o: Example Company
dc: plasmon
Then import this ldif to LDAP database:
# ldapadd -x -D “cn=root,dc=plasmon,dc=sit” -W -f phillip
The “dc=plamosn,dc=sit” will be added, note, if do not add this node, any operating to LDAP would meet frastrations.

分类: 科技 标签:

Configure /etc/samba/smb.conf for LDAP

2006年10月15日 没有评论

For LDAP authentication, Client’s /etc/samba/smb.conf could be configured as the following steps:
1. modify the ldap/ldaps address appended in the passdb line, for example(port:636):
passdb backend = ldapsam:ldaps://192.168.123.33:636
Note, 192.168.123.33 is the LDAP server running OpenLDAP with the ssl on. Here the original “passwd backend” is set as “smbpasswd”, if use LDAP, the term “smbpasswd” should be removed.
2. add the following lines to the “smb.conf”:
ldap suffix = “dc=plasmon,dc=sit”
ldap ssl = on
ldap timeout = 100

In the client, issue the “smbpasswd -W”, “-W” means setting stored password for “cn=root,dc=plasmon,dc=sit” in secretdb,This step could not be ignored before other machines want to enjoy this Client’s samba service. and then, the file/directory is able to accessed by samba. For better description, just assume the following test environment.
LDAP server: 192.168.123.33
Samba Server(the “Client” in this article): 192.168.123.68
Other machine access Samba server: 192.168.123.32
Run the LDAP service in .33, and modify the smb.conf in .68, then issue “smbpasswd -W” in .68.
In .32, access the share in .68 by executing:
# mount -t smbfs -o username=phillip //192.168.123.68/test /mnt
The //192.168.123.68/test should be mounted to local “.mnt” successfully. But I found this mount process seems to take a few seconds(about 40s-50s). I think it is caused by the LDAP server was built on a virtual machine.

分类: 科技 标签:

Next: RHCE

2006年10月10日 没有评论

Three months to get this certification.

分类: 科技 标签:

mplayer installation

2006年9月23日 没有评论

I still remembe, maybe in June,2005, I tried to install mplayer on Fedora Core 3. Though audio file (mp3,mp4) was played in text mode, the mplayer could not support video. After some times re-installing, I had to give up. This week,Thursday,is a big day for congratulation, I do install mplayer successfully!

Download the following files first:
1.mplayer source code package: MPlayer-1.0pre8.tar.bz2
2.mplayer essential code package: essential-20060611.tar.bz2
3.font files: font-arial-cp1250.tar.bz2, font-arial-iso-8859-1.tar.bz2, font-arial-iso-8859-2.tar.bz2, font-arial-iso-8859-7.tar.bz2
4.mplayer skin: iTunes(Of course,I choose my favorite)

My operation system is CentOS4.2, and have most development packages installed. Unzip essential code package and move it to “/usr/lib/codecs”:
# tar -jxvf essential-20060611.tar.bz2
# mkdir /usr/lib/codecs
# mv essential-20060611 /usr/lib/codecs

Install mplayer:
# tar jxvf MPlayer-1.0pre8.tar.bz2
# cd MPlayer-1.0pre8
# ./configure –enable-gui –with-codecsdir=/usr/lib/codecs –with-win32libdir=/usr/lib/codecs –with-reallibdir=/usr/lib/codecs –with-xanimlibdir=/usr/lib/codecs –disable-inet6 – language=zh_CN,en –prefix=/soft/MPlayer1.0
During this configure process, it was interupted with the following error:
Checking for GUI … yes
Error: PNG support required for GUI compilation, please install libpng and libpng-dev packages.
Check “configure.log” if you do not understand why it failed.

I’m sure the libpng and libpnd-dev packages had been installed:
# rpm -qa | grep libpng
libpng-1.2.7-1
libpng-devel-1.2.7-1
What’s wrong? In the google, somebody said even they reinstalled or updated the libpng and libpng-devel packages, the above error still exist. I’m no going to reinstall those packages for the damn RedHat packages’ independence. When I considered I had to give up again, the resolution was found from google.
Just two lines, how simply it looks like!
/usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
/usr/bin/gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders

Ok, go on with the installation:
[root@localhost MPlayer-1.0pre8]# ./configure –enable-gui –with-codecsdir=/usr /lib/codecs –with-win32libdir=/usr/lib/codecs –with-reallibdir=/usr/lib/codecs –with-xanimlibdir=/usr/lib/codecs –disable-inet6 –enable-png –language=zh_C N,en –prefix=/soft/MPlayer1.0
Detected operating system: Linux
Detected host architecture: i386
Checking for cc version … 3.4.5, ok
Checking for host cc … cc
Checking for cross compilation … no
Checking for CPU vendor … GenuineIntel (15:1:3)
Checking for CPU type … Intel(R) Pentium(R) 4 CPU 1.70GHz
Checking for GCC & CPU optimization abilities … pentium4
Checking for kernel support of mmx … yes
Checking for kernel support of mmxext … yes
Checking for kernel support of sse … yes
Checking for kernel support of sse2 … yes
Checking for mtrr support … yes
Checking for xmmintrin.h … yes
Checking for assembler support of -pipe option … yes
Checking for assembler (as 2.15.92.0.2) … ok
Checking for Linux kernel version … 2.6.9-34.EL, ok
Checking for MPlayer binary name … mplayer
Checking for awk … gawk
Checking for extra headers … none
Checking for extra libs … none
Checking for -lposix … no
Checking for -lm … yes
Checking for langinfo … yes
Checking for language … using zh_CN (man pages: en en)
Checking for enable sighandler … yes
Checking for runtime cpudetection … no
Checking for restrict keyword … __restrict
Checking for __builtin_expect … yes
Checking for kstat … no
Checking for posix4 … no
Checking for lrintf … yes
Checking for round … yes
Checking for nanosleep … yes
Checking for socklib … yes (using -lnsl)
Checking for inet_pton() … yes (using -lnsl)
Checking for inttypes.h (required) … yes
Checking for int_fastXY_t in inttypes.h … yes
Checking for word size … 32
Checking for stddef.h … yes
Checking for malloc.h … yes
Checking for memalign() … yes
Checking for alloca.h … yes
Checking for mman.h … yes
Checking for dynamic loader … yes
Checking for dynamic a/v plugins support … no
Checking for pthread … yes (using -lpthread)
Checking for rpath … no
Checking for iconv … yes
Checking for sys/soundcard.h … yes
Checking for sys/dvdio.h … no
Checking for sys/cdio.h … no
Checking for linux/cdrom.h … yes
Checking for dvd.h … no
Checking for BSDI dvd.h … no
Checking for HP-UX SCSI header … no
Checking for userspace SCSI headers (Solaris) … no
Checking for termcap … yes (using -lncurses)
Checking for termios … yes (using sys/termios.h)
Checking for shm … yes
Checking for linux devfs … no
Checking for scandir() … yes
Checking for strsep() … yes
Checking for strlcpy() … no
Checking for strlcat() … no
Checking for fseeko() … yes
Checking for localtime_r() … yes
Checking for vsscanf() … yes
Checking for swab() … yes
Checking for POSIX select() … yes
Checking for gettimeofday() … yes
Checking for glob() … yes
Checking for setenv() … yes
Checking for sys/sysinfo.h … yes
Checking for Mac OS X APIs … auto
Checking for Mac OS X Finder Support … no
Checking for Mac OS X Bundle file locations … no
Checking for Samba support (libsmbclient) … yes
Checking for 3dfx … no
Checking for tdfxfb … no
Checking for s3fb … no
Checking for tdfxvid … no
Checking for tga … yes
Checking for DirectFB headers presence … not found
Checking for DirectFB … no
Checking for X11 headers presence … yes (using /usr/X11R6/include)
Checking for X11 … yes (using /usr/X11R6/lib)
Checking for DPMS … yes (using Xdpms 4)
Checking for Xv … yes
Checking for XvMC … no
Checking for Xinerama … yes
Checking for Xxf86vm … yes
Checking for XF86keysym … yes
Checking for DGA … 2 (using DGA 2.0)
Checking for OpenGL … yes
Checking for /dev/mga_vid … no
Checking for xmga … no
Checking for GGI … no
Checking for GGI extension: libggiwmh … no
Checking for AA … no
Checking for CACA … no
Checking for SVGAlib … no
Checking for FBDev … no
Checking for DVB … no (specify path to DVB/ost/include with –with-dvbincdir=D IR)
Checking for DVB HEAD … yes
Checking for PNG support … yes
Checking for JPEG support … yes
Checking for PNM support … yes
Checking for md5sum support … yes
Checking for GIF support … yes
Checking for broken giflib workaround … disabled
Checking for VESA support … no
Checking for SDL … yes (using sdl-config)
Checking for Windows waveout … no
Checking for Directx … no
Checking for NAS … no
Checking for DXR2 … no
Checking for DXR3/H+ … no
Checking for libmp1e … no
Checking for libfame … no
Checking for OSS Audio … yes
Checking for aRts … no
Checking for EsounD … yes
Checking for esd_get_latency() … yes
Checking for Polyp … no
Checking for JACK … no
Checking for OpenAL … no
Checking for ALSA audio … yes (using alsa 1.0.x and alsa/asoundlib.h)
Checking for Sun audio … no
Checking for Sun mediaLib … no
Checking for SGI audio … no
Checking for VCD support … yes
Checking for DVD support (libmpdvdkit2) … yes
Checking for DVD support (libdvdread) … no (disabled by libmpdvdkit2)
Checking for cdparanoia … no
Checking for libcdio … no
Checking for freetype >= 2.0.9 … yes
Checking for fontconfig … yes
Checking for fribidi with charsets … no
Checking for ENCA … no
Checking for zlib … yes
Checking for RTC … yes
Checking for external liblzo support … no
Checking for mad support … no
Checking for Toolame … no
Checking for Twolame … no
Checking for OggVorbis support … yes (internal Tremor)
Checking for libspeex (version >= 1.1 required) … no
Checking for OggTheora support … no
Checking for mp3lib support … yes
Checking for liba52 support … yes
Checking for libdts support … no
Checking for libmpeg2 support … yes
Checking for libmpcdec (musepack, version >= 1.2.1 required) … no
Checking for FAAC (AAC encoder) support … no
Checking for internal FAAD2 (AAC) support … yes
Checking for external FAAD2 (AAC) support … no
Checking for LADSPA plugin support … no
Checking for Win32 codec DLL support … yes (using /usr/lib/codecs)
Checking for Win32 loader support … yes
Checking for DirectShow … yes
Checking for XAnim DLL … yes (using /usr/lib/codecs)
Checking for RealPlayer DLL … yes (using /usr/lib/codecs)
Checking for LIVE555 Streaming Media libraries … no
Checking for FFmpeg libavutil (static) … yes
Checking for FFmpeg libavcodec (static) … yes
Checking for FFmpeg libavformat (static) … yes
Checking for FFmpeg libpostproc (static) … yes
Checking for AMR narrowband … no
Checking for AMR narrowband, fixed point … no
Checking for AMR wideband … no
Checking for libdv-0.9.5+ … no
Checking for zr … no
Checking for bl … no
Checking for XviD … no
Checking for x264 … no
Checking for DivX4linux/DivX5linux/OpenDivX decore … no
Checking for libmp3lame (for mencoder) … no
Checking for DivX4linux encore (for mencoder) … no
Checking for mencoder … yes
Checking for fastmemcpy … yes
Checking for UniquE RAR File Library … yes
Checking for TV interface … yes
Checking for *BSD BrookTree 848 TV interface … no
Checking for Video 4 Linux TV interface … yes
Checking for Video 4 Linux 2 TV interface … yes
Checking for audio select() … yes
Checking for network … yes
Checking for ftp … yes
Checking for vstream client … no
Checking for byte order … little-endian
Checking for OSD menu … no
Checking for QTX codecs … yes
Checking for Subtitles sorting … yes
Checking for XMMS inputplugin support … no
Checking for inet6 … no
Checking for gethostbyname2 … yes
Checking for GUI … yes
Checking for XShape extension … yes
Checking for GTK+ version … 2.8.20
Checking for glib version … 2.8.6
Creating Gui/config.mak
Checking for automatic gdb attach … no
Checking for compiler support for -fno-PIC … yes
Checking for compiler support for noexecstack … yes
Checking for ftello() … yes
Checking for VIDIX (internal) … yes
Checking for VIDIX (external) … no
Checking for joystick … no
Checking for lirc … no
Checking for lircc … no
Creating config.mak
Creating config.h
Creating libvo/config.mak
Creating libao2/config.mak
Creating libaf/config.mak
Config files successfully generated by ./configure !
Install prefix: /soft/MPlayer1.0
Data directory: /soft/MPlayer1.0/share/mplayer
Config direct.: /soft/MPlayer1.0/etc/mplayer
Byte order: little-endian
Optimizing for: pentium4 mmx mmxext sse sse2 mtrr
Languages:
Messages/GUI: zh_CN
Manual pages: en en
Enabled optional drivers:
Input: ftp network tv-v4l2 tv-v4l tv mpdvdkit2 vcd dvb smb
Codecs: qtx libavcodec real xanim dshow/dmo win32 faad2(internal) libmpeg2 liba52 mp3lib tremor(internal) gif
Audio output: alsa esd oss sdl mpegpes(dvb)
Video output: xvidix cvidix sdl gif89a md5sum pnm jpeg png mpegpes(dvb) opengl dga xv x11 xover tga
Audio filters:
Disabled optional drivers:
Input: vstream tv-bsdbt848 live555 cdda dvdread
Codecs: opendivx x264 xvid libdv amr_wb amr_nb faac musepack libdts libtheora speex twolame toolame libmad liblzo
Audio output: sgi sun openal jack polyp arts dxr2 nas dsound win32
Video output: winvidix bl zr zr2 dxr3 dxr2 directx vesa fbdev svga caca aa ggi xmga mga xvmc directfb tdfx_vid s3fb tdfxfb 3dfx
Audio filters: ladspa
‘config.h’ and ‘config.mak’ contain your configuration options.
Note: If you alter theses files (for instance CFLAGS) MPlayer may no longer
compile *** DO NOT REPORT BUGS if you tweak these files ***
‘make’ will now compile MPlayer and ‘make install’ will install it.
Note: On non-Linux systems you might need to use ‘gmake’ instead of ‘make’.
Please check mtrr settings at /proc/mtrr (see DOCS/HTML/en/video.html#mtrr)

Check configure.log if you wonder why an autodetection failed (check whether
the development headers/packages are installed).
Do not report compilation errors if you used any of the –enable-* options
(except –enable-gui and maybe –enable-debug).
If you suspect a bug, please read DOCS/HTML/en/bugreports.html.

Yeah! Go pass the configure successfully!
# make
# make install
Here, the main program was installed. In the next steps, will add fonts to support Chinese, and changed the ugly default skin of Mplayer. Aha, I always love iTunes.

Install fonts:
# tar xjvf font-arial-cp1250.tar.bz2
# tar xjvf font-arial-iso-8859-1.tar.bz2
# tar xjvf font-arial-iso-8859-2.tar.bz2
# tar xjvf font-arial-iso-8859-7.tar.bz2
Move these unzipped files to : “/soft/MPlayer1.0/share/mplayer/font/”
# mv font-arial-cp1250/ /soft/MPlayer1.0/share/mplayer/font/
# mv font-arial-iso-8859-1/ /soft/MPlayer1.0/share/mplayer/font/
# mv font-arial-iso-8859-2/ /soft/MPlayer1.0/share/mplayer/font/
# mv font-arial-iso-8859-7/ /soft/MPlayer1.0/share/mplayer/font/

Install the iTunes skin:
# tar -jxvf iTunes-1.1.tar.bz2
# mv PowerPlayer-1.1 default
# mv default /soft/MPlayer1.0/share/mplayer/Skin

Now, run the mplayer. It has two running mode: text and GUI. the command for text is “mplayer”, and for GUI is “gmplayer”. Note, when issue gmplayer now, there would be some error messages(I forgot the details), and could fix this with the following:
# cd ~/.mplayer
# ln -s /usr/share/fonts/zh_CN/TrueType/gbsn001p.ttf subfont.ttf
Note, the ~/.mplayer file only will be created after run “gmplayer”. So, the gmplayer should run firstly(for testing).

Finally, I could use mplayer to enjoy media(mp3,wmv) on my Linux. Some rmvb movies seem to be not supported now.

分类: 科技 标签:

ftp and http service

2006年9月23日 没有评论

SNAZ support ftp and http service. Ftp uses vsftp, and http is based on tomcat.

The service should be start/restart as following:
ftp service: #service vsftpd restart
http service: # /etc/init.d/jsp_init restart

And the related Pam files are located at “/etc/pam.d”
ftp service: /etc/pam.d/vsftpd
http service: /etc/pam.d/login

分类: 科技 标签: