Home

NUNU

11 Jun 2018

Linux的文件权限及chattr与lsattr命令

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念

  • 所有者

  • 所在组

  • 其它组

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

用ls ‐ahl命令可以看到文件的所有者

也可以使用chown 用户名 文件名来修改文件的所有者

文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

用ls ‐ahl命令可以看到文件的所有组

也可以使用chgrp 组名 文件名来修改文件所在的组

其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

文件权限

ll 中显示的内容如下:

-rwxrw-r--. 1 test test 73 Jun 4 11:24 test.sh

10个字符的含义
  • 第一个字符代表文件(-)、目录(d),链接(l)

  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

  • 第一组rwx:文件所有者的权限是读、写和执行

  • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

  • 第三组r–:不与文件所有者同组的其他用户的权限是读不能写和执行

  • 也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7

  • 1 表示连接的文件数

  • test 表示用户

  • test 表示用户所在的组

  • 73 表示文件大小(字节)

  • Jun 4 11:24 表示最后修改日期

  • test.sh 表示文件名

改变权限的命令
  • chmod 改变文件或目录的权限

  • chmod 755 test.sh # 赋予test.sh权限rwxr-xr-x

  • chmod u=rwx,g=rx,o=rx test.sh # 同上u=用户权限,g=组权限,o=不同组其他用户权限

  • chmod u-x,g+w test.sh # 给test.sh去除用户执行的权限,增加组写的权限

  • chmod a+r test.sh # 给所有用户添加读的权限

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组

  • usermod ‐g 组名 用户名

  • usermod ‐d 目录名 用户名,改变该用户登录的初始目录

改变所有者(chown)和用户组(chgrp)命令

chown xiaoming test.sh # 改变abc的所有者为xiaoming

chgrp root test.sh # 改变abc所属的组为root

chown root ./test # 改变abc这个目录的所有者是root

chown ‐R root ./test # 改变test这个目录及其下面所有的文件和目录的所有者是root

chattr与lsattr命令

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。 chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。 通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。 chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

  1. 用chattr命令防止系统中某个关键文件被修改
# chattr +i /etc/resolv.conf 
然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果
vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。
要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf

# lsattr /etc/resolv.conf 

会显示如下属性

----i-------- /etc/resolv.conf 

  1. 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

# chattr +a /var/log/messages

【参考】

  • groupadd 组名 # 在linux中添加组

  • vi /etc/group # 查看linux中所有组信息,可以看可以编辑

  • cat /etc/group # 查看linux中所有组信息,只可以看不可以编辑

  • useradd ‐g 组名 用户名 # 创建用户的同时指定将该用户分配到哪个组下

  • vi /etc/passwd # 查看linux中所有用户信息,可以看可以编辑


业精于勤,荒于嬉; 行成于思,毁于随。
pnunu at 19:40

Flag Counter