The inode (index node) is a fundamental concept in the Linux and UNIX filesystem. Each object in the filesystem is represented by an inode. But what are the objects? Let us try to understand it in simple words. Each and every file under Linux (and UNIX) has following attributes:
=> File type (executable, block special etc)
=> Permissions (read, write etc)
=> Owner
=> Group
=> File Size
=> File access, change and modification time (remember UNIX or Linux never stores file creation time, this is favorite question asked in UNIX/Linux sys admin job interview)
=> File deletion time
=> Number of links (soft/hard)
=> Extended attribute such as append only or no one can delete file including root user (immutability)
=> Access Control List (ACLs)
All the above information stored in an inode. In short the inode identifies the file and its attributes (as above) . Each inode is identified by a unique inode number within the file system. Inode is also know as index number.
inode definition
An inode is a data structure on a traditional Unix-style file system such as UFS or ext3. An inode stores basic information about a regular file, directory, or other file system object.
How do I see file inode number?
You can use ls -i command to see inode number of file
$ ls -i /etc/passwd
Sample Output
32820 /etc/passwd
You can also use stat command to find out inode number and its attribute:
$ stat /etc/passwdOutput:
File: `/etc/passwd' Size: 1988 Blocks: 8 IO Block: 4096 regular file Device: 341h/833d Inode: 32820 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2005-11-10 01:26:01.000000000 +0530 Modify: 2005-10-27 13:26:56.000000000 +0530 Change: 2005-10-27 13:26:56.000000000 +0530
Inode application
Many commands used by system administrators in UNIX / Linux operating systems often give inode numbers to designate a file. Let us see he practical application of inode number. Type the following commands:
$ cd /tmp
$ touch \"la*
$ ls -l
Now try to remove file "la*
You can't, to remove files having created with control characters or characters which are unable to be input on a keyboard or special character such as ?, * ^ etc. You have to use inode number to remove file. This is fourth part of "Understanding UNIX/Linux file system, continue reading rest of the Understanding Linux file system series (this is part IV):
- Part I - Understanding Linux superblock
- Part II - Understanding Linux superblock
- Part III - An example of Surviving a Linux Filesystem Failures
- Part IV - Understanding filesystem Inodes
- Part V - Understanding filesystem directories
- Part VI - Understanding UNIX/Linux symbolic (soft) and hard links
- Part VII - Why isn't it possible to create hard links across file system boundaries?
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- 10 Greatest Open Source Software Of 2009
- My 10 UNIX Command Line Mistakes
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
- Email this to a friend
- Download PDF version
- Printable version
- Comment RSS feed
- Last Updated: Sep/10/2008



{ 19 comments… read them below or add one }
OT but was wondering are you from India?
The timestamp is a give away
Yup I’m from India :)
hm, did I something wrong? I can remove the file with $ rm “la*
Future is , no one will load
executable code , only data and
data will be parsed by kernel and
typed , compresed , and added to
a structure .
This allows the OpSys to be tiny .
because it eliminates the extra
work the kernel had to do ,
explaining to humans ….
This obsoletes SU and makes it
much easier to “control” a machine .
Permissions are no longer necessary .
Scratch lists stop all unauthorized
acesses .
This not new , these simple fixes
have been around for 100’s of years ,
Only computer s/w can change in
minutes , and “pink slip” millions .
Great blog…. Has a lot of correct info and I find it very useful….
just to let you know…. that file once created can be removed in another way. using rm -i *. this is an interactive mode and asks you if want to delete each file in turn. so please correct as the above information you are providing is inaccurate.
Riz,
I’m aware of this command. A long time ago on NFS mounted system there was a file called 2001/05/11. and no UNIX / Linux command was able delete this file by name. Only method to delete such file is delete file by an inode number. Linux or UNIX never allows creating filename like 2001/05/11 but if you are using NFS from MAC OS or Windows then it is possible to create a such file.
So above information is 100% accurate.
vivek,
i dont have a windows box to test this so i will take you word as gold, but it is nice to see an active posting community rather than one which is dead (which i normally find whilst search things like this)
Riz.
What strange but true I cannot create a dir or file with this commands:
touch “10/11/2006″
mkdir “10/11/2006″
You can see what I’m using quotes to bypass the shell. But anyway I cannot create such file/dir.
That is for some reason?
I have other doubt (I don’t expect to be answered here): Why linux filesystem does not save “file creation time”? What is the reason?
Bye
It’s inaccurate to say that every file under Linux has the attributes that you listed … especially the extended attributes. All these attributes are properties of the filesystem, be it ext3, xfs, jfs etc. In particular, extended attributes apply to ext2/ext3
hi friends,,
plz i want some coomands in linux
1)question: in linux basic commands are not working that u can do.
example : ls
pc displays command not found.
2)question : i have 3 files. i want serach some words like kernel.all files are have kernel word so prints word as well as numbers with single line. using single command grep (or) sde command plz send syntax and example.
rm ‘”\la*’
deleted it fine for me
this is to aneyous according to my knowledge if u want to create a file say 10/11/2008 try this 10\11\2008 and for a directory also
guys i have one question i couldnt find an answer to ..i will explain in steps what did i do
from root user i did this:
1. adduser tarun
2. passwd tarun
3. log in to a terminal with user tarun
4. create a text file say “test1″ with “cat” and
type some text in it,and save the file.
5. now i did chmod 000 on the file.
6. i opened “test1″ with vim editor. i try
inserting some text in it i get a warning tht
i might be changing a read only file,
7. i save and exit the text inside “test1″
forcefully using “wq!”
8. now i do chmod 644 on “test1″and again open the file and write something in it and save it
9. if do “cat test1″ i see only the last text i inserted after doing chmod 644 and not anything before …could’nt figure it out why the system did not append the text i had just written to the text i had written earlier
There are no inodes for creating files, how can i overcome this situation
Tarun,
The command “chmod 000″ change the file rights. The code “000″ is in Octal.
The first byte is for file owner rights.
The second byte is for group rights.
The third byte is for rights according to other users.
The numbers, in octal, works as following:
0 = (—) = No right
1 = (–x) = Execute
2 = (-w-) = Write
4 = (r–) = Read
You can combine them:
3 = 1+2 = (-wx) = Write + Execute
5 = 1+4 = (r-x) = Read + Execute
6 = 2+4 = (rw-) = Read + Write
7 = 1+2+4 = (rwx) = Read + Write + Execute
Example, “chmod 740 somefile” will give full access to the owner of “somefile” (rwx), read only for other member of the file group (r–) and protect the file from been access by other users (—). The command “ls -l somefile” display this:
-rwxr—– 1 me filegroup 0 Feb 19 10:32 somefile
So, the command “chmod 000″ remove all rights to anyone on the file, including the owner. That’s why you can not wirte new data on it and you have to force quit from vi (q! is a forced quit).
The command “chmod 644″ give the number 6 for the owner (rw-) which give you back the read and write access.
hi,
innode ******** has illegal blocks. clear ?
what issue is this one. is this a major issue . kindly reply . i need help badly. mean while i am googling to find a solution
Hi Friends I am new to this linux world…. I am struck with one thing…. I want to know how we can change our root password if i forget this….
welcome to the world of Linux
its quite easy to change password of root..start ur OS in single user mode….for tht u simply edit kernal parameter
to edit kernal simply go to kernal parameter press (e) to edit,nw simply rite 1 thr & thn press (b) to boot system to boot the system..
thr u will get a shell kind of( sh.3#) there simply type (passwd) shell will ask u for new Unix password..type the new password,thn retype it.ur password will b changed