??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品一区二区三区中文字幕,heyzo一区,久久一二三四http://www.aygfsteel.com/PariScamper/category/26374.htmlzh-cnSun, 02 Mar 2008 13:18:52 GMTSun, 02 Mar 2008 13:18:52 GMT60关于“vsftpd 部分本地用户不能d”的问题解决 http://www.aygfsteel.com/PariScamper/archive/2008/02/27/182568.htmlPariScamperPariScamperWed, 27 Feb 2008 14:45:00 GMThttp://www.aygfsteel.com/PariScamper/archive/2008/02/27/182568.htmlhttp://www.aygfsteel.com/PariScamper/comments/182568.htmlhttp://www.aygfsteel.com/PariScamper/archive/2008/02/27/182568.html#Feedback0http://www.aygfsteel.com/PariScamper/comments/commentRss/182568.htmlhttp://www.aygfsteel.com/PariScamper/services/trackbacks/182568.html
关于“vsftpd 部分本地用户不能dQ部分可?#8221;的问题,我重新做了一些实验,我把q个问题l合实验的结果再重新描述一下,请各位高人,帮忙看看可能的原因?谢谢了!

pȝ中原来就有的本地帐号都不能登录,我的/etc/vsftpd/vsftpd.conf文g的配|如下:
local_enable=YES
write_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd
/etc/pam.d/vsftpd存在且正常?br />
d旉误信息都是一LQ?br /> 500 OOPS: cannot change directory:/home/xxxx
Login failed.
421 Service not available, remote server has closed connection

他们的home目录都是/home/xxxx?home?home/xxxx的权限都?55?br /> 以上q些帐号都不能ftpdQ这些都是^常经怋用的Q可以用shelld的?br />
我新创徏了一个usr1帐号Q?br /> # useradd -G test -d /tmp/usr1 usr1
能ftpdQ他的home?tmp/usr1,?分区上。?home我是mount?dev/hda9上的?br /> #mount
/dev/hdb1 on / type ext3 (rw)
/dev/hda9 on /home type ext2 (rw)

所以,我猜惻I是否是由?home分区的原因,而造成“ȝ录在/home分区的帐?#8221;都不能登录呢Q?br />
Z验证以上设想Q我试着再创Z一个帐P
useradd -G test -d /home/usr3 usr3
/home, /home/usr3 的权限都?55?br />
usr3 ftpdp|?
500 OOPS: cannot change directory:/home/usr3
Login failed.
421 Service not available, remote server has closed connection

xQ我觉得可以定是由?home分区的原因,而造成“ȝ录在/home分区的帐?#8221;都不能登录?br /> 参考文章:
-----------------------------------------------------------------------------------------
I finished my second upgrade to Fedora Core 4. Not everything is ironed out yet with the build of course. But one thing is for sure a lot has happened to the RedHat I knew before.

I must say of all the changes, for me the nicest addition is the new SELinux extensions. For deep background on the reasons for and theory of SELinux read, The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments

The more I work with SELinux the more I realize I need to know about it, and how exactly it does all its stuff. It certainly changes things relating to users, directories and access. As I am starting to learn it, I'm sure I'm doing things the hard-way. :)

The major difference, so far for me, in Red Hat's SELinux is the way ftp is handled. vsftpd is still the server which is great. However, it seems to be designed to run as a daemon rather than invoked via xinet.d. If you grab a working copy of the xinet.d file for vsftpd you can invoke it via xinet.d wrapper. I did my first server upgrade in this manner. The current one I am trying as a daemon. I certainly think I will miss some of the features that the xinet.d wrapper brings, and may yet return to it.

Of all the issues I saw most notable is if you want to enable chroot directory's outside of the normal /home/xxx vsftpd. These will fail with a

    500 OOPS: cannot change directory: /mnt/xxxxx

I was able to use ftp if I logged in with an account with a directory in /home, but once I set a user account to have a home drive outside of /home (in this case on a mounted secondary disk) vsftpd barfs the above.


I found information at the NSA that indicates you can disable SELinux protection of the ftp daemon.

    setsebool -P ftpd_disable_trans 1

