+ -
当前位置:首页 → 问答吧 → 帮忙看下这个是什么意思?

帮忙看下这个是什么意思?

时间:2010-08-04

来源:互联网

本帖最后由 zhanglistar 于 2010-08-04 17:16 编辑

用以下代码创建了两个文件,ls -l一看,   
-rwxr-xr-x     child
-rws--s---      father

这个是什么意思呢?

s我在APUE里看,说是粘住位。。。。
但是为什么两个文件不一样呢?

权限到底是怎么回事呢?

我在写一个ftp server时   发现在fork出来的进程中,创建的文件都是属于root和root组的。。。。。好奇怪,我就是在fork的子进程中创建一个文件,然后接受客户端传来的内容。 之后就发现是root的。

但是虽然是属于root和root组的,使用普通用户,依然可以删除文件,只是在删除的时候提示:

rm: remove write-protected regular file .....  ?


求解释。
  1. #include <dirent.h>
  2. #include <fcntl.h>
  3. #include <stdio.h>
  4. #include <unistd.h>
  5. #include <errno.h>
  6. #include <string.h>

  7. int main()
  8. {
  9.     pid_t pid;
  10.     if ((pid = fork()) == 0) {
  11.         open("child", O_RDWR | O_CREAT, 0777);
  12.         return 0;
  13.     } else if (pid > 0) {
  14.         open("father", O_RDWR | O_CREAT);
  15.         return 0;
  16.     } else {
  17.         fprintf(stderr, strerror(errno), 0777);
  18.         return (-1);
  19.     }

  20. }
复制代码

作者: zhanglistar   发布时间: 2010-08-04

  1.     `s'
  2.           If the set-user-ID or set-group-ID bit and the corresponding
  3.           executable bit are both set.
复制代码
info中说的,即set-user-ID与set-group-ID之一与相应的可执行位被设置的时候显示s,如果我没找错的话……

作者: daybreakcx   发布时间: 2010-08-04

这位同学真的开学了

作者: beyond_touch   发布时间: 2010-08-04

回复 daybreakcx


    找的是什么提示?  info what
??

作者: zhanglistar   发布时间: 2010-08-04

info ls
在10.1.2的中下部

作者: daybreakcx   发布时间: 2010-08-04

s 代表“粘滞位”
就是说,如果一个可执行的程序/脚本有这个位设置,用户执行时,就会有这个文件属主/组的权限,比如说
ls -l有脚本
./scrIPt 有rwsrwsr-x权限,属于 root root,普通用户运行时就相当于有root的权限,所以说,可能会带来很大的安全漏洞(但同时会有便利之处),所以有些UNIX忽略这个位的设置。

作者: zhangsuozhu   发布时间: 2010-08-04

回复 zhangsuozhu


    t是代表粘住位的。。。。。
  

     s是set-user-ID位和set-group-ID位,你解释的也是s位的。    不是粘住位。  典型的s位程序是passwd      


     而粘住位是/tmp。。。    比如 我的ubuntu系统只,  tmp的权限位如下  :


    drwxrwxrwt  38 root root  4096 2010-08-04 02:12 tmp

作者: zhanglistar   发布时间: 2010-08-04

相关阅读 更多

热门下载

更多