Permissions
為什麼 getegid 對其他人有效,但對我無效?
我有以下測試程序:
//File: egid_test.c #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { int egid = getegid(); printf("my effective group is %d\n", egid); return 0; }
我執行以下一系列命令:
$ sudo groupadd so_test $ grep so_test /etc/group so_test:x:1002: $ gcc egid_test.c $ ./a.out my effective group is 1000 $ sudo chown :so_test a.out $ sudo chmod g+s a.out $ ./a.out my effective group is 1000
我希望最後一行的結果是“我的有效組是 1002”。同事們都明白這一點。我不。
為什麼?如何調試我的機器和/或配置有什麼問題?
(Ubuntu 16.04.6 LTS)
**
sudo groupdel so_test
在您嘗試此操作以撤消組創建後使用附加資訊:
$ ls -l a.out -rwxrwsr-x 1 ashelly so_test 8664 Nov 1 12:17 a.out $ stat a.out File: 'a.out' Size: 8664 Blocks: 40 IO Block: 4096 regular file Device: 33h/51d Inode: 23466994 Links: 1 Access: (2775/-rwxrwsr-x) Uid: ( 1000/ ashelly) Gid: ( 1002/ so_test) Access: 2019-11-01 12:17:46.149582840 -0700 Modify: 2019-11-01 12:17:08.949341154 -0700 Change: 2019-11-01 12:38:01.454109385 -0700 Birth: - $ df . Filesystem 1K-blocks Used Available Use% Mounted on /home/ashelly/.Private 660427896 45250096 581606988 8% /home/ashelly $ mount | grep /home/ashelly /home/.ecryptfs/ashelly/.Private on /home/ashelly type ecryptfs (rw,nosuid,nodev,relatime,ecryptfs_fnek_sig=<...>,ecryptfs_sig=<...>,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
是導致問題的 encryptfs 上的“nosuid”標誌嗎?
感謝@icarus,我意識到我的主目錄與我的同事不同,是從
nosuid
設置了標誌的 ecryptfs 加密分區安裝的。(顯然是為了修補一個安全漏洞)。這會阻止 sgid 位生效。如果我將程序移至
/usr/local/bin
沒有nosuid
標誌的 ,它會正確報告有效組。在這一點上,我需要的是對這個關於 ecryptfs 和 nosuid的問題的一個很好的回答。