改变文件属性和权限
-rw-r--r-- 1 sherry staff 14K 11 26 15:56 package.json
档案类型权限 连接数 拥有者 群组 大小 时间 文件名
档案类型权限
d rwx rwx rwx
为了看的比较清楚,这里用空格分开了。除了第一个字符,剩下的一次三个一组。
r:可读read
w:可写write
x:可执行execute
-:改位置没有权限显示-
第一个字符:d-目录、-文件、l-链接档、b、c
第一组:文件拥有者可具备的权限
第二组:加入此群组的账号具备的权限
第三组:其他账号的权限
注意:rwx 所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。
例子:
[ - ][rwx][r-x][r--]
[-]: 这个为文件
[rwx]: 拥有者的权限,本例中为可读、可写、可执行(rwx);
[r-x]: 同群组用户权力,本例中为可读可执行(rx);
[r--]: 其他用户权力,本例中为可读(r),就是只读之意
chgrp :改变文件所属群组(change group)
chown :改变文件拥有者(change owner )
chmod :改变文件权限, SUID, SGID, SBIT 等等的特性
chgrp
chgrp [-R] [群组名] [文件名]
// -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
chown
chown [-R] [账号名称] [文件或目录]
chown [-R] [账号名称:组名] [文件或目录]
// -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
// cp会把文件文件属性和权限都复制过去
cp [来源文件] [目标文件]
chmod
权限的设定方法有两种:
数字类型改变文件权限
符号类型改变文件权限
数字类型改变文件权限
数字对照表:
r:4
w:2
x:1
小例子:
[-rwxrwx---]
分数👇
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
chmod [-R] [xyz] [文件或目录]
// 选项与参数:
// xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
// -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
chmod 777 [文件名] // 改文件权限变为 -rwxrwxrwx
常常我们以 vim 编辑一个 shell 的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是 664, 如果要将该文件变成可执行 文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x 这样的权限,此时就得要下达:chmod 755 test.sh的指令啰!
如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为例如:-rwxr——,那就下达 chmod 740 filename吧!
符号类型改变文件权限
权限分为user/group/others三种,可以由 u, g, o 来代表三种身份的权限。a 则代表 all 亦即全部。
小例子:
// 题: [-rwxr-xr-x]
chmod u=rwx,go=rx [文件名]
// 题:[-rwxr-xr--]
chmod u=rwx,g=rx,o=r [文件名]
注意: u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
如果我不知道原先的文件属性,而我只想要增加.bashrc 这个文件的每个人均可写入的权限,那么我就可以使用:
chmod a+w [文件名]
拿掉全部人的可执行权限
chmod a-x [文件名]
权限的意义
文件权限
r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x (eXecute):该文件具有可以被系统执行的权限。
注意:Windows 底下一个文件是否具有执行的能力是藉由『 扩展名 』来判断的, 例如:.exe, .bat, .com 等等,但是在 Linux 底下,我们的文件是否能被执行,则是藉由是否具有『x』这个权限来决定的!跟扩展名是没有绝对的关系的!
w 权限:你可以具有写入/编辑/新增/修改文件 的内容的权限, 但不具备有删除该文件本身的权限!!
目录权限
* r: 可以查询该目录下的文件名数据,可以利用`ls`这个指令将该目录的内容列表显示。
* w: 新建/删除/更名/更改位置【文件/目录】
* x: 用户能否进入该目录成为工作目录(目录当然不可以执行)
注意:不论有咩有具体文件是什么权限,都可以删除
小例子:
drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh
# vbird,这个账号并没有支持 root 群组,请问 vbird 对这个目录有何权限?是否可切换到此目录中?
# 答:
# vbird 对此目录仅具有 r 的权限,因此 vbird 可以查询此目录下的文件名列表。因为 vbird 不具有 x 的权限,亦即 vbird没有这个抽屉的钥匙啦! 因此 vbird 并不能切换到此目录内!(相当重要的概念!)
注意:如果你在某目录下不具有 x 的权限, 那么你就无法切换到该目录下,也就无法执 行该目录下的任何指令,即使你具有该目录的 r 或 w 的权限。
小例子:
账号:dmtsai 目录:/home/dmtsai/ 改目录权限:[rwx]
该目录下文件:-rwx------ 1 root root 4365 Sep 19 23:20 the_root.data
dmtsai 对此文件来说是『others』的身份,无法修改改文件。但是他有改文件上级目录的完整权限,所以他可以删除这个文件!
针对 /dir1, /dir1/file1, /dir2 这三个档名来说, 分别需要『哪些最小的权限』才能达成各项任务?
注意: 上面很多动作中,你只要具有 x 即可!r 是非必备的!只是,没有 r 的话,使用 [tab] 时,他就无法自动帮你补齐档名了!
参考
鸟哥的Linux私房菜[第五章第二节]