-1

来自 lftp 中的 misc.cc。你能解释一下代码吗?我尝试 p = 600, 777 并获得不同的预期许可。

// it does not prepend file type.
    const char *format_perms(int p)
    {
       static char s[10];
       memset(s,'-',9); // set - for all s[]
       if(p&0400) s[0]='r'; // set r
         if(p&0200) s[1]='w';  // set w
         if(p&0100) s[2]='x'; // set x
         if(p&0040) s[3]='r';  //set r
         if(p&0020) s[4]='w';  
         if(p&0010) s[5]='x';
         if(p&0004) s[6]='r';
         if(p&0002) s[7]='w';
         if(p&0001) s[8]='x';
         if(p&01000) s[8]=(p&0001?'t':'T');
         if(p&02000) s[5]=(p&0010?'s':'S');
         if(p&04000) s[2]=(p&0100?'s':'S');
         return s;
    }

T和S的目的是什么?非常感谢

4

1 回答 1

0

假设您的意思是 format_perms 中的“s”和“T”。根据chmod 手册页

4000 执行时设置用户 ID

2000 set-group-ID-on-execution

1000 粘性位,参见chmod(2)

强调,我的。

于 2012-12-04T04:42:15.707 回答