5

I have a server where I work with a database and files using a java app. When I start my app I give a report regarding file access to the server using:

public static boolean folderExists(String folderPath) {
    File folderToCheck = new File(folderPath);
    return folderToCheck.exists();
}

Every time I start my app (after a fresh restart of my computer) I get a false response, even though the server is on. The reason is because I must give an authentication as another user. What I do is access the server through Windows where I am being asked for username/password, and after that I get a true response regarding file access to the server.

Is there a way to give the authentication username/password through Java, and not through Windows?

Thank you

Stefanos Kargas
  • 10,547
  • 22
  • 76
  • 101

2 Answers2

3

On Windows 'native' Java IO (e.g. java.io.File) always inherits the security context of the user running the JVM process. For example, you could run the Java app as a Windows service with the correct credentials.

The JCIFS project implements CIFS (the Windows SMB file server protocol) and allows you to directly specify the username/password.

See the API for examples.

Uriah Carpenter
  • 6,656
  • 32
  • 28
1

I am pretty sure, that there is no way to grant fileaccess by java, without a Windows-Call.

You can call cacls file.log /e /t /p Everyone:f but this will be language-dependent.

I had a similar problem: How to change the file ACL in windows, if I only know the SID?

With Java7 there may be a way to do this.

Community
  • 1
  • 1
Christian Kuetbach
  • 15,850
  • 5
  • 43
  • 79
  • Can I do it by calling a shell command? It's ok with me. I am using Windows. How would the command be? – Stefanos Kargas Jan 19 '11 at 13:30
  • 1
    I change the permission of a file bycalling *cacls* `cacls file.log /e /t /p Everyone:f`: http://support.microsoft.com/kb/318754/en But be aware, that the user with the login "Everyone", may have a different name on a localized windows. For a german translated windows, the call have to be `cacls file.log /e /t /p Jeder:f` – Christian Kuetbach Jan 19 '11 at 13:35