??xml version="1.0" encoding="utf-8" standalone="yes"?>
【基本实现】在自己的电脑上搭徏ftpQ实现同一|段匿名dQƈ能上传下载文件?/p>
【涉及技术】vsftpdQiptables
【方法?/p>
1. 先查看自q机子上是否已安装vsftpd (very secure FTP Daemon)Q这是linux上常用的ftpd技术,配置Ҏ比较cM配置Apache。命令行输入Q?/p>
#rpm -qa | grep vsftp
若出现内容,则表C已安装Q若无,则手动抓包下载:
# sudo yum install vsftpd
2 .启动vsftpd服务。很多教E写的是/etc/init.d/vsftpd startQ但是我试了下后发现不行Q应该如下输入:
# sudo service vsftpd start
相应的,start 可换成stopQrestart{,从字面意思就知道其意思?/p>
查看是否有启动vsftpdQ?/p>
# pstree | grep vsftpd
若有则表C启动成功。至此,可通过#ftp L?localhost/127.0.0.1 来测试ftp是否正常工作?br />
3. 配置 相关文g。vsftpd.conf 全局配置文g攑֜/etc/vsftpd/下。ؓ了防止配|错了,先拷贝一份副本,之后q入文档q行~辑。完成后重启ftp卛_?/p>
#cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd1.conf
#sudo vim /etc/vsftpd/vsftpd.conf
Z允许匿名dQ则anonymous_enable必须{于YESQ其他相应的配置属性简单列表如下:
anonymous_enable=YES 允许匿名d
Local_enable=YES 允许本地用户d
write_enable=YES 开放本地用L写权?br />dirmessage_enable=YES 当切换到目录Ӟ昄该目录下?message隐含文g的内?br />xferlog_enab1e =YES ȀzM传和下蝲日志
connect_from_port_20 = YES 启用FTP数据端口的连接请?br />xferlog_std_format =YES 使用标准的ftpd xferlog日志格式
pam_service_name=vsftpd 讄认证服务的配|文件名Uͼ该文件存攑֜/etc/pam.d/
userlist_enableQYES Ȁzvsftpd查userlist_file指定用户是否可以讉Kvsftpd服务?/p>
4. 本机q行试。在览器上输入ftp://localhost或者ftp://127.0.0.1Q若搭徏成功Q则会有相应的文件夹Q而这文gҎ默认?var/ftp/下,当然以后你还可以q行修改。另一个方法是可以直接在命令行输入Q?/p>
#ftp 127.0.0.1
因ؓ匿名dQ蟩q输入用户名和密码后输入Q?/p>
ftp>user anonymous
再次跌输入密码Q此时会昄d成功的字栗?/p>
5. 关闭防火墙。此时去同一|段的主问ftpQ会发现一直链接不上。暂时了解到的是现在的linuxpȝZ更好地控?IP 信息包过滤和防火墙配|,使用了iptables的东ѝ首先得关闭SElinuxQ该配置文g?etc/selinux/下:
#vim /etc/selinux/config
扑ֈ相应语句Q将其改成:SELINUX=disabled
重启之后Q如果发现还不行Q则暂时的办法可以关闭整个防火墙Q不推荐Q:
#sudo service iptables stop
C此步则肯定能从别的主问自己搭建的ftp的,只是可能q需要涉及文件夹权限问题Q修改之后就能实现文件上传下载了?/p>
完毕?/p>
【补充?/p>
若出?strong>vsftpd: refusing to run with writable anonymous root的错误,大概是ftp目录权限问题Q修正方法:
# chown root:root /var/ftp
# chmod 755 /var/ftp
首先su root
1.开启ssh服务
# systemctl start sshd.service
2.随系l一起启动服?/p>
# systemctl enable sshd.service
在terminal 中输 setup 寚w火墙 d22 端口
3.开启防火墙22端口
# iptables -I INPUT -p tcp --dport 22 -j ACCEPT
过ok
1、在root权限下,修改ssh配置文gQvi /etc/ssh/ssh_config
一下三个注释去掉,卛_其前?#8220;#”P
RSAAuthentication yes
PasswordAuthentication yes
Port 22
2、启动SSH服务Qservice sshd start
3、测试是否安装成功:ssh 192.168,.253.18 #Ҏip
出现Q?Are you sure you want to continue connecting (yes/no)? yes #输入yes
出现Q?a href="mailto:root@192.168.253.18's">root@192.168.253.18's password: #输入Ҏ对应角色密码
提示QLast login: Sun Nov 18 14:34:41 2012 from 192.168.253.20 #d成功
4、操作完成后一定要退出登录:logout #忘记退出的后果是,所有命令行操作都在Ҏ机器上!
以下为免密码d配置Q?/p>
1、生成密钥: ssh-keygen -t rsa
提示Q?/p>
The key's randomart image is:
+--[ RSA 2048]----+
| +*++..|
| . ooo.. |
| + .o . |
| + o . + o|
| . S . o *.|
| . o .E+|
| . |
| |
| |
+-----------------+
2、密钥传l对Ҏ器: ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.253.18
3、再重新d卛_不用密码Qssh 192.168.253.18
PSQ如果链接对方主机提CPORT 22 connection refused提示Q可在对方主Z重新启动ssh服务Qservice sshd start
本篇文章来源?Linux公社|站(www.linuxidc.com) 原文链接Q?a >http://www.linuxidc.com/Linux/2013-01/78033.htm
最q打更仔细学习一下linux操作pȝ。先是恶补了一下用戗用L、文件权限这三样比较重要的知识?br />学习q几样东西,得先掌握linux的权限系l相关知识?br />linux的权限系l主要是q戗用L和权限组成?br />用户是一个个的登录ƈ使用linux的用戗linux内部用UID表示?br />用户l就是用L分组。linux内部用GID表示?br />权限分ؓ诅R写、执行三U权限?/p>
linux的用户信息保存在/etc/passwd文g中,另外Q?etc/shadow文g存放的是用户密码相关信息?br />
/etc/passwd文g格式Q?br />用户?密码:UID:GID:用户信息:HOME目录路径:用户shell
其中UID?则是用户rootQ??99为系l用P500以上为普通用?/p>
/etc/shadow保存用户密码信息Q包括加密后的密码,密码q期旉Q密码过期提C天数等?/p>
用户l信息保存在/etc/group文g?
格式如下Q?br />用户l名:l密?GID:l内帐号Q多个帐L逗号分隔Q?/p>
用户d后,/etc/passwd文g里的GID为用L初始用户l?br />用户的初始用Lq一事实不会?etc/group中体现?/p>
查看当前用户的用L命oQ?/strong>
[root@local opt]#groups
root bin daemon sys adm disk wheel
输出的信息中Q第一个用L为当前用L有效用户l(当前用户l)
切换有效用户l命令:
[root@local opt]#newgrp 用户l名
要离开新的有效用户l,则输入exit回R?/p>
新徏用户命oQ?br />[root@local opt]#useradd 用户?-g 初始用户l?-G 其他用户l(修改/etc/groupQ?-c 用户说明 -u 指定UID
建完用户需要ؓ用户讄密码Q?br />[root@local opt]#passwd 用户?/p>
用户要修改自己密码命令:
[root@local opt]#passwd
修改用户信息命oQ?br />[root@local opt]#usermod 参数 用户?br />参数:
-c 说明
-g l名 初始用户l?br />-e q期日期 格式QYYYY-MM-DD
-G l名 其他用户l?br />-l 修改用户?br />-L 锁定账号Q在/etc/shadow文g中用户对应密码密码串的前面加上两个叹?!!)Q?br />-U 解锁
删除用户命oQ?/strong> 查看可用shell命oQ?br />[root@local opt]#chsh -l 查看自己或某人UID/GID信息Q?br />[root@local opt]#id [用户名] 新增用户l命令: 修改用户l名命oQ?br />[root@local opt]#groupmod -n 名称 删除用户l命令: 讄用户l密码命令: 如果gpasswd加上参数则有其他功能 讄用户l管理员命oQ?/strong> d某帐号到l命令: 从组中删除某帐号命oQ?br />[root@local opt]#gpasswd -d 用户?用户l名 passwd相关参数操作Q?br />-l 锁用?br />-u 解锁用户 文g权限知识 列表的列定义如下Q?br />[权限属性信息] [q接数] [拥有者] [拥有者所属用L] [大小] [最后修Ҏ间] [文g名] 权限属性列表ؓ10个字W: 修改文g所属组命oQ?/strong> 修改文g的所有者和l命令: 修改文g讉K权限命oQ?br />[root@local opt]#chmod [-R] 0777 文g?br /> 转:http://www.sourcejoy.com/other_dev_tech/linux-user-and-file-manage.html
[root@local opt]#userdel [-r] 用户?br />其中Q参?r为删除用Lhome目录?br />其实Q可能在pȝ其他地方也有该用hӞ要完整删除一个用户和其文件要先找到属于他的文Ӟ
[root@local opt]#find / -user 用户?br />然后删除Q再q行userdel删除用户?/p>
修改自己的shell命oQ?/strong>
[root@local opt]#chsh -s
q回信息中groups为有效用L
[root@local opt]#groupadd 用户l名
[root@local opt]#groupdel 用户l名
[root@local opt]#gpasswd 用户l名
[root@local opt]#gpasswd -A 用户?用户l名
[root@local opt]#gpasswd -M 用户?用户l名
-n 天数 密码不可改天?br />-x 天数 密码q期天数
-w 天数 警告天数
先看个实例:
[root@local opt]#ls -al
ls -al 命o是列出目录的所有文Ӟ包括隐藏文g。隐藏文件的文g名第一个字Wؓ'.'
-rw-r--r-- 1 root root 81 08-02 14:54 gtkrc-1.2-gnome2
-rw------- 1 root root 189 08-02 14:54 ICEauthority
-rw------- 1 root root 35 08-05 10:02 .lesshst
drwx------ 3 root root 4096 08-02 14:54 .metacity
drwxr-xr-x 3 root root 4096 08-02 14:54 nautilus
W一个字W表C文件类型,d为目?-为普通文?l?b为可存储的接口设?c为键盘鼠标等输入讑֤
2??个字W表C所有者权限,5??个字W表C所有者同l用h限,8??0为其他用h?br />W二个字W表C所有者读权限Q如果有权限则ؓrQ没有权限则?
W三个字W表C所有者写权限Q如果有权限则ؓwQ没有权限则?
W四个字W表C所有者执行权限,如果有权限则为xQ没有权限则?
W五个字W表C所有者同l用戯权限Q如果有权限则ؓrQ没有权限则?
W六个字W表C所有者同l用户写权限Q如果有权限则ؓwQ没有权限则?
W七个字W表C所有者同l用h行权限,如果有权限则为xQ没有权限则?
W八个字W表C其他非同组L限,如果有权限则为rQ没有权限则?
W九个字W表C其他非同组写权限,如果有权限则为wQ没有权限则?
W十个字W表C其他非同组执行权限Q如果有权限则ؓxQ没有权限则?
[root@local opt]#chgrp [-R] l名 文g?br />其中-R为递归讄
[root@local opt]#chown [-R] 用户[:用户l] 文g?/p>
xQ用戗文件和权限相关的东西,ȝ?788了,接下来的是Q^常要敢于用各U命令,勤于看看本篇ȝ啦?/p>
]]>
rpm -qa|grep jdk
卸蝲Q?/p>
rpm -e rpm包名Q上面看到的Q?/p>
若存在依赖关p,先卸载上层的?/p>赋予jdk-6u35-linux-i586-rpm.bin权限Q?br />[abin1@abin1 sysource]$ chmod u+X jdk-6u35-linux-i586-rpm.bin
[abin1@abin1 sysource]$ sudo ./jdk-6u35-linux-i586-rpm.bin
[abin1@abin1 sysource]$ ls
jdk-6u35-linux-i586.rpm sun-javadb-core-10.6.2-1.1.i386.rpm
jdk-6u35-linux-i586-rpm.bin sun-javadb-demo-10.6.2-1.1.i386.rpm
sun-javadb-client-10.6.2-1.1.i386.rpm sun-javadb-docs-10.6.2-1.1.i386.rpm
sun-javadb-common-10.6.2-1.1.i386.rpm sun-javadb-javadoc-10.6.2-1.1.i386.rpm
[abin1@abin1 sysource]$
安装解压之后生成的jdk-6u35-linux-i586.rpm
[abin1@abin1 sysource]$ rpm -ivh --prefix=/home/abin1/abin2/java/ jdk-6u35-linux-i586.rpm
取消之前赋予 jdk-6u35-linux-i586-rpm.bin 的权?br />[abin1@abin1 sysource]$ chmod u-x jdk-6u35-linux-i586-rpm.bin
配置JDK的环境变量:
[abin1@abin1 ~]$ sudo vi /etc/profile.d/java.sh
[sudo] password for abin1:
export JAVA_HOME="/usr/lib/java/jdk1.6.0_25/"
export PATH="$PATH:$JAVA_HOME/bin"
export CLASS_PATH="$JAVA_HOME/lib"
Fedora JDK执行所有的命o
[abin1@abin1 ~]$ source /etc/profile
[abin1@abin1 ~]$ source /etc/profile.d/java.sh
[abin1@abin1 ~]$
试JAVA是否安装
java -version
一.下蝲JDK
1.dSun的JDK官方下蝲|址:http://java.sun.com/javase/downloads/index.jsp
2.下蝲jdk-1_5_0_07-linux-i586-rpm.bin文g
?安装JDK
1.增加jdk-1_5_0_07-linux-i586-rpm.bin文g的可执行权限
#root> chmod 755 jdk-1_5_0_07-linux-i586-rpm.bin
2.执行jdk-1_5_0_07-linux-i586-rpm.bin
#root> ./ jdk-1_5_0_07-linux-i586-rpm.bin
3.安装PRM包文?br />#root> rpm -ivh jdk-1_5_0_07-linux-i586.rpm
?配置环境变量PATH,JAVA_HOME,CLASSPATH
配置环境变量有三U?
1.修改/etc/profile文g(pȝ有效)
(1)#root > vi /etc/profile
(2)使用VI~辑器在profile文g中添加以下语?
JAVA_HOME=/opt/jdk1.5
PATH=QJAVA_HOME/bin:QPATH
CLASSPATH=.QJAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar export JAVA_HOME,PATH,CLASSPATH
(3)重新d
[注意]
<1>Linux下环境变量?分隔路径Q不同于Windows下的Q?br /><2>Linux使用(Q?环境变量?来引用原来变量的?Windows则是使用%+环境变量?%.比如QPATH?PATH%
<3>CLASSPATH中不能存在空|如Windows下的C:\Documents and Settings\seagar\jdk1.5是不合法的路径?br /><4>CLASSPATH中的当前目录"."不能忽略
<5>export把环境变量导Zؓ全局变量
<6>大小写严格区?br />
2.修改.bashrc文g(个h用户有效)
(1)#root > vi /home/seagar/.bashrc
(2)使用VI~辑器在.bashrc文g中添加以下语?
JAVA_HOME=/opt/jdk1.5
PATH=QJAVA_HOME/bin:QPATH
CLASSPATH=.QJAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export JAVA_HOME,PATH,CLASSPAT
3.直接在shell修改(当前Shell有效)
export JAVA_HOME=/opt/jdk1.5
export PATH=QJAVA_HOME/bin:QPATH
export CLASSPATH=.QJAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
?试安装情况
1.java -version查看版本?br />2.使用VI~辑器编写一个JavaE序
(1)#root > vi Hello.java
(2)~写E序
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
3.~译:javac Hello.java
4.执行:java Hello
?卸蝲jdk
卸蝲rpm版的jdkQ?/p>
#rpm -qa|grep jdk
昄Qjdk-1.6.0_10-fcs
q就说明了你安装了jdkQ下面卸载了它,
卸蝲Q?span style="color: #008000">#rpm -e --nodeps jdk-1.6.0_10-fcs
Red Hat Enterprise Linux安装E序默认没有安装Telnet服务Q可使用下面命o查系l是否已l安装了Telnet服务或查看已l安装了何种版本?/strong>
rpm -q telnet-server
如果pȝq没有安装Telnet服务。可Red Hat Enterprise Linux安装盘放入光驱,加蝲光驱后找到Telnet服务的RPM安装包文Ӟ然后安装Telnet服务?br />yum install telnet-server
启动和停止Telnet服务
Telnet服务q不像其他服务(如HTTP和FTP{)一样作为独立的守护q程q行Q它使用xinetdE序理Q这样不但能提高安全性,而且q能使用xinetd对Telnet服务器进行配|管理?/strong>
Telnet服务安装后默认ƈ不会被xinetd启用Q还要修Ҏ?etc/xinetd.d/telnet其启用。其?etc/xinetd.d/telnet文g是xinetdE序配置文g的一部分Q可以通过它来配置Telnet服务器的q行参数。编辑文?etc/xinetd.d/telnetQ找到语?#8220;disable = yes”Q将其改?#8220;disable = no” 。然后用以下命令重新启动xinetd服务Q?/etc/init.d/xinetd restart
[root@RHCE~]#vi /etc/xinetd.d/telnet
启动防火?br />
1) 重启后生?
开启: chkconfig iptables on
关闭Q?chkconfig iptables off 或? /sbin/chkconfig --level 2345 iptables off
2) x生效Q重启后失效
service 方式
开启: service iptables start
关闭Q?service iptables stop
iptables方式
查看防火墙状态:
/etc/init.d/iptables status
暂时关闭防火墙:
/etc/init.d/iptables stop
重启iptables:
/etc/init.d/iptables restart
一、Fedora 启动sshd服务Q?/span>
1?/span>先确认是否已安装ssh服务Q?/span>
[root@localhost ~]# rpm -qa | grep openssh-server
openssh-server-5.3p1-19.fc12.i686 Q这行表C已安装Q?/span>
若未安装ssh服务Q可输入Q?/span>
#yum install openssh-server
q行安装
2?/span>修改配置文g
#vi /etc/ssh/sshd_config
#Port 22 监听的端口号Q默认是22Q可以自定义?/span>
#Protocol 2 支持的协议,默认好Q不用修?/span>
#PermitRootLogin yes 是否允许root直接dQ最好设|ؓno
#MMaxAuthTries 6 最大登录数Q默认是6Q徏议设|ؓ3Q防止别人密码穷举?/span>
修改完配|后Q重启SSH服务Q?/span>
[root@localhost ~]# /etc/rc.d/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]:
3?/span>查看sshd状态:
#service sshd status
4?/span>端?2Q或者自定义的其他端口)加到防火墙的讄中,标记为Accept
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Q这句很重要Q不然外部连接不了。)
也可以将上述参数加入防火墙配|中Q?/span>
#vi /etc/sysconfig/iptables
加入Q?A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
保存后重启iptables卛_
详情可以查阅 iptables的用?/a>
二、Fedora15/16/17 启动sshd服务Q?/span>
׃Fedora 15/16使用systemd服务Q?/span>
1、启动SSH服务与上面有些不?/span>
# systemctl start sshd.service
或?#service sshd start
也可以用 restart ?nbsp;stop控制sshd服务
2、设|系l启动时开启服?/span>
# systemctl enable sshd.service
3、同样也需开启防火墙22端口
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
也可以将上述参数加入防火墙配|中Q?/span>
#vi /etc/sysconfig/iptables
加入Q?A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
保存后重启iptables卛_
详情可以查阅 iptables的用?/a>
============================================================
2、如何才能解开.z?Z文gQ?
1Q解.z 文g: gzcat filename.z
2Q解.Z 文gQuncompress -c filename.Z
============================================================
3、如何解.tar.Z文gQ?
1Q解压ƈ列表Q?br />zcat filename.tar.Z | tar xvf - #?tar.Z文g
uncompress -c tast.tar.Z | xvf - #uncompress -c ? zcat
2Q只列表不生成文Ӟ
zcat filename.tar.Z | tar tvf - #?tar.Z文g
uncompress -c filename.tar.Z | tvf - #uncompress -c ? zcat
============================================================
4、如何安装、卸载、列出rpm包信息?Qlinux常用Q?
1)安装rpm包时昄q度Q例如:?vh参数Q如rpm -ivh ipchains-1.3.6-1.i386.rpm
2)直接通过ftp来安装rpm包,例如Qrpm -i
3)校验所有的rpm包,查找丢失的文Ӟ例如Qrpm –Va
4)查找一个文件属于哪个rpm包,例如Qrpm -qf /usr/bin/who
5)列出一个rpm包的描述信息Q例如:rpm -qpi mon-0.37j-1.i386.rpm
6)列出一个rpm包的文g信息Q例如:rpm -qpl mon-0.37j-1.i386.rpm
7)列出q过滤已l安装的包,例如Qrpm –q |grep IBM
8)删除已安装的包,例如Qrpm –e 包名
9)其他rpm操作参见 # rpm --help
============================================================
5、如何用tar命o试、展开、生成tgz包?
tar zvfx filename.tgz #在当前目录下展开q个?br />tar zvft filename.tgz #只测试不展开
tar zvfx filename.tgz -C /new-dir #展开后放?new-dir目录?br />tar zvfc filename.tgz /filename #?filename目录下所有的文g及子目录打包成filename.tgz
============================================================
6、如何解开和生成tar文gQ?
tar xvf filename.tar #当先目录解包
tar tvf filename.tar #只显CZ生成文g
tar cvf filename.tar <file or dir list> #生成?br />tar的参数很多,要仔l学习参?tar -h
============================================================
7、如何象在PC上的ARJ那样的分解打包Y?
# split -b 100k big.file
big.file分解成若q?00K的小文g (名ؓxa, xb, xc, ...)
# split -l 500 big.file
big.file分解成每?00 lines的小文g
其它使用Ҏ参见split –h
============================================================
8、在Unix下如何压~文Ӟ
在unix下压~方法有多种Q可以参见gzip、gunzip、zcat、compress{工h档,也可以参见上面所q的一些方法。下面仅以compress命oCZQ?
例如Q需要将/filename的文件打包ƈ压羃Q需要做以下步骤Q?br />1Q打?br />tar cvf filename.tar ./dir
2Q压~?br />compress filename.tar #生成filename.tar.Z文g
如果q原回原来的目录l构
1Q解压羃
uncompress filename.tar.Z
3Q解tar?br />tar xvf filename.tar
如果unix命o参数不熟悉,一般也可以通过ftp压~或打包文g传到PC上,利用Windows下的Winzip或rar{压~工兯开?br />
==========================================================
9、如何解开和生成其他包?jar文gQ?
在unix上生成和解开jar包和对tar包的操作差不多?br />例如Q?br />jar cvf filename.jar /dirname #?dirname 打成jar?br />jar xvf filename.jar #解开jar?br />jar tvf filename.jar #只列表不解开jar?/p>