Customized chown Linux Command

Question: want to change the file owner and permission as required by a normal user (not root) !


  1. chown or chmod ; will occur the error “Operation not permitted” because it required root permission.
  2. Via sudo, it is not easy.
  3. C code and SUID

Customized chown Linux Command
I go with 3) for easy customizing and just configure via shell script. And because kernel 2.6.x have several security improvement, it make the chown & chmod in shell script (enable SUID) not working. So must have C code wrapper for do it as example /usr/local/bin/chown_test.c


Build execute binary “chown_test” and change permission only root access for C code

/usr/local/bin/ Custom and directory specific over !

change permission only root access for .sh (configuration part!)

/usr/local/bin is the default in $PATH. Now, we can use chown_test for changing file under /test directory.

Advanced File Permissions in Linux

Here we will discuss about the 3 special attributes other than the common read/write/execute.
drwxrwxrwt – Sticky Bits – chmod 1777
drwsrwxrwx – SUID set – chmod 4777
drwxrwsrwx – SGID set – chmod 2777
combile All: Sticky Bits +SUID set + SGID set : chmod 7777

Sticky bit

Sticky bits are mainly set on directories.
If the sticky bit is set for a directory, only the owner of that directory or the owner of a file can delete or rename a file within that directory.

Consider you have a directory ” test “.
chmod it to ” 777 “. This gives permissions for all the users to read, write and execute.
chmod +t test

Example: ls -al
drwxrwxrwt 2 a1 a1 4096 Mar 13 2012 .
-rw-rw-r– 1 a1 a1 0 Mar 11 17:30 1.txt
-rw-rw-r– 1 b2 b2 0 Mar 11 22:52 2.txt

From the above example a1 is the owner of the test directory.
a1 can delete or rename the files 1.txt and 2.txt.
b2 can delete or rename the file 2.txt only.

SUID – [ Set User ID ]

SUID bit is set for files ( mainly for scripts ).
The SUID permission makes a script to run as the user who is the owner of the script, rather than the user who started it.

SGID – [ Set Group ID ]

If a file is SGID, it will run with the privileges of the files group owner, instead of the privileges of the person running the program.
This permission set also can make a similar impact. Here the script runs under the groups ownership.

You can also set SGID for directories.
Consider you have given 2777 permission for a directory. Any files created by any users under this directory will come as follows.

drwxrwsrwt 2 a1 a1 4096 Jun 13 2012 .
-rw-rw-r– 1 b1 a1 0 Jun 11 17:30 1.txt
-rw-rw-r– 1 c3 a1 0 Jun 11 17:30 2.txt
-rw-rw-r– 1 d4 a1 0 Jun 11 17:30 3.txt

So all the a1 user has access to all the files under the test directory. He can edit, rename or remove the file.
b1 user has access to 1.txt only, c3 has access to 2.txt only…

If sticky bit was not set for the test directory, any user can delete any files from the test directory, since the test directory has 777 permissions. But now it not possible !.

Customized chown Linux Command
Tagged on: