linux有什么文件权限操作?如何正确设置文件权限?
linux有3种人的权限,文件的所有者(属主)、文件属组用户和其他人。
而root账号有什么权限呢?
root用户可以查看、修改、删除所有人的文件。Root用户还拥有控制一台计算机的完整权限。
文件和目录用什么来表示权限呢?
读取(r)、写入(w)和执行(x)
我们使用ls -l 命令来查看文件的属性包括哪些权限?
#ls -l /bin/login
-rwxr-xr-x 1 root root 38096 2022-06-01 8:00 /bin/login
这条命令列出来了/bin/login文件的主要属性信息。第一个字符表示文件类型,在上例中是“_”,表示是一个普通文件。接下来“rwxr-xr-x”就是3组权限位。这9个字符应该被这样断句:rwx、r-x、r-x, r表示可读,w表示可写,x表示可执行,分别表示属主(拥有读写执行权限)、属组和其他人所拥有(读和执行)的权限。如果某个权限被禁用,那么就用一个短画线“_”代替。由上面例子可以看出login文件的属主是root用户,而属组是root组。
文件权限后面的1表示的是该文件的链接数目。1表示该文件只有一个硬链接。38096表示的是文件的大小(38096字节)2022-06-01 8:00指最后修改日期,/bin/login 表示文件的完整路径。
查看目录的属性可以使用什么参数呢?
可以用-ld
#ls -ld /etc/
不带文件名有什么参数呢?
ls -l命令可以列出当前目录下所有文件(不包含隐藏文件)的属性。
#ls -l
接下来我们来看一下八进制计法。每一组权限rwx在计算机中实际上占用了3位,每一位都有2种情况。例如对于写入位,只有“设置(r)”和“没有设置(-)”两种情况。这样计算机就可以使用二进制0和1来表示每一个权限位,其中0表示没有设置,而1表示设置。例如rwx就被表示为111,“-w-”表示为010等。在实际使用中,我们要记住1代表x、2代表w、4代表r,再进行加法。如rwx=4+2+1=7,r-x=4+0+1=5 --x=0+0+2=2 可以写成752
我们可以使用chmod命令来修改文件的权限例如:
#chmod 711 cxw
#ls -l cxw
-rwx- -x- -x 1 root root 61 2022-06-01 8:30 cxw
用户主包括了文件属主(u)、文件属组(g)、其他人(o)和所有人(a),而权限则包括了读取(r)、写入(w)和执行(x).
如何增加属主对文件days的执行权限。
#chmod u+x days
如何用chmod 同时指定所有人,删除所有人(属主、属组和其他人)对days的执行权限。
#chmod a-x days
如何通过“用户组=权限”的规则直接设置文件权限。同样应用于文件days,赋予属主和属主的读取/写入权限,其他用户读取权限。
#chmod ug=rw,o=r days
最后“用户组1=用户组2”,应用days文件,将其他人的权限设置为和属主的权限一样。
#chmod o=u days
最后,我们要记住只有文件的属主和root用户才有权限修改文件的权限。
接下来我们来看一下更改文件的所有权chown和chgrp
#sudo chown cxw:root days //修改day的所有权
如果只需要更改文件的属主,那么可以省略参数“group”把days文件的属主更改为guest用户,保留其属组设置。
#sudo chown guest days
把days文件的属组更改为nogroup组,而保留其属主设置。
#sudo chown :nogroup days
改变一个目录及其下所有文件(和子目录)的所有权设置用-R参数
#sudo chown -R cxw iso/
#ls -l iso/
Linux还有另外一个命令chgrp用于设置文件的属组。
#sudo chgrp nogrup days
chgrp也可以使用-R选项递归对一个目录实施设置。
#sudo chgrp root iso/
Chgrp命令实现了chown的一部分功能,但更直观告诉人们它要干什么。在实际工作中是否使用chgrp根据个人使用习惯。