This seems a bit drastic. It certainly works for now though.

I think ultimately the issue resides with policies, but as SELinux policies are new to me, it will take time before it all gets sorted out. As I spend time with the new SELinux extensions in Fedora Core 4 I will keep you updated on my thoughts and configuration lessons.


---------------------------------------------------------------------------------------

解决办法Q?br /> --------------------------------------------------------------------------------------
 # setsebool ftpd_disable_trans 1
  # service vsftpd restart
我用的是FC4Q按照你上一帖子里的Ҏ试了Q马上就解决了。所以,可以定原因在SELinux?br /> ------------------------------------------------------------------------------------



PariScamper 2008-02-27 22:45 发表评论
]]>
commons-logging和Log4j 日志理 (zz)http://www.aygfsteel.com/PariScamper/archive/2007/12/12/167232.htmlPariScamperPariScamperWed, 12 Dec 2007 06:48:00 GMThttp://www.aygfsteel.com/PariScamper/archive/2007/12/12/167232.htmlhttp://www.aygfsteel.com/PariScamper/comments/167232.htmlhttp://www.aygfsteel.com/PariScamper/archive/2007/12/12/167232.html#Feedback0http://www.aygfsteel.com/PariScamper/comments/commentRss/167232.htmlhttp://www.aygfsteel.com/PariScamper/services/trackbacks/167232.htmlLogQ?/span>?
q个……׃必说了吧?/span>

Z么不?/span>System.out.println()?
功能太弱Q不易于控制。如果暂时不惌Z怎么办?如果惌出到文g怎么办?如果想部分输出怎么办?……

Z么同时?/span>commons-logging?/span>Log4j?Z么不仅用其中之一Q?br /> Commons-loggin的目的是?#8220;所有的Java日志实现”提供一个统一的接口,它自w的日志功能q_弱(只有一个简单的SimpleLog?Q,所以一般不会单独用它?/span>

Log4j的功能非常全面强大,是目前的首选。我发现几乎所有的Java开源项目都会用?/span>Log4jQ但我同时发玎ͼ所有用?/span>Log4j的项目一般也同时会用?/span>commons-loggin。我惻I大家都不希望自己的项目与Log4jl定的太紧密吧。另外一个我能想到的“同时使用commons-logging?/span>Log4j”的原因是Q简化用和配置?/span>

       一点,“同时使用commons-logging?/span>Log4j”Q与“单独使用Log4j”相比Qƈ不会带来更大的学习、配|和l护成本Q反而更加简化了我们的工作?/span>我想q也是ؓ什?#8220;所有用?/span>Log4j的项目一般也同时会用?/span>commons-loggin”的原因之一吧?/span>

Commons-logging能帮我们做什么?
l         提供一个统一的日志接口,单了操作Q同旉免项目与某个日志实现pȝ紧密a耦合
l         很脓心的帮我们自动选择适当的日志实现系l(q一炚w常好Q)
l         它甚至不需要配|?/span>

q里看一下它怎么“‘很脓心的’帮我?#8216;自动选择’‘适当?#8217;日志实现pȝ”Q?/span>
1)        首先?/span>classpath下寻找自q配置文gcommons-logging.propertiesQ如果找刎ͼ则用其中定义的Log实现c;
2)        如果找不?/span>commons-logging.properties文gQ则在查找是否已定义pȝ环境变量org.apache.commons.logging.LogQ找到则使用其定义的Log实现c;
3)        否则Q查?/span>classpath中是否有Log4j的包Q如果发玎ͼ则自动?/span>Log4j作ؓ日志实现c;
4)        否则Q?/span>JDK自n的日志实现类Q?/span>JDK1.4以后才有日志实现c)Q?/span>
5)        否则Q?/span>commons-logging自己提供的一个简单的日志实现c?/span>SimpleLogQ?/span>
Q以上顺序不保证完全准确Q请参考官Ҏ档)

