Linux :文件默认权限: umask,文件隐藏属性,文件特殊权限 SUID SGID SBIT,观察文件类型: file

文件默认权限: umask

umask 是指定目前用户在建立文件或目录时候的权限默认值,

[root@study tmp]# umask
0022                # 与一般权限有关的是后面这三个数字。第一个是特殊权限用的
[root@study tmp]# umask -S
u=rwx,g=rx,o=rx

在默认权限的属性上,目录和文件是不一样的

  • 若用户建立为文件则默认没有可执行文件 x, 只有 rw 这两个,也就是最大为666-rw-rw-rw-
  • 对于目录,所有权限都可以开放,777

umask 的数字指的是默认值需要减掉的权限。rwx 421 若要拿掉写的权限,就输入2,拿掉读和写就是输入6

就上面来说,umask 为022,所以user 没有拿掉权限, group and others 那掉了w权限。

  • 建立文件 -rw-r–r--
  • 建立目录 drwxr-xr–x
[root@study tmp]# touch test1
[root@study tmp]# mkdir test2
[root@study tmp]# ls -l test*
-rw-r--r--. 1 root root 0 76 20:34 test1
-rw-r--r--. 1 root root 0 71 21:20 testtouch```

umask 002                     # 这就是修改的方法

文件隐藏属性

chattr [+-=][ASacdistu]  文件或目录名
+		增加一个特殊参数,其他参数不动
-		删除一个特殊属性
=		直接设置参数,且仅有后面的参数
A		若你在读取此文件或目录时,他的存取时间atime将不会被修改
S		一般文件时非同步写入磁盘的,加上这个会在修改文件时,同步写入磁盘中。
a		设置了这个,文件爱你将只能增加数据,而不能删除也不能修改数据,root才可以设置
c		设置后,会自动将此文件压缩,在读取的时候会自动解压缩,对大文件有用的
d		当 dump程序执行时,设置d属性可以使该文件不会被dump备份
i		使一个文件不能删除,改名,设置连接也无法写入或新增数据,只有root 可以设置
s		如果文件被删除,会完全从硬盘删除,无法恢复
u		与s 相反,如果删除了,还会保存在硬盘中,可以恢复

[root@study tmp]# cd /tmp
[root@study tmp]# touch attrtest
[root@study tmp]# chattr +i attrtest        # 增加一个属性
[root@study tmp]# rm attrtest 
rm:是否删除普通空文件 "attrtest"?y
rm: 无法删除"attrtest": 不允许的操作        # 可以看到,连root都无法删除
[root@study tmp]# chattr -i attrtest 

这个命令在系统数据安全上很重要的,由于这些时隐藏属性,需要lsattr才能看到该属性,

lsattr [-adR] 文件或目录
-a		将隐藏文件的属性也显示
-d		如果接的是目录,仅列出目录本身的属性而非目录内的文件
-R		连同子目录的数据页一并列出来

oot@study tmp]# chattr +aiS attrtest 
[root@study tmp]# lsattr attrtest 
--S-ia---------- attrtest

文件特殊权限 SUID SGID SBIT

[root@study tmp]# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt. 22 root root 4096 76 21:11 /tmp
-rwsr-xr-x. 1 root root 27856 41 11:57 /usr/bin/passwd

这 s t 就是特殊权限。与系统的帐号及系统的进程管理相关

Set UID

s 这个标志出现在文件拥有着的x权限上时(rwx) ,就称为 Set UID(SUID).

  1. SUID权限进对二进制程序有效,
  2. 执行者对于该程序需要有x的可执行权限
  3. 本权限仅在执行该程序的过程中有效
  4. 执行者将拥有该程序拥有着的权限

比如 /etc/shadow 这个文件记录了所有帐号和密码,这个文件的权限说明只有root 可读仅有root写入,但是普通用户也是可以修改自己的密码的,这就是SUID 的功能,我们可以知道
5. 对于用户 /usr/bin/passwd 这个程序是有x权限
6. passwd的拥有者是root
7. 用户执行passwd的过程中,会暂时获得root 权限
8. /etc/shadow 可以被用户所执行的passwd所修改

但是当用户使用没有 SUID权限的cat 命令,来读取/etc/shadow 就无法执行,另外,SUID进可用在二进制程序上,不可以用在shell 脚本上,这是因为shell脚本只是将很多的二进制执行文件调用执行而已。SUID对于目录也是无效的。。

set GID

当s 标志在文件拥有者的x 项为SUID,s在用户组的x时称为SGID,

[root@study tmp]# ls -l /usr/bin/locate         # 这个就是具有SGID权限的文件
-rwx--s--x. 1 root slocate 40520 411 2018 /usr/bin/locate

SGID可以针对文件或目录来设置。如果对文件,SGID有以下功能:

  • SGID对二进制程序有用
  • 程序执行者对于该程序来说,需具备x的权限。
  • 执行在在执行的过程中将会获得该程序用户组的支持。

举例来说,上面的 /usr/bin/locate 这个程序可以去查找 /var/lib/mlocate/mlocate.db 这个文件的内容

[root@study tmp]# ls -l /var/lib/mlocate/mlocate.db 
-rw-r-----. 1 root slocate 3928877 76 21:33 /var/lib/mlocate/mlocate.db

与SUID非常类似,若我们使用某个帐号去执行locate,那这个帐号或获得该程序用户组的支持,因此可以去读取这个文件,

除了二进制文件,SGID也可以用在目录中,当一个目录设置了SGID权限后,有如下功能:

  • 用户若对于此目录具有r x权限时,该用户能够进入此目录。
  • 用户在此目录下的有效用户组将会变成该目录的用户组。
  • 用途:若用户在此目录下具有w 的权限(可以新建文件),则用户所建立的新文件,该新文件的用户组和此目录的用户组相同。
    好像是对项目开放来说是很重要的。
Sticky Bit

这个SBIT目前只针对目录有效,对于文件已经没有效果了,SBIT对目录的作用是:

  • 当用户对此目录具有w x权限,及具有写入权限
  • 当用户在该目录下建立文件或目录是,仅有自己与root 才有权力删除文件

也就是:当甲这个用户对于A目录具有用户组或其他人的身份,并且拥有该目录w的权限,这表示甲用户对该目录内任何人建立的目录或文件都可以进行删除,更名,移动等。不过如果加上了sbit 权限,甲就只能针对自己建立的文件或目录进行删除,移动等,而无法删除其他人的文件。

SUID/SGID/SBIT 权限设置

就是数字更改权限的方法,4–SUID ,2–SGID, 1–SBIT.

例如要将一个文件权限改为 -rwsr-xr-x ,其中s 在用户权限中,所以是SUID,所以在755前还要加上4 ,也就是 chomod 4755 filename.来设置。

[root@study tmp]# cd /tmp
[root@study tmp]# touch test
[root@study tmp]# chmod 4755 test;ls -l test   # 这里只是测试,要记得SUID不是用在目录上 SBIT不是用在文件上。
-rwsr-xr-x. 1 root root 0 716 20:44 test
[root@study tmp]# chmod 6755 test;ls -l test
-rwsr-sr-x. 1 root root 0 716 20:44 test
[root@study tmp]# chmod 7666 test ; ls -l test       # 注意这里出现了大写的S T
-rwSrwSrwT. 1 root root 0 716 20:44 test

因为st 都是取代x 的,但是没有x这个标志,所以 S T 就代表空。

[root@study tmp]# chmod u=rwxs,go=x test;ls -l test      # 除了数字法还有符号法。
-rws--x--x. 1 root root 0 716 20:44 test
[root@study tmp]# chmod g+s,o+t test;ls -l test
-rws--s--t. 1 root root 0 716 20:44 test

观察文件类型: file

如果你想要知道某个文件的基本信息,例如属于数据文件或是二进制文件,且其中有没有使用到动态链接库等信息,可以使用file来查看。

[root@study tmp]# file ~/.bashrc
/root/.bashrc: ASCII text          # 这是ASCII的纯文本文件
[root@study tmp]# file /usr/bin/passwd 
/usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=dee1b9ab6618c6bfb84a14f85ba258c742cf4aec, stripped
# 这是执行文件,包括了这个文件的SUID权限,兼任的硬件平台,使用的linux内核2.6的动态连接库等。
[root@study tmp]# file /var/lib/mlocate/mlocate.db 
/var/lib/mlocate/mlocate.db: data

通过这个命令可以简单的判断这个文件的格式,包括为了可以看看tar包使用哪一种压缩方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值