Specify the inode of a file?


 
Thread Tools Search this Thread
Operating Systems Solaris Specify the inode of a file?
# 1  
Old 03-25-2014
Specify the inode of a file?

Is there any way to create a file on Solaris 10 (ZFS preferably, but UFS would be helpful as well) with a specific inode number? I need to create a file with a large inode, greater than a 32bit integer.

I am trying to test a piece of software which may be incorrectly truncating large inodes down to 32-bit numbers.
# 2  
Old 03-25-2014
How is the application getting the inode of a file? Is it done through stat system call?
# 3  
Old 03-25-2014
Quote:
Originally Posted by bartus11
How is the application getting the inode of a file? Is it done through stat system call?
I'm not sure, I don't work with any of the code unfortunately.
# 4  
Old 03-25-2014
Put this into "fake_inode.d":
Code:
syscall::stat64:entry, syscall::lstat64:entry
/strstr(copyinstr(arg0), "passwd") != NULL/
{
  self->statptr = arg1;
}

syscall::stat64:return, syscall::lstat64:return
/self->statptr != NULL && curpsinfo->pr_dmodel == PR_MODEL_ILP32/
{
  self->st64_32 = (struct stat64_32 *)copyin(self->statptr, sizeof(struct stat64_32));
  self->st64_32->st_ino = 100000000000;
  copyout(self->st64_32, self->statptr, sizeof(struct stat64_32));
}

syscall::stat64:return, syscall::lstat64:return
/self->statptr != NULL && curpsinfo->pr_dmodel == PR_MODEL_LP64/
{
  self->st64 = (struct stat64 *)copyin(self->statptr, sizeof(struct stat64));
  self->st64->st_ino = 100000000000;
  copyout(self->st64, self->statptr, sizeof(struct stat64));
}

Replace "passwd" with whatever filename you want to fake inode for. Then run:
Code:
dtrace -w -s fake_inode.d

In the other terminal run:
Code:
ls -li /etc/passwd

Change the filename of the file that you are checking with "ls", if you changed the filename in the "fake_inode.d" script. This should produce:
Code:
# ls -li /etc/passwd
100000000000 -rw-r--r--   1 root     sys         1972 Jun 13  2013 /etc/passwd

These 4 Users Gave Thanks to bartus11 For This Post:
# 5  
Old 03-25-2014
Quote:
Originally Posted by bartus11
Put this into "fake_inode.d":

Replace "passwd" with whatever filename you want to fake inode for. Then run:

In the other terminal run:

Change the filename of the file that you are checking with "ls", if you changed the filename in the "fake_inode.d" script. This should produce:
Thank you. I changed the filename to "passwd2" because I wasn't sure what impact this would have on my /etc/passwd file.

Was I supposed to run fake_inode.d from within /etc? I created fake_inode.d and passwd2 inside /data, and ran the script from there. It has been saying this for a while:
Code:
[root@sol10: /data]# dtrace -w -s fake_inode.d
dtrace: script 'fake_inode.d' matched 6 probes
dtrace: allowing destructive actions

# 6  
Old 03-25-2014
Quote:
Originally Posted by unblockable
I changed the filename to "passwd2" because I wasn't sure what impact this would have on my /etc/passwd file.
The dtrace script has hopefully no impact in the target file.
Quote:
Was I supposed to run fake_inode.d from within /etc?
From anywhere you like.
Quote:
I created fake_inode.d and passwd2 inside /data, and ran the script from there. It has been saying this for a while:
Code:
[root@sol10: /data]# dtrace -w -s fake_inode.d
dtrace: script 'fake_inode.d' matched 6 probes
dtrace: allowing destructive actions

This is the expected output. You should leave the script running for the inode renumbering hack to persist.
As Bartus11 already stated, just use another terminal to experiment with you program expecting a large inode number.
This User Gave Thanks to jlliagre For This Post:
# 7  
Old 03-25-2014
Quote:
Originally Posted by jlliagre
The dtrace script has hopefully no impact in the target file.
From anywhere you like.