可见Q?/span>commons-loggingL能找C个日志实现类Qƈ且尽可能扑ֈ一?#8220;最合?#8221;的日志实现类。我说它“很脓?#8221;实际上是因ؓQ?/span>1、可以不需要配|文Ӟ2、自动判断有没有Log4j包,有则自动使用之;3、最悲观的情况下也总能保证提供一个日志实玎ͼSimpleLogQ?/span> 
       可以看到Q?/span>commons-logging对编E者和Log4j都非常友好?/span>

       Z化配|?/span>commons-loggingQ一般不使用commons-logging的配|文Ӟ也不讄?/span>commons-logging相关的系l环境变量,而只需?/span>Log4j?/span>Jar包放|到classpash中就可以了。这样就很简单地完成?/span>commons-logging?/span>Log4j的融合?/span>如果不想?/span>Log4j了怎么办?只需?/span>classpath中的Log4j?/span>Jar包删除即可?br />
p么简单!

代码应该怎么写?

我们在需要输出日志信息的“每一?#8221;cM做如下的三个工作Q?/span>
1、导入所有需?/span>commongs-loggingc:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

如果愿意化的话,q可以两行合Z行:
import org.apache.commons.logging.*;  

2、在自己的类中定义一?/span>org.apache.commons.logging.LogcȝU有静态类成员Q?/span>
private static Log log = LogFactory.getLog(YouClassName.class);

注意q里定义的是static成员Q以避免产生多个实例?/span>

LogFactory.getLog()Ҏ的参C用的是当前类?/span>classQ这是目前被普通认为的最好的方式。ؓ什么不写作LogFactory.getLog(this.getClass())Q因?/span>staticcL员访问不?/span>this指针Q?/span>

3、?/span>org.apache.commons.logging.Logcȝ成员Ҏ输出日志信息Q?/span>
log.debug("111");
log.info("222");
log.warn("333");
log.error("444");
log.fatal("555");

q里?/span>logQ就是上面第二步中定义的cL员变量,其类型是org.apache.commons.logging.LogQ通过该类的成员方法,我们可以将不同性质的日志信息输出到目的圎ͼ目的地是哪里Q视配置可定Q可能是stdoutQ也可能是文Ӟq可能是发送到邮gQ甚臛_送短信到手机……详见下文?/span>log4j.properties的介l)Q?/span>
l         debug()   输出“调试”U别的日志信息;
l         info()      输出“信息”U别的日志信息;
l         warn()    输出“警告”U别的日志信息;
l         error()     输出“错误”U别的日志信息;
l         fatal()      输出“致命错误”U别的日志信息;

Ҏ不同的性质Q日志信息通常被分成不同的U别Q从低到高依ơ是Q?#8220;调试Q?/span>DEBUGQ?#8221;“信息Q?/span>INFOQ?#8221;“警告Q?/span>WARNQ?#8221;“错误Q?/span>ERRORQ?#8221;“致命错误Q?/span>FATALQ?#8221;?/span>Z么要把日志信息分成不同的U别呢?q实际上是方便我们更好的控制它。比如,通过Log4j的配|文Ӟ我们可以讄“输出‘调试’及以上别的日志信息”Q即“调试”“信息”“警告”“错误”“致命错误”Q,q对目开发h员可能是有用的;我们q可以设|?#8220;输出“警告”及以上别的日志信息”Q即“警告”“错误”“致命错误”Q,q对目最l用户可能是有用的?/span> 
       仅从字面上理解,也可以大致得出结论:最常用的应该是debug()?/span>info()Q?/span>warn()?/span>error()?/span>fatal()仅在相应事g发生后才使用?/span>  

从上面三个步骤可以看出,使用commons-logging的日志接口非常的单,不需要记忆太多东西:仅仅用到了两个类Log, LogFactoryQƈ且两个类的方法都非常(后者只用到一个方法,前者经常用到的也只是上面第三步中列出的几个Q,同时参数又非常简单?/span>

上面所介绍的方法是目前被普通应用的Q可以说是被标准化了的方法,几乎所有的人都是这么用。如果不信,或想认一下,去下蝲几个知名?/span>Java开源项目源代码看一下吧?/span>  

下面l出一个完整的Javacȝ代码Q?/span> 
package liigo.testlog; 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 

public class TestLog
    private static Log log = LogFactory.getLog(TestLog.class); 
    public void test()    
        log.debug("111"); 
        log.info("222"); 
        log.warn("333"); 
        log.error("444"); 
        log.fatal("555"); 
     

    public static void main(String[] args)    
        TestLog testLog = new TestLog(); 
        testLog.test(); 
    }
 

