I cannot find hosts file on windows 7 64 bit. This file is in c:/Windows/Sysnative/drivers/etc/hosts.

Oracle set password expiry by default. So, if you would like to find users with expired password, try this command:

column "EXPIRE DATE" format a20
select username, expiry_date, account_status
from dba_users where expiry_date < sysdate
/

I’m not very familiar with editor Ed :-) . So, I had to set Vim as default editor for Oracle. Just put in sqlplus:

define_editor='vim'

Now, if you write ‘ed’, you can edit buf in Vim editor ;-) . Write your command, save it and run it with ‘/.’.

That’s all.

I wrote authentication module in C++ which alows to check username/password through PAM in Linux (I’m using Fedora Linux). I would like to share with you, what I made :-) . So, let’s go :-)

Prerequisities:

  • Install package pam-devel
  • (This step is necessary when you use shadow password) Create new Linux user and group. Set this group as default for this user. Then follow with these steps:
    • Go to /etc
    • Log in as root (su)
    • Change group to the new one for file shadow (chgrp new_group shadow)
    • Set ‘read’ privilage for this group (chmod 0440 shadow)

Write this code: (authModule.c)

#include <stdio.h>
#include <security/pam_appl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

struct pam_response *reply;

// //function used to get user input
int function_conversation(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
{
	*resp = reply;
        return PAM_SUCCESS;
}

int authenticate_system(const char *username, const char *password) 
{
	const struct pam_conv local_conversation = { function_conversation, NULL };
   	pam_handle_t *local_auth_handle = NULL; // this gets set by pam_start

   	int retval;
   	retval = pam_start("su", username, &local_conversation, &local_auth_handle);

   	if (retval != PAM_SUCCESS)
   	{
        	printf("pam_start returned: %d\n ", retval);
        	return 0;
   	}

   	reply = (struct pam_response *)malloc(sizeof(struct pam_response));
	
	reply[0].resp = strdup(password);
   	reply[0].resp_retcode = 0;
   	retval = pam_authenticate(local_auth_handle, 0);

   	if (retval != PAM_SUCCESS)
   	{
      		if (retval == PAM_AUTH_ERR)
      		{
      	     		printf("Authentication failure.\n");
      		}
      		else
      		{
           		printf("pam_authenticate returned %d\n", retval);
      		}
     		return 0;
   	}

   	printf("Authenticated.\n");
   	retval = pam_end(local_auth_handle, retval);

   	if (retval != PAM_SUCCESS)
   	{
       		printf("pam_end returned\n");
       		return 0;
   	}
	
	return 1;
}

int main(int argc, char** argv)
{
	char* login;
	char* password;

	printf("Authentication module\n");
	
	if (argc != 3)
	{
		printf("Invalid count of arguments %d.\n", argc);
		printf("./authModule <username> <password>");
		return 1;
	}

	login = argv[1];
	password = argv[2];

	if (authenticate_system(login, password) == 1)
	{
		printf("Authenticate with %s - %s through system\n", login, password);
		return 0;
	}	

	printf("Authentication failed!\n");
	return 1;
}

Compile code:

gcc -o authModule authModule.c -lpam

Run code (as the new user!):

./authModule user password

That’s all!! :-) Hope it helps!

I found very cool font face generator. It’s useful when you need custom font on all browsers. Check it!