linux安全之权限篇

1。权限 ugo ( r - w - x )

*******************************************************************************

当一个用户访问一个文件的时候

1.如果当前用户的UID与文件owner的UID匹配,那么就遵守第一个三位组的权限,如果不匹

配那么看GID

2.如果当前用户的GID与文件group的GID匹配,那么就遵守第二个三位组的权限

3.如果当前用户的UID与GID和文件的owner与group都不匹配,那么就看第三个三位组other

的权限

了解到匹配权限的过程之后,先面我们介绍一个三位组中rwx是什么意思

文件 目录

r 浏览(cat) 浏览(ls)

w 编辑(vim) 创建/删除(touch,rm)

x 执行(script) 改变(cd)

- 无 无

2.默认权限与umask

*******************************************************************************

默认情况下管理员的umask 022,普通用户的umask 002.

下面我们就以文件默认权限是666,umask是033,来讲解一下最后我们得到一个文件的权限。

1).666的权限是rw- rw- rw-,换算成2进制 110 110 110

2).umask033 权限是 --- -wx-wx ,换算成2进制 000 011 011

3).umask 2进制取反 000 011 011 -------->111 100 100

4).umask 取反后的2进制和默认权限做与运算

umask 111 100 100

默认权限 110 110 110

--------------------------------------

110 100 100

rw- r-- r--

5).得到最终的权限 644

3.SUID SGID Sticky

*******************************************************************************

可执行文件SUID SGID

执行可执行文件的时候,不以执行者的身份去运行,而是以文件所属人(组)的身份去执行

目录 SGID Sticky

SGID:当一个A目录具有SGID的时候,在这个目录下新建的文件文件夹默认所属组会是A目

录的所属组

Sticky:当A目录具有Sticky位的时候,在A目录下的文件只有文件的所属人才能够删除文件,

其他人哪怕对A目录有写的权限也不能删。

设置suid和SGID

给文件加SUID和SGID的命令如下:

chmodu+s filename 设置SUID位

chmodu-s filename 去掉SUID设置

chmodg+s filename 设置SGID位

chmodg-s filename 去掉SGID设置

注意:

出 于安全考虑,现代的大部分 UNIX 类系统都会忽略掉SHELL脚本的 suid ,只有二进制可执行程序

的 suid 有效 。所以直接给脚本文件设置 suid 是达不到预期效果的。

例如有shell脚本 apk.sh

即使执行命令 #chmod 4755 apk.sh ,系统也会忽略该脚本的SUID位。

所以如果确实需要给脚本文件设 suid,常见的做法是用 C 写一个封装程序,在这个程序里调用脚本。

这样,给封装程序(二进制可执行程序)设上 suid(chmod 4755 a.out) 就可以达到给脚本文件设 suid

的效果了

4。ext3文件系统属性

*******************************************************************************

chattr lsattr

lsattr [-aR]

参数说明:

-a:将隐藏文件的属性也显示出来

-R:连同子目录的数据一并显示出来

chattr [+-=][ASacdistu] [文件或目录名称]

A:当设定了属性A,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免诸如手提电

脑容易产生磁盘I/O错误的情况;

S:这个功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失;

a:设定a后,这个文件将只能增加数据而不能删除,只有root才能设定这个属性;

c:设定这个属性后,将会自动将此文件压缩,在读取时自动解压缩。但是在存储的时候,会现进行

压缩在存储(对于大文件很有用);

d:当dump(备份)程序执行时,设定d属性将可使该文件(或目录)具有dump功效;

i:这个参数可以让一个文件”不能被删除、更名、设定链接,也无法写入数据,对于系统安全有

很大的助益

j:当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,

但是当filesystem设定参数为data=journalled时,由于已经设定了日志,所以这个属性无效

s:当文件设定了s参数时,它会被完全移出这个硬盘空间

u:与s相反,当使用u配置文件时,数据内容其实还可以存在于磁盘中,可以用来取消删除

测试效果:

1》

[root@andyguo tmp]#ls

file1

[root@andyguo tmp]#stat file1

File: “file1”

Size: 15 Blocks: 16 IO Block: 4096 一般文件

Device:fd00h/64768d Inode: 163203 Links: 1

Access:(0644/-rw-r--r--) Uid: ( 0/root) Gid: ( 0/root)

Access: 2012-12-1015:18:02.000000000 +0800

Modify: 2012-12-1015:19:28.000000000 +0800

Change: 2012-12-1015:19:28.000000000 +0800

[root@andyguo tmp]#lsattr file1

-------A----- file1

注意Modify和Change的时间都比Access time晚,说明access time 不做更新,但是redhat 6.2

access time更新不及时

2》

[root@andyguo tmp]#cat file1

diafdsafsafsaf

afdsa

afdsa

[root@andyguo tmp]#echo "afdsa">file1

-bash: file1: 不允许的操作

[root@andyguo tmp]#echo "afdsa">>file1

[root@andyguo tmp]#cat file1

diafdsafsafsaf

afdsa

afdsa

afdsa

[root@andyguo tmp]#rm -fr file1