只要保证commons-logging?/span>jar包在classpath中,上述代码肯定可以很顺利的~译通过。那它的执行l果是怎么L呢?恐怕会有很大的不同Q请l箋往下看?/span>  

Log4j在哪里呢Q它发挥作用了吗Q?/span>

应该注意刎ͼ我们上面l出的源代码Q完全没有涉及到Log4j——这正是我们所希望的,q也正是commons-logging所要达到的目标之一?/span>

可是Q怎么才能?/span>Log4j发挥它的作用呢?{案很简单,只需满“classpath中有Log4j?/span>jar?#8221;。前面已l说q了Q?/span>commons-logging会自动发现ƈ应用Log4j。所以只要它存在Q它发挥作用。(它不存在呢?自然׃发挥作用Q?/span>commons-logging会另行选择其它的日志实现类。)

注意Q配|文?/span>log4j.properties?/span>Log4j来说是必ȝ。如?/span>classpath中没有该配置文gQ或者配|不对,会引发q行时异常?/span>

       q样Q要正确地应?/span>Log4j输出日志信息Q?/span>log4j.properties的作用就很重要了。好在该文g有通用的模板,复制一份(E加修改Q就可以使用。几乎每一?/span>Java目目录内都会有一?/span>log4j.properties文gQ可下蝲几个Java开源项目源代码查看。本文最后也附一个模板性质?/span>log4j.properties文gQ直接复制过d可以用,或者根据自q需要稍加修攏V后文将?/span>log4j.properties文g适当作一些介l?/span>

关于Log4j比较全面的配|?/h5>

LOG4J的配|之单它遍及于来多的应用中了:Log4J配置文g实现了输出到控制台、文件?/span>

回滚文g、发送日志邮件、输出到数据库日志表、自定义标签{全套功能。择其一二用就够用?/span>

log4j.rootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apache=true 
 

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

#应用于文?/font>
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis


# 应用于文件回?/font>
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#应用于socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

# 发送日志给邮g
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


# 用于数据?/font>
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net

log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1545873



PariScamper 2007-12-12 14:48 发表评论
]]>使用oracle的sequence像表中插入数?/title><link>http://www.aygfsteel.com/PariScamper/archive/2007/10/12/152447.html</link><dc:creator>PariScamper</dc:creator><author>PariScamper</author><pubDate>Fri, 12 Oct 2007 11:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/PariScamper/archive/2007/10/12/152447.html</guid><wfw:comment>http://www.aygfsteel.com/PariScamper/comments/152447.html</wfw:comment><comments>http://www.aygfsteel.com/PariScamper/archive/2007/10/12/152447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/PariScamper/comments/commentRss/152447.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/PariScamper/services/trackbacks/152447.html</trackback:ping><description><![CDATA[<p>SQL语句?br /> insert into room(id,bid,name) values(room_seq.nextval,12,'1346S')Q?br /> room_seq.nextval为取得room_seq的下一值后Q取完值后会自动增?br /> select room_seq.nextval from dual则选出room_seq的nextval|取值后也会自动增长<br /> select room_seq.currval from dual则选出room_seq的当前|取值后不会自动增长<br /> 另外QOracle不像其他数据库,NVARCHAR2的数据类型的取值居然是'abcd'Q单引号Q,既不是双引号Q也不是无引受?/p> <img src ="http://www.aygfsteel.com/PariScamper/aggbug/152447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/PariScamper/" target="_blank">PariScamper</a> 2007-10-12 19:33 <a href="http://www.aygfsteel.com/PariScamper/archive/2007/10/12/152447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">DZɽ</a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʳ</a>| <a href="http://" target="_blank">ׯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƾ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¸</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ϼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˶</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>