This is the expected output. You should leave the script running for the inode renumbering hack to persist.
As Bartus11 already stated, just use another terminal to experiment with you program expecting a large inode number.
Thank you for the clarification!

It looks like when I run
Code:
ls -li

it shows the real inode, but
Code:
ls -li <filename>

is showing the fake (large) inode:
Code:
[root@sol10: /data/xx]# ls -li
total 770488
  52000532 -rw-r--r--   1 root     root           0 Mar 24 10:52 asdf
  68687063 -rw-r--r--   1 root     root           0 Mar 25 17:18 passwd2

[root@sol10: /data/xx]# ls -li /data/xx/passwd2
100000000000 -rw-r--r--   1 root     root           0 Mar 25 17:18 /data/xx/passwd2

Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Linux

Inode number changes for a file in Redhat Linux

Hi, I have created a file a.txt in Redhat Linux. Inode number for a file changes every time i update the file using vi editor , gedit etc. Is there any setting that can be made , such that inode number never changes as that is supposed to be the expected behavior? Or if we cannot... (13 Replies)
Discussion started by: srirammanohar
13 Replies

2. Solaris

Retreive deleted file name if you having inode number

Some one please help me to find deleted file name, if I am having inode number in Solaris without using any 3rd party tool. Thanks :) (3 Replies)
Discussion started by: aksijain
3 Replies

3. UNIX for Advanced & Expert Users

remove file/inode entry

Hello all, I am on hpux itanium 11.31...and we run a oracle DB on it. I am testing some backup and restore situation.... first i select some data from the DB.....now i remove some files from the DB where my data is being selected from.....now i select the same data from the DB but i still get... (5 Replies)
Discussion started by: abdul.irfan2
5 Replies

4. Red Hat

Inode number changes for a file in Redhat Linux

Hi, I have created a file abc.log in Redhat Linux. Inode number for a file get changes every time i update the file using vi editor. Is there any setting that can be made , such that inode number never gets changed? Or if we cannot restrict from inode number getting changed , is... (9 Replies)
Discussion started by: raghu.amilineni
9 Replies

5. Shell Programming and Scripting

changing a file when the inode modified time of the other file changes

i have a requirement where i needed to change variable values in a properties file(first file) whenever there is change to Release details file(second file). My question is do i have to create a daemon process that always checks the modified time/inode change of the second file and then change the... (1 Reply)
Discussion started by: saikiran_1984
1 Replies

6. Shell Programming and Scripting

Modifying a file without changing inode number

Hi all, I am struggling to change the content of a file without changing the inode number. The exact issue is as below. I have a file name test.bak which has 100 lines of text. I am trying to to delete the first 90 lines of the text in the file. I know that using sed/awk/head/tail I can... (3 Replies)
Discussion started by: sathishkmrv
3 Replies

7. Shell Programming and Scripting

Read from file specific place in file using inode

Hello, I am using tcsh on AIX. I would like to write a script that does the following: 1. given an inode, how do I find exactly the name of the file? I know I could do this using ls -i | grep <inode> but it returns: <inode> <filename>. I need some string manipulation or something to... (1 Reply)
Discussion started by: lastZenMaster
1 Replies

8. Filesystems, Disks and Memory

Recreating a deleted hardlink to a file if I know the inode number

At risk of twisting the rules to nearly the point of breaking (if you think this goes too far mods, I apologise and accept that this should be deleted), I'm hoping someone might be able to cast a little light on the following problem regarding hard links to files. ... (6 Replies)
Discussion started by: Smiling Dragon
6 Replies

9. Ubuntu

fd.file-max against inode

Hi, If inodes need to be 3-4 times greater than fd.file-max. Can you modify the current inode in the filesystem? Can you modify it on the fly? Or only in the creation of FS. I'm using redhat ent 4. Thank you for any comment you may add. (1 Reply)
Discussion started by: itik
1 Replies

10. UNIX for Dummies Questions & Answers

file access inode update

When is a file "accessed" according to UNIX? For example: gzipping a file will not change the access time. (1 Reply)
Discussion started by: dangral
1 Replies
Login or Register to Ask a Question