文件安全与权限-笔记
时间:2009-03-26 来源:yueminjuan
l 符号链接(指向另一个文件)。
s 套接字文件。
b 块设备文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。 r 读权限,value 4
w 写/更改权限 value 2
x 执行该脚本或程序的权限 value 1
chmod:改变权限位,eg: chmod a-x temp //rw- rw- rw- 收回所有用户的执行权限
chmod og-w temp //rw- r-- r- - 收回属组用户和其他用户的写权限
chmod g+w temp //rw- rw- r- - 赋予属组用户写权限
chmod u+x temp //rwx rw- r- - 赋予文件属主执行权限
chmod go+x temp //rwx rwx r- x 赋予属组用户和其他用户执行权限
suid/guid:设置文件权限位时我们一般忽略了suid/guid的存在,现在看看它们到底是怎么回事。
suid/guid是什么?
suid意味着如果A用户对属于他自己的shell脚本文件设置了这种权限,那么其他用户在执行这个脚本的时候就拥有了A用户的权限。所以,如果 root用户对某一脚本设置了这一权限的话则其他用户执行该脚本的时候则拥有了root用户权限。同理,guid意味着执行相应脚本的用户则拥有了该文件所属用户组中用户的权限。
为什么使用suid/guid?
举个例子:要对数据库系统进行备份需要有系统管理权限,那么我可以写几个脚本,并设置了它们的guid,这样我指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。
有相当一些命令也设置了suid和guid。如果想找出这些命令,可以进入/bin或/sb in目录,执行下面的命令:
$ ls -l | grep '^...s'
上面的命令是用来查找suid文件的;
$ ls -l | grep '^...s..s'
上面的命令是用来查找suid和guid的。
如何设置suid/guid?
如果希望设置suid,那么就将相应的权限位之前的那一位设置为4;如果希望设置guid,那么就将相应的权限位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
一旦设置了这一位,一个s将出现在x的位置上。记住:在设置suid或guid的同时,相应的执行权限位必须要被设置。例如,如果希望设置guid,那么必须要让该用户组具有执行权限。
如果想要对文件login设置suid,它当前所具有的权限为rwx rw- r-- (741),需要在使用chmod命令时在该权限数字的前面加上一个4,即chmod 4741,这将使该文件的权限变为rws rw- r--。
$ chmod 4741 login
还可以使用符号方式来设置suid/guid。如果某个文件具有这样的权限: rwx r-x r-x,那么可以这样设置其suid/guid:
chmod u+s <filename>
chmod u+g <filename>
chown:改变所有权
chgrp:改变组
umask算法和用法:设置新建文件或者目录的默认权限,新建的文件或者目录不具有umask值所代表的权限
符号链接: 硬连接指向的是节点(inode),而软连接指向的是路径(path)
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题。 硬链接文件有两个限制
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。 $ ln httpd.conf httpd1.conf
$ ln -s httpd.conf httpd2.conf 第一个为硬链接,第二个为软连接 $ ls -li 总用量 80
1077669 -rw-r--r-- 2 sam adm 34890 10月 31 00:57 httpd1.conf
1077668 lrwxrwxrwx 1 sam adm 10 10月 31 00:58 httpd2.conf ->; httpd.conf
1077669 -rw-r--r-- 2 sam adm 34890 10月 31 00:57 httpd.conf 可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。 对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修改。 删除链接的源文件,软连接成了“断链”,硬链接成了普通的源文件。