rm: 无法删除 “file1”: 不允许的操作

5.文件系统的访问控制列表

*******************************************************************************

setfacl -m (--modify)u:user:permission file | directory 对文件或者文件夹设置facl权限

setfacl -m (--modify)u:group:permission file | directory 对组设置facl权限

setfacl -m (--modify) d:u:user:permissiondirectory 任何人新建的文件都会变成文件夹所有人

getfacl file 查看file文件的权限

setfacl -x u:soft test 去掉单个用户的权限

setfacl -b test 删除test目录的所以acl权限

测试:

1》

[root@andyguo tmp]# mkdir dir1

[root@andyguo tmp]# chmod 700 dir1/

[root@andyguo tmp]# setfacl -mu:test:rwx dir1

[root@andyguo tmp]# su test

[test@andyguo tmp]$ cd dir1/

[root@andyguo tmp]# setfacl -b dir1/

[root@andyguo tmp]# su test

[test@andyguo tmp]$ cd dir1/

bash: cd: dir1/: 权限不够

===============================================================================

我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可

以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。

linux为不同种类的设备文件提供了相同的接口,比如read(),write(),open(),close()。

所以在系统与设备通信之前,系统首先要建立一个设备文件,这个设备文件存放在/dev目录下。

其实系统默认情况下就已经生成了很多设备文件,但有时候我们需要自己手动新建一些设备文件,这个

时候就会用到像mkdir, mknod这样的命令。

mknod 的标准形式为: mknod DEVNAME {b | c} MAJORMINOR

1, DEVNAME是要创建的设备文件名,如果想将设备文件放在一个特定的文件夹下,就需要先

用mkdir在dev目录下新建一个目录;

2, b和c 分别表示块设备和字符设备:

b表示系统从块设备中读取数据的时候,直接从内存的buffer中读取数据,而不经过磁盘;

c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如

打印机、终端都是以字符的形式传送数据;

3,MAJOR和MINOR分别表示主设备号和次设备号:

为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。主设备号标示

某一种类的设备,次设备号用来区分同一类型的设备。linux操作系统中为设备文件编号分配了32位无符

号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过

4095,次设备号不好超过2^20 -1。


下面,我们就可以用mknod命令来申请设备文件了。

mkdir -p/dev/cobing

mknod /dev/cobing/mydev1 c 128 512

查看系统设备的主设备号可以参考/usr/share/doc/kernel-doc-2.6.18/Documentation/devices.txt

文件系统的挂载选项

noexec exec

*****************************************************************

[root@node0 ~]# mount /dev/hdb1 /test/

[root@node0 ~]# echo"hello" > /test/file1

[root@node0 ~]# cp /bin/cat /test/

[root@node0 ~]# cd /test/

[root@node0 test]# ./cat file1

hello

[root@node0 test]# mount -oremount,noexec /test/

[root@node0 test]# ./cat file1

bash: ./cat: Permission denied

ro rw

*******************************************************************

[root@node0 test]# mount -oremount,ro /test/

[root@node0 test]# echo"abc" >> /test/file1

bash: /test/file1: Read-only filesystem

nosuid suid

*******************************************************************

[root@node0 test]# mount /dev/hdb1/test/

[root@node0 test]# ls

catcdrom file1 lost+found

[root@node0 test]# chmod 640 file1

[root@node0 test]# ls -l file1

-rw-r----- 1 root root 6 Mar 3 16:04 file1

[root@node0 test]# chmod u+s cat

[root@node0 test]# su - user1

[user1@node0 ~]$ cd /test/

[user1@node0 test]$ ./cat file1

hello

[root@node0 test]# mount -oremount,nosuid /test/

[root@node0 test]# su - user1

[user1@node0 ~]$ cd /test/

[user1@node0 test]$ ./cat file1

./cat: file1: Permission denied

nodev dev

*******************************************************************

[root@node0 test]# ls -l /dev/cdrom

lrwxrwxrwx 1 root root 3 Mar 3 14:47 /dev/cdrom -> hdd

[root@node0 test]# ls -l /dev/hdd

brw-rw---- 1 root disk 22, 64Mar 3 14:47 /dev/hdd

[root@node0 test]# mknod cdrom b 2264

[root@node0 test]# mount cdrom /mnt/

mount: block device cdrom iswrite-protected, mounting read-only

[root@node0 test]# umount /mnt/

[root@node0 test]# mount -oremount,nodev /test/

[root@node0 test]# ls -l cdrom

brw-r--r-- 1 root root 22, 64Mar 3 16:13 cdrom

[root@node0 test]# mount cdrom /mnt/

mount: block device cdrom iswrite-protected, mounting read-only

mount: cannot mount block devicecdrom read-only

[root@node0 test]# ls /mnt/

noauto auto

****************************************************************

[root@node0 ~]# vim /etc/fstab


/dev/hdb1 /test ext3 noauto

[root@node0 ~]# mount -a

noatime atime

***************************************************************

Update inode access time foreach access. Thisis the default.

async sync

***************************************************************


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值