赞
踩
目录
权限可以对文件所有者的内容进行保护,也可以分享内容给特定的用户。一般给文件设置权限可以达到三种效果:
1.使用ll可以查看文件的权限
[root@mask ~]# ll -h *.txt
-rw-r--r-- 1 root root 115 Oct 12 10:03 aaa.txt
-rw-r--r-- 1 root root 27K Oct 10 16:27 ceshi.txt
-rw-r--r-- 1 root root 1.2K Apr 3 2020 idea快捷键.txt
-rw-r--r-- 1 root root 16 Oct 10 16:35 test2.txt
-rw-r--r-- 1 root root 12 Oct 10 17:30 test.txt
-rw-r--r-- 1 root root 83 Oct 12 09:59 测试乱码文件.txt
#-rw-r--r--即是文件权限的描述
2.文件权限释义如下图:
1.文件类型如下:
2.系统常见的文件类型
#字符设备文件 [root@mask ~]# ll /dev/tty crw-rw-rw- 1 root tty 5, 0 Oct 14 02:40 /dev/tty #块设备文件 [root@mask ~]# ll /dev/sd* brw-rw---- 1 root disk 8, 0 Oct 14 02:40 /dev/sda brw-rw---- 1 root disk 8, 1 Oct 14 02:40 /dev/sda1 brw-rw---- 1 root disk 8, 2 Oct 14 02:40 /dev/sda2 brw-rw---- 1 root disk 8, 16 Oct 14 02:40 /dev/sdb brw-rw---- 1 root disk 8, 17 Oct 14 02:40 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Oct 14 02:40 /dev/sdb2 brw-rw---- 1 root disk 8, 21 Oct 14 02:40 /dev/sdb5 brw-rw---- 1 root disk 8, 22 Oct 14 02:40 /dev/sdb6 #符号链接文件 [root@mask ~]# ll /dev/cdrom lrwxrwxrwx 1 root root 3 Oct 14 02:40 /dev/cdrom -> sr0 #目录文件 [root@mask ~]# ll -d / dr-xr-xr-x. 21 root root 4096 Oct 14 02:22 / #普通文件 [root@mask ~]# ll /etc/hosts -rw-r--r--. 1 root root 356 Apr 28 2019 /etc/hosts #套接字文件 [root@mask ~]# ll /var/lib/gssproxy/default.sock srw-rw-rw- 1 root root 0 Oct 14 02:40 /var/lib/gssproxy/default.sock
1.Linux下的文件权限类型一般包括读,写,执行,对应的字母是: r ,w,x。
2.对于文件来说:
3.对于目录来说:
4.常见的文件权限如下:
5.每个用户都有自己的专属目录,通常放置在/home下面
[root@mask ~]# ll -h /home
total 4.0K
drwx------ 3 elk elk 120 Oct 14 01:42 elk
drwx------ 6 esnode esnode 4.0K Apr 27 14:27 esnode
drwx------ 2 nginx nginx 62 May 7 2019 nginx
drwx------ 3 www www 73 May 7 2019 www
注:[rwx------]表示目录所有者本身拥有的权限,其它用户无法进入的,root除外
6.你以什么用户身份登录,那么你创建的目录或文件,自动成为该文件或目录的所属
[root@mask ~]# su - elk
Last login: Wed Oct 14 01:42:49 CST 2020 on pts/0
[elk@mask ~]$ pwd
/home/elk
[elk@mask ~]$ touch b.txt
[elk@mask ~]$ ll b.txt
-rw-rw-r-- 1 elk elk 0 Oct 14 15:10 b.txt
[elk@mask ~]$
[elk@mask ~]$ exit
logout
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名):ls |
w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任意文件:touch mkdir rm mv cp |
x(执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限):cd cat |
1.文件的用户分类:U(文件所有者)-G(用户组)-O(其他用户)
1.改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主 change owner
chgrp:可以用来改变文件(或目录)的默认属组 change group
如果你要对目录进行操作,加参数 -R
chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为hr,san
chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
chown user filename 比如:chown san a.txt 把文件的属主改为san用户
chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao这个组
chgrp hr filename 比如: chgrp hr f.txt
-R :递归(目录下的所有内容都更改,否则只修改目录)
[root@mask ~]# ll -h *.txt -rw-r--r-- 1 root root 115 Oct 12 10:03 aaa.txt -rw-r--r-- 1 root root 115 Oct 14 16:54 bbb.txt -rw-r--r-- 1 root root 115 Oct 14 16:54 ccc.txt -rw-r--r-- 1 root root 115 Oct 14 16:55 ddd.txt [root@mask ~]# chown esnode aaa.txt [root@mask ~]# ll aaa.txt -rw-r--r-- 1 esnode root 115 Oct 12 10:03 aaa.txt [root@mask ~]# chown esnode:esnode bbb.txt [root@mask ~]# ll bbb.txt -rw-r--r-- 1 esnode esnode 115 Oct 14 16:54 bbb.txt [root@mask ~]# chown :logstash ccc.txt [root@mask ~]# ll ccc.txt -rw-r--r-- 1 root logstash 115 Oct 14 16:54 ccc.txt [root@mask ~]# chown elk: ddd.txt [root@mask ~]# ll ddd.txt -rw-r--r-- 1 elk elk 115 Oct 14 16:55 ddd.txt [root@mask ~]# cp ddd.txt eee.txt [root@mask ~]# ll eee.txt -rw-r--r-- 1 root root 115 Oct 14 17:00 eee.txt [root@mask ~]# chgrp elk eee.txt [root@mask ~]# ll eee.txt -rw-r--r-- 1 root elk 115 Oct 14 17:00 eee.txt
[root@mask ~]# su - elk Last login: Wed Oct 14 15:10:16 CST 2020 on pts/0 [elk@mask ~]$ pwd /home/elk [elk@mask ~]$ touch test.txt [elk@mask ~]$ echo "hello world ! " >> test.txt [elk@mask ~]$ [elk@mask ~]$ ll -h total 4.0K -rw-rw-r-- 1 elk elk 15 Oct 14 19:17 test.txt [elk@mask ~]$ chmod 000 test.txt [elk@mask ~]$ [elk@mask ~]$ ll -h total 4.0K ---------- 1 elk elk 15 Oct 14 19:17 test.txt [elk@mask ~]$ [elk@mask ~]$ echo 12 >> test.txt -bash: test.txt: Permission denied [elk@mask ~]$ vim test.txt [elk@mask ~]$ cat test.txt cat: test.txt: Permission denied [elk@mask ~]$ pwd /home/elk [elk@mask ~]$ ls test.txt [elk@mask ~]$ exit logout [root@mask ~]# cat /home/elk/test.txt hello world ! [root@mask ~]# su - elk Last login: Wed Oct 14 19:14:43 CST 2020 on pts/0 #强行写入 [elk@mask ~]$ vim test.txt qwe qwe "test.txt" 2L, 8C written [elk@mask ~]$ [elk@mask ~]$ cat test.txt cat: test.txt: Permission denied [elk@mask ~]$ [elk@mask ~]$ exit logout [root@mask ~]# [root@mask ~]# cat /home/elk/test.txt qwe qwe
结论:文件所有者一定可以写文件,就像root可以对shadow强制写, 因为shadow的拥有者是root。
1.修改权限用的命令:chmod,作用:修改文件,目录的权限
2.chmod的命令格式:
chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u----> 用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all
操作符:
+:添加权限 ,- :减少权限 ;= :直接给定一个权限
权限:r w x
参数 | 描述 |
---|---|
u-w | 给文件拥有者减去读的权限 |
g+x | 给用户组加上执行的权限 |
o=r | 赋予其他用户读的权限 |
a+x | 给所有用户加上执行的权限 |
[root@mask ~]# su - elk [elk@mask ~]$ touch test.txt [elk@mask ~]$ ll total 0 -rw-rw-r-- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ chmod u-w test.txt [elk@mask ~]$ ll total 0 -r--rw-r-- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ chmod o=w test.txt [elk@mask ~]$ ll total 0 -r--rw--w- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ chmod u+wx test.txt [elk@mask ~]$ [elk@mask ~]$ ll total 0 -rwxrw--w- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ chmod g=- test.txt [elk@mask ~]$ [elk@mask ~]$ ll total 0 -rwx----w- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ [elk@mask ~]$ chmod a=r test.txt [elk@mask ~]$ [elk@mask ~]$ ll total 0 -r--r--r-- 1 elk elk 0 Oct 14 19:32 test.txt
1.八进制表示法
权限 | 二进制值 | 八进制值 | 描述 |
---|---|---|---|
— | 000 | 0 | 没有任何权限 |
–x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r– | 100 | 4 | 只有读取权限 |
r-x | 101 | 5 | 有读取和执行权限 |
rw- | 110 | 6 | 有读取和写入权限 |
rwx | 111 | 7 | 有全部权限 |
2.改变权限的语法:chmod 755 文件或目录
chmod a=rwx b.txt 等价于 chmod 777 b.txt
[root@mask ~]# su - elk Last login: Wed Oct 14 19:30:54 CST 2020 on pts/0 [elk@mask ~]$ ll total 0 -r--r--r-- 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ chmod 755 test.txt [elk@mask ~]$ ll total 0 -rwxr-xr-x 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ [elk@mask ~]$ chmod 700 test.txt [elk@mask ~]$ [elk@mask ~]$ ll total 0 -rwx------ 1 elk elk 0 Oct 14 19:32 test.txt [elk@mask ~]$ stat -c%a test.txt 700 [elk@mask ~]$ stat -c%A test.txt -rwx------
1.为什么我们创建的文件的权限是644呢?我们创建文件的默认权限是怎么来的?
答:umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数
字,当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask用于设置用
户创建文件或者目录的默认权限,umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。
2.文件默认权限=666 ,目录默认权限=777
3.为什么文件比目录权限少1? x cd
4.我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。永久生效,编辑用户的配置文件vim
.bash_profile
[elk@mask ~]$ cat /etc/profile ...... if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi ...... [elk@mask ~]$ id -gn elk [elk@mask ~]$ id -un elk 注释:UID大于199 且用户的组名和用户名一样,那么 umask值为002,否则为022。 注释: -gt 在shell中表示大于; id -un 显示用户组ID ,id -gn显示组名。
5.设置umask临时生效
[root@mask ~]# umask 044
[root@mask ~]# touch b.txt
[root@mask ~]# stat -c %a b.txt
622
[root@mask ~]# ll b.txt
-rw--w--w- 1 root root 0 Jul 7 21:51 b.txt
6.umask权限的算法
权限的算法:一般情况是:目录默认权限-umask 值
666-022=644
777-022=755
这是一个好的记忆方法,但不严谨。
互动:umask掩码为033 创建普通文件后,权限是什么? 666-033=633 ( rw- -wx -wx) ?
[root@mask ~]# umask 033
[root@mask ~]# touch c.txt
[root@mask ~]# ll c.txt
-rw-r--r-- 1 root root 0 Jul 7 21:54 c.txt
[root@mask ~]# stat -c %a c.txt
644
权限科学的计算方法:
1、将默认权限(目录777,文件666)和umask值都转换为2进制
2、对umask取反
3、将默认权限和umask取反后的值做与运算
4、将得到的二进制值再转换8进制,即为权限,
例1:umask为022
6 6 6 umask 0 2 2
110 110 110 000 010 010 #转成二进制
111 101 101 #umask取反的值
做运算
110 110 110
111 101 101
结果
110 100 100 #转成8进制 6 4 4
例2: umask 为033 结果为: 644
6 6 6 umask 0 3 3
110 110 110 000 011 011 # 转成二进制
111 100 100 # umask取反的值
110 110 110 与 #默认权限和umask取反后的值做与运算
111 100 100 # umask取反的值
110 100 100
6 4 4 #转成8进制
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。