一个系统一般都是有多个账号使用的,而有些目录和文件需要赋予其他用户可读写的权限,比如/tmp/a.tmp
这就有一个问题了,比如a在/tmp目录下放的文件a.tmp,而b也需要有/tmp的权限,他就可以删除这个a.tmp文件;
如果只想让b有读写这个文件的权限,但是没有删除这个文件的权限该怎么办呢?这时候就可以利用t键位,粘着位权限
测试如下:
<code>01</code>
<code>#切换到a用户下</code>
<code>02</code>
<code>[root@</code><code>test</code> <code>tmp]</code><code># su a</code>
<code>03</code>
<code>[a@</code><code>test</code> <code>tmp]$ ll -d /tmp</code>
<code>04</code>
<code>drwxrwxrwx 2 root root 4096 oct 28 23:55 /tmp</code>
<code>05</code>
<code>#创建a.tm文件并配置任何人都有最大的777权限</code>
<code>06</code>
<code>[a@</code><code>test</code> <code>tmp]$ </code><code>touch</code> <code>a.tm</code>
<code>07</code>
<code>[a@</code><code>test</code> <code>tmp]$ </code><code>chmod</code> <code>777 a.tm</code>
<code>08</code>
<code>[a@</code><code>test</code> <code>tmp]$ </code><code>ls</code> <code>-l a.tm</code>
<code>09</code>
<code>-rwxrwxrwx 1 a a 0 oct 28 23:55 a.tm</code>
<code>10</code>
<code>#查看,这时候任何人都可以对a.tm做任何操作</code>
<code>#现在我们对/tmp目录赋予粘着位t权限</code>
<code>[root@</code><code>test</code> <code>tmp]</code><code># chmod +t /tmp</code>
<code>[root@</code><code>test</code> <code>tmp]</code><code># ls -dl /tmp </code>
<code>#查看权限已经多了一个t</code>
<code>drwxrwxrwt 2 root root 4096 oct 28 23:59 /tmp</code>
<code>#切换到账号b下,删除a.tm,报错了无法删除</code>
<code>[root@</code><code>test</code> <code>tmp]</code><code># su b</code>
<code>[b@</code><code>test</code> <code>tmp]$ </code><code>rm</code> <code>-r a.tm</code>
<code>rm</code><code>: cannot remove `a.tm': operation not permitted</code>
<code>#查看b对a.tm拥有完全权限的,但是也无法删除</code>
<code>11</code>
<code>[b@</code><code>test</code> <code>tmp]$ </code><code>ls</code> <code>-l a.tm</code>
<code>12</code>
<code>13</code>
<code>#测试b对a.tm文件的写入和读取,完全没有问题</code>
<code>14</code>
<code>[b@</code><code>test</code> <code>tmp]$ </code><code>echo</code> <code>b-</code><code>test</code> <code>>a.tm</code>
<code>15</code>
<code>[b@</code><code>test</code> <code>tmp]$ </code><code>cat</code> <code>a.tm</code>
<code>16</code>
<code>b-</code><code>test</code>
<code>17</code>
<code>18</code>
<code>19</code>
<code>增加粘滞位:</code><code>chmod</code> <code>+t /tmp</code>
<code>20</code>
<code>删除粘滞位:</code><code>chmod</code> <code>-t /tmp</code>
至此,目的已经达到了,让一个账号对一个文件有读写的权限却无法删除~
备注:拥有t粘着位权限的目录下的文件,除了属主用户外,root用户也可以删除。