Difference between revisions of "Chmod"
Rafahsolis (talk | contribs) |
Rafahsolis (talk | contribs) |
||
| (7 intermediate revisions by the same user not shown) | |||
| Line 8: | Line 8: | ||
<br /> | <br /> | ||
Examples<br /> | Examples<br /> | ||
| + | * 4 = r-- | ||
| + | * 6 = rw- | ||
| + | * 7 = rwx | ||
<br /> | <br /> | ||
<nowiki> | <nowiki> | ||
| Line 18: | Line 21: | ||
|chmod u=rwx,go= | chmod 700 | | |chmod u=rwx,go= | chmod 700 | | ||
x------------------------x-----------x | x------------------------x-----------x | ||
| − | + | test: Du=rwx,go=rx,Fu=rw,og=r | |
</nowiki> | </nowiki> | ||
| + | Sitcky bit:<br /> | ||
| + | When assigned to a directory, the elements inside it can only be renamed by:<br /> | ||
| + | * the owner of the element | ||
| + | * the owner of the directory | ||
| + | * root | ||
| + | chmod +t dir_name | ||
| + | chmod -t dir_name | ||
<br /> | <br /> | ||
chmod 400 file - Read by owner<br /> | chmod 400 file - Read by owner<br /> | ||
| Line 36: | Line 46: | ||
chmod 444 file - Allow read permission to owner and group and world<br /> | chmod 444 file - Allow read permission to owner and group and world<br /> | ||
chmod 777 file - Allow everyone to read, write, and execute file<br /> | chmod 777 file - Allow everyone to read, write, and execute file<br /> | ||
| + | |||
| + | == Change permissions only for directories == | ||
| + | chmod 755 $(find /path/to/base/dir -type d) | ||
| + | |||
| + | == Change permissions only for files == | ||
| + | chmod 640 $(find /path/to/base/dir -type f) | ||
| + | for fi in $(find /Pilaf -type f); do chmod 640 $fi;done # if there are many files | ||
| + | |||
| + | == Chmod Script == | ||
| + | <nowiki>#!/bin/sh | ||
| + | # syntax: setperm.s destdir | ||
| + | # | ||
| + | if [ -z $1 ] ; then echo "Requires single argument: <directoryname>" ; exit 1 ; fi | ||
| + | |||
| + | destdir=$1 | ||
| + | |||
| + | dirmode=0770 | ||
| + | filemode=0660 | ||
| + | |||
| + | YN=no | ||
| + | |||
| + | printf "\nThis will RECURSIVELY change the permissions for this entire branch:\n " | ||
| + | printf "\t$destdir\n" | ||
| + | printf "\tDirectories chmod = $dirmode\tFiles chmod = $filemode\n" | ||
| + | printf "Are you sure want to do this [$YN]? " | ||
| + | |||
| + | read YN | ||
| + | |||
| + | case $YN in | ||
| + | [yY]|[yY][eE][sS]) | ||
| + | # change permissions on files and directories. | ||
| + | find $destdir -type f -print0 | xargs -0 chmod $filemode $i | ||
| + | find $destdir -type d -print0 | xargs -0 chmod $dirmode $ii ;; | ||
| + | |||
| + | *) echo "\nBetter safe than sorry I always say.\n" ;; | ||
| + | esac</nowiki> | ||
Latest revision as of 15:42, 15 February 2019
chmod <octal_value> file
The octal (0-7) value is calculated by adding up the values for each digit
User (rwx) = 4+2+1 = 7
Group(rx) = 4+1 = 5
World (rx) = 4+1 = 5
chmode mode = 0755
Examples
- 4 = r--
- 6 = rw-
- 7 = rwx
x------------------------x-----------x |chmod u=rwx,g=rwx,o=rx | chmod 775 | |chmod u=rwx,g=rx,o= | chmod 760 | |chmod u=rw,g=r,o=r | chmod 644 | |chmod u=rw,g=r,o= | chmod 640 | |chmod u=rw,go= | chmod 600 | |chmod u=rwx,go= | chmod 700 | x------------------------x-----------x test: Du=rwx,go=rx,Fu=rw,og=r
Sitcky bit:
When assigned to a directory, the elements inside it can only be renamed by:
- the owner of the element
- the owner of the directory
- root
chmod +t dir_name chmod -t dir_name
chmod 400 file - Read by owner
chmod 040 file - Read by group
chmod 004 file - Read by world
chmod 200 file - Write by owner
chmod 020 file - Write by group
chmod 002 file - Write by world
chmod 100 file - execute by owner
chmod 010 file - execute by group
chmod 001 file - execute by world
To combine these, just add the numbers together:
chmod 444 file - Allow read permission to owner and group and world
chmod 777 file - Allow everyone to read, write, and execute file
Change permissions only for directories
chmod 755 $(find /path/to/base/dir -type d)
Change permissions only for files
chmod 640 $(find /path/to/base/dir -type f) for fi in $(find /Pilaf -type f); do chmod 640 $fi;done # if there are many files
Chmod Script
#!/bin/sh
# syntax: setperm.s destdir
#
if [ -z $1 ] ; then echo "Requires single argument: <directoryname>" ; exit 1 ; fi
destdir=$1
dirmode=0770
filemode=0660
YN=no
printf "\nThis will RECURSIVELY change the permissions for this entire branch:\n "
printf "\t$destdir\n"
printf "\tDirectories chmod = $dirmode\tFiles chmod = $filemode\n"
printf "Are you sure want to do this [$YN]? "
read YN
case $YN in
[yY]|[yY][eE][sS])
# change permissions on files and directories.
find $destdir -type f -print0 | xargs -0 chmod $filemode $i
find $destdir -type d -print0 | xargs -0 chmod $dirmode $ii ;;
*) echo "\nBetter safe than sorry I always say.\n" ;;
esac