📄 1075.html
字号:
Since those times, larger memories and better memory management
methods have largely removed the original need for the sticky bit.<br><br>
对于上面说的三个权限位,我们怎样改变呢?对于这三个权限位, chmod有对应的字
符和八进制数方式来改变。对于SUID和SGID位我们只能用u+/-s或g+/-s来改变;而粘着位
就用+t就可以拉,因为它是对所有的用户授权的,这是用字符方式改变的方法:<br><br>
SUID改变<br>
[chase@lustre doc]$ ls -l a.txt;chmod u+s a.txt;ls -l a.txt<br>
-rwxr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br>
-rwsr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br><br>
GUID改变<br>
[chase@lustre doc]$ ls -l a.txt;chmod g+s a.txt;ls -l a.txt<br>
-rwsr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br>
-rwsr-sr-x 1 chase chase 2 Feb 17 00:35 a.txt<br><br>
粘着位改变<br>
[chase@lustre doc]$ ls -l;chmod +t sticky;ls -l<br>
drwxrwxr-x 2 chase chase 4096 Feb 17 04:25 sticky<br>
drwxrwxr-t 2 chase chase 4096 Feb 17 04:25 sticky<br><br>
在用八进制方式改变的话,它们三位都有像读写和可执行位八进制表示法,只不过是
在文件权限的扩展位,对应的八进制分别为4000(SUID),2000(SGID)和1000(sticky bit)<br><br>
SUID改变<br>
[chase@lustre doc]$ ls -l a.txt;chmod 4755 a.txt;ls -l a.txt<br>
-rwxr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br>
-rwsr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br><br>
GUID改变<br>
[chase@lustre doc]$ ls -l a.txt;chmod 2755 a.txt;ls -l a.txt<br>
-rwsr-xr-x 1 chase chase 2 Feb 17 00:35 a.txt<br>
-rwsr-sr-x 1 chase chase 2 Feb 17 00:35 a.txt<br><br>
粘着位改变<br>
[chase@lustre doc]$ ls -l;chmod 1755 sticky;ls -l<br>
drwxrwxr-x 2 chase chase 4096 Feb 17 04:25 sticky<br>
drwxrwxr-t 2 chase chase 4096 Feb 17 04:25 sticky<br><br>
当然,用户访问该文件时,系统会读取权限位来判断用户对该文件的访问权限。和文
件权限有关的系统参数还有用户缺省的文件掩码,了解用户的缺省的文件掩码可以运行命
令<br>
[chase@lustre doc]$ umask<br>
0002<br><br>
0002就是用户缺省的文件掩码,它决定当用户建立文件时缺省的文件权限,它和文件
权限的关系是:普通文件:666&002=664;目录:777&002=775。<br>
改变缺省的文件掩码只要在umask后加上想要设定的文件掩码就可以拉。 如果你不想
每次登陆修改的话,可以在`/.bash_profile加上umask 077。<br><br>
可能以上说的,对于很多人来说都知道,但是当你的系统用户人数比较多的时候,这
些文件权限使用是要特别小心,以免一时不慎,造成对系统不必要破坏。<br><br><br>
linux 对系统用户控制(之二)<br><br>
文件属性是另外一种控制用户对系统访问的手段,这和你所用的文件系统有关,这里
涉及的都是ext3文件系统。文件属性和文件权限很类似,文件属性是和某个特定的文件系
统特有的,用来加强对文件的访问控制和安全保护。此外,文件属性是由sys_open()和
sys_truncate()等文件系统调用检查和赋予的,不受用户的识别号和其他因素的影响,这
和文件权限有根本的区别。因此,这种文件访问的机制提供比文件权限控制更强的文件控
制。可用的文件属性解析如下:<br><br>
A(don't update atime)<br>
如果文件设定了这个属性,文件系统不会更新最后的访问时间。这对减少磁盘的I/O
(尤其在笔记本电脑和NFS上,这个属性对提高文件系统的性能是很有效的)<br><br>
a(append only)<br>
如果文件设定了这个属性,任何程序只能以添加模式打开这个文件。对于目录来说,
只能在这个目录下添加新的目录或文件,不能对本目录或者本目录里的子目录或者文件作
改名或删除才作。这个属性只有root才能设定或删除。<br><br>
c(compressed)<br>
如果文件设定了这个属性,系统内核自动压缩该文件。<br><br>
d(no dump)<br>
如果文件设定了这个属性,对文件系统(dump)备份时忽略该文件,文件系统备份参数
在/etc/fstab里。<br><br>
i(immutable)<br>
如果文件设定了这个属性,这个文件就不能修改,包括文件内容修改,文件删除,改
名和建立符号链接。而对于目录来说,不能在本目录里建立和删除文件,只能对本目录里
的文件作修改。值得注意的是,这个属性也会限制对存储时间的限制,因此,设定这个
属性就不必设定A属性。这个属性只有root才能设定或删除。<br><br>
S(synchronous updates)<br>
如果文件设定了这个属性,这个文件被修改时,文件系统会马上同步同步写入磁盘里。<br><br>
s(secure deletion)<br>
如果文件设定了这个属性,这个文件被删除时, 原来被占用的区域会被重新填入0来
覆盖。<br><br>
u(undeletable)<br>
如果文件设定了这个属性,这个文件被删除时,文件内容会被保存,用户可以恢复被
删除的文件。<br><br>
文件属性相关的系统命令主要有两个:lsattr和chattr。<br>
lsattr命令是查看文件属性的命令,参数比较少,和ls比较相似,具体可以参照相关
的文档。下面看看具体的简单应用。<br>
[chase@linuxtime doc]$ lsattr a<br>
-------------- a<br>
上面是lsattr的简单运行结果。<br>
chattr命令是对文件属性修改的命令,文件属性的修改没有像文件权限的修改提供两
种方式,只能使用字符方式。它如何对属性进行设定呢?主要是通过+(添加),-(删除)或
=(设定)。对于添加和删除就不多说了,主要说说=(设定)的使用,它是用来重新设定文件
的属性的,下面我们看看具体的例子。<br><br>
[chase@linuxtime doc]$ lsattr a;chattr +s a;lsattr a;chattr +u a;lsattr a;chattr =SA a;lsattr a<br>
-------------- a<br>
s------------- a<br>
su------------ a<br>
--S---A------- a<br><br>
由上面可以看到,a 开始什么属性也没设定,但使用+(添加)s和u属性后,再使用=
(设定)SA后,a的属性就有原来有s和u属性立刻被删除了。还有一点又指出的是<br><br>
[chase@linuxtime doc]$ lsattr a; chattr = a; lsattr a<br>
--S---A------- a<br>
-------------- a<br><br>
但我们要删除所有的文件属性时,只要使用=(设定)后什么都不加就可以了。<br><br>
下面我们看看比较有常用属性对系统用户控制具体的作用。<br>
看看A的作用<br><br>
[chase@linuxtime doc]$ lsattr a; stat a; cat a; stat a<br>
-------------- a<br>
File: "a"<br>
Size: 0 Blocks: 0 IO Block: 4096 Regular File<br>
Device: 303h/771d Inode: 13 Links: 1<br>
Access: (0664/-rw-rw-r--) Uid: ( 500/ chase) Gid: ( 500/ chase)<br>
Access: Wed Apr 16 11:24:16 2003<br>
Modify: Wed Apr 16 11:00:28 2003<br>
Change: Wed Apr 16 11:19:55 2003<br><br>
File: "a"<br>
Size: 0 Blocks: 0 IO Block: 4096 Regular File<br>
Device: 303h/771d Inode: 13 Links: 1<br>
Access: (0664/-rw-rw-r--) Uid: ( 500/ chase) Gid: ( 500/ chase)<br>
Access: Wed Apr 16 11:24:22 2003<br>
Modify: Wed Apr 16 11:00:28 2003<br>
Change: Wed Apr 16 11:19:55 2003<br><br>
上面例子看到,对于没有任何文件属性的文件a来说,对它作cat操作会造成
Access Time的改变。我们再看看下面设定了A属性的文件a的情况。<br><br>
[chase@linuxtime doc]$ chattr +A a; lsattr a;stat a; cat a; stat a<br>
------A------- a<br>
File: "a"<br>
Size: 0 Blocks: 0 IO Block: 4096 Regular File<br>
Device: 303h/771d Inode: 13 Links: 1<br>
Access: (0664/-rw-rw-r--) Uid: ( 500/ chase) Gid: ( 500/ chase)<br>
Access: Wed Apr 16 11:25:07 2003<br>
Modify: Wed Apr 16 11:00:28 2003<br>
Change: Wed Apr 16 11:29:25 2003<br><br>
File: "a"<br>
Size: 0 Blocks: 0 IO Block: 4096 Regular File<br>
Device: 303h/771d Inode: 13 Links: 1<br>
Access: (0664/-rw-rw-r--) Uid: ( 500/ chase) Gid: ( 500/ chase)<br>
Access: Wed Apr 16 11:25:07 2003<br>
Modify: Wed Apr 16 11:00:28 2003<br>
Change: Wed Apr 16 11:29:25 2003<br><br>
情况就改变,cat前后有文件属性A的文件a的Access Time是不变的。这个属性对于高
负荷的文件系统的影响还是比较大的,这个对系统的性能有一定的影响。<br><br>
对于a属性,我们在从例子出发来看看它的作用,<br><br>
[root@linuxtime doc]# lsattr a; chattr +a a; lsattr a<br>
-------------- a<br>
----a--------- a<br><br>
[chase@linuxtime doc]$ lsattr a; echo "a" > a;echo "b" >> a;cat a;<br>
----a--------- a<br>
bash: a: Operation not permitted<br>
b<br><br>
因为a属性只能root来设定,所以先用root把文件a的a属性设定好, 然后再回到普通
用户对这个文件作一些操作。我们先对文件a作一个修改的操作,echo "a" > a, 是先删
除文件a的内容,然后再把"a"字符写入文件a,因为文件a只能以添加模式打开,因此第一
步就出错,相应的出错信息是"bash: a: Operation not permitted";然后,我们做一个
添加的操作echo "b" >> a,这个只对文件a以添加模式打开,并写入内容。最后我们可以
看到文件a里只有字符"b"没有字符"a",这就是a属性起的作用。<br><br>
对于剩下的属性都需要内核的支持才能起作用,而且对于主流的内核都没有支持。因
而在这里就不多说啦。<br><br><br>
linux 对系统用户控制(之三)<br><br>
我就废话少说,先来介绍文件系统限额方式:<br>
soft: 就它的名字你可以了解到,这种方式不是硬性的,是具有弹性的限额方式。换
句话说,用户的以达到这个配额,并在一定的条件下超过,但是必须在一定时间内把占用
的空间减少到指定的soft的限额以下。<br>
hard:这用方式就没有弹性可言啦,是一种硬性的不可逾越的限额上限。与soft相比,
我们可以知道,如果我们设定限额时,soft的大小应比hard的大小小。而在用户达到soft
的限制的时候系统会产生警告信息,以免用户达到hard的限额才被警告。<br>
时限:所谓是时限就是在soft方式提到的, 当用户所占用的空间超过soft但还没达到
hard的时候,这个时限就会被启动,用户必须在这个时限内把所占用的空间减少到soft的
限额以下。<br>
还有另外的一类的文件系统限额方式:<br>
user: 这种方式是针对系统中个别用户进行文件系统限额。<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -