SFS2x version 2.18.3, ubuntu 20.03
SFS2x installed as smartfoxuser:nogroup user instead of root:root user
I normally run smartfox as a service using systemctl. Things seem to work well.
Recently needed to debug extension scripts remotely so I temporarily stopped using systemctl to run smartfox, and instead use the provided sfs2x.sh shell script in the sfs2x directory so I can attach a remote debugger.
When I run smartfox server, I get errors on startup.
java.io.FileNotFoundException: logs/smartfox.log (Permission denied)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:216)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:133)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:689)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:568)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:442)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:334)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
at com.smartfoxserver.v2.SmartFoxServer.initialize(SmartFoxServer.java:606)
at com.smartfoxserver.v2.SmartFoxServer.start(SmartFoxServer.java:239)
at com.smartfoxserver.v2.Main.main(Main.java:13)
log4j:ERROR Either File or DatePattern options are not set for appender [fileAppender].
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: logs/boot/boot.log (Permission denied)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:216)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:133)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:689)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:568)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:442)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:334)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
at com.smartfoxserver.v2.SmartFoxServer.initialize(SmartFoxServer.java:606)
at com.smartfoxserver.v2.SmartFoxServer.start(SmartFoxServer.java:239)
at com.smartfoxserver.v2.Main.main(Main.java:13)
SEVERE: Failed to open access log file [/home/smartfoxuser/smartfoxserver/SmartFoxServer_2X/SFS2X/lib/apache-tomcat/../../logs/http/localhost_access_log.2022-09-06.txt] Note: running as user [smartfoxuser]
java.io.FileNotFoundException: /home/smartfoxuser/smartfoxserver/SmartFoxServer_2X/SFS2X/lib/apache-tomcat/../../logs/http/localhost_access_log.2022-09-06.txt (Permission denied)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at org.apache.catalina.valves.AccessLogValve.open(AccessLogValve.java:651)
at org.apache.catalina.valves.AccessLogValve.startInternal(AccessLogValve.java:685)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:176)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
at com.smartfoxserver.v2.http.TomcatServer.start(TomcatServer.java:43)
at com.smartfoxserver.v2.SmartFoxServer$1.run(SmartFoxServer.java:324)
at java.base/java.lang.Thread.run(Thread.java:829)
Looking at the log files, the owner is root:root instead of smartfoxuser:nogroup. If I run using systemctl (setup properly to use smartfoxuser), then the log files are owned by smartfoxuser:nogroup.
What is the proper way to run using sfs2x.sh as non-root user so that the logs are owned by the smartfoxuser instead of root?
sfs2x.sh and log permissions
Re: sfs2x.sh and log permissions
Hi,
it seems like you have answered your own question already
Meaning that it's just a matter of what user owns the logs. If you use the same privileges for service and manual execution you shouldn't encounter any issue.
Cheers
it seems like you have answered your own question already
Meaning that it's just a matter of what user owns the logs. If you use the same privileges for service and manual execution you shouldn't encounter any issue.
Cheers
Who is online
Users browsing this forum: No registered users and 105 guests