一.umask权限模型
1.)umask是Linux中的权限模型,决定目录和文件被创建时的初始权限。如果是root用户创建目录的权限为755,文件权限为644。
root用户的umask值默认为022,就是上面将创建目录时使用777-022=755,文件则是666-022=644。
2.)755,644的权限是怎么来的?
目录的最大权限为777减去umask的022。而文件被创建时不应该有执行权限的,就是666减去umask的022。
-rw-r--r--.1 root root 18586 Oct 10 2013 functions
文件和目录的权限分为读(r),写(w),执行(x),如rwx对应的数字就是421,即为r=4,w=2,x=1。而文件或者目录又是分为三段,属主权限,属组权限,其他用户权限。每一段权限相加得出文件或者目录的权限为数字表示的,例如755,644。
可以看一下umask值为022的root创建目录,文件权限的大小。
# mkdir test_umask_dir # touch test_umask_file # ll drwxr-xr-x 2 root root 4096 Aug 3 04:58 test_umask_dir -rw-r--r-- 1 root root 0 Aug 3 04:58 test_umask_file 结合相对应的权限模型相加。
3.)接下来说说普通用户的umask值: 当普通用户的id与基本组id一致时,umask值为002。当普通用户的id与基本组id不一致时,umask值为022。
普通用户的id与基本组id相同:
# useradd gentoo # passwd gentoo # id gentoo uid=501(gentoo) gid=501(gentoo) groups=501(gentoo) $ whoami gentoo $ umask 0002
普通用户的id与基本组id不同:
# usermod -g zhang gentoo # id gentoo uid=501(gentoo) gid=500(zhang) groups=500(zhang) # su - gentoo $ whoami gentoo $ umask 0022
二.修改文件,目录权限管理
1.)文件的rwx权限:
r:可以使用查看里面的数据。
w: 可以修改其内容。
x: 可以把他提交给内核启动为一个进程。
目录的rwx权限:
r: 可以使用ls命令查看属性,及里面的内容。
w: 可以在内部创建或者删除文件。
x: 可以切换进目录。
2.)如何修改目录或者文件的权限。
chmod命令:
操作指定类别使用者的权限:
u:属主 g:属组 o:其他 a:all 例如下面这个文件的默认权限:644。 -rw-r--r-- 1 root root 0 Aug 3 04:58 test_umask_file # chmod g+w test_umask_file # ls -l test_umask_file -rw-rw-r-- 1 root root 0 Aug 3 04:58 test_umask_file # chmod ugo+rwx test_umask_file -rwxrwxrwx 1 root root 0 Aug 3 04:58 test_umask_file 上面的命令也可以把ugo换成a。 还可以使用=号代替+号。
递归修改权限,把文件和目录的权限修改成一样的。
# chmod -R 755 test/ # ll drwxr-xr-x 3root root 4096 Aug 3 04:58 test # cd test/ # ll total 4 drwxr-xr-x 2 root root 4096 Aug 3 04:58 test_umask_dir -rwxr-xr-x 1 root root 0 Aug 3 04:58 test_umask_file
3.)修改文件或者目录的属主属组。
chown命令
drwxr-xr-x2 root root 4096 Aug 3 04:58test_umask_dir
此目录的属主属组都是root,现在改成属主为gentoo。
# chown gentoo: test_umask_dir/ # ll total 4 drwxr-xr-x 2 gentoo zhang 4096 Aug 3 04:58 test_umask_dir 如果只是修改属主的话,上面的命令则是有问题的,看出来了吧,属组变成gentoo的基本组了。 要使用: # chown root test_umask_dir/ # ll total 4 drwxr-xr-x 2 root zhang 4096 Aug 3 04:58 test_umask_dir
现在修改此目录的属组为gentoo。
# chown :gentoo test_umask_dir/
# ll
total 4
drwxr-xr-x 2 root gentoo 4096 Aug 3 04:58 test_umask_dir
除root用户以外的组或者用户不允许访问test_umask_dir/。
# su - gentoo $ cd /tmp/test/ $ ls test_umask_dir test_umask_file $ cd test_umask_dir/ $ pwd /tmp/test/test_umask_dir 修改目录权限 # chmod go= test_umask_dir/ # ll total 4 drwx------ 2 root zhang 4096 Aug 3 04:58 test_umask_dir 再次切换到gentoo用户时: $ cd test_umask_dir/ -bash: cd: test_umask_dir/: Permission denied
4.)文件或者目录权限位之前的字母或者符号意义:
d: 代表为目录。
-:代表普通文件。
l:代表符号链接文件。
c:代表字符设备节点。
b: 代表块设备。
P:代表命名管道。
s: 代表为socket套接字。
总结:文件被创建时没有执行权限,如果umask值为023的话,创建一个文件的权限不是643,而是644,文件权限自动加1。
如果umask值为024的话,创建的目录则是有执行权限的。仅文件不允许被创建是就有执行权限。
如果使用chmod+w的命令,仅属主会改变权限。如果chmod+x 或者 +r 则会同时改变属主属组权限。
如果给予一个文件执行权限,则所有用户都有执行权限。