關於LINUX中的許可權位S(設定使用者ID)(有效使用者ID)(實際使用者ID)
getuid() 實際使用者ID為 執行程式的實際使用者ID
geteuid() 有效使用者ID與設定使用者ID有關,及許可權中的S位
如果許可權為rws 那麼s位代表其他使用者執行程式時改變為主使用者許可權。不安全
如:
8 #include<stdio.h>
9 #include<stdlib.h>
10 #include <unistd.h>
11 #include <sys/types.h>
12 #include <sys/stat.h>
13 #include <fcntl.h>
14
15 int main(void)
16 {
17
18 int fd;
19
20 fd = open("abc", O_CREAT | O_RDWR | O_EXCL, 0777);
21 if(fd==-1)
22 {
23 perror("error:");
24 }
25 printf("uid %ld,euid %ld\n",getuid(),geteuid());
26
27
28 }
程式放到root使用者下,
-rwxr-xr-x 1 root root 8762 Feb 16 05:16 a.out
當前gaopeng使用者
如果在gaopeng使用者下執行這個程式正常情況下報錯
gaopeng@bogon:/$ ./a.out
error:: Permission denied
uid 1000,euid 1000
如果設定了 設定使用者ID 如下:
chmod 4755 a.out
-rwsr-xr-x 1 root root 8762 Feb 16 05:16 a.out
再次執行
gaopeng@bogon:/$ ./a.out
uid 1000,euid 0
可以看到設定使用者ID為0即位超級使用者,並且沒有任何報錯檔案建立完成
設定這個位過後不需要SUDO就可以或者切換到root使用者下就能執行程式。不安全
如果是sudo
gaopeng@bogon:/$ sudo ./a.out
uid 0,euid 0
可以看到
實際使用者ID和有效使用者ID都是 0
那麼總結一下:
實際使用者ID實際上是發起執行這個程式的使用者ID
有效使用者ID實際上是執行程式過程中,程式自身的使用者ID,
如果沒有設定S位實際上他是和實際使用者ID一樣的。
當然還有效使用者組ID 組許可權位也可以設定為S,和使用者一樣,執行時可以切換到其他組(如root組)使用者許可權下。
設定4***這裡的4是設定使用者s
設定2***這裡的2設定組s
當然還有1為黏住位已經淘汰無用。
chmod 2755 a.out
-rwxr-sr-x 1 root root 8762 Feb 16 05:16 a.out
chmod 4755 a.out
-rwsr-xr-x 1 root root 8762 Feb 16 05:16 a.out
chmod 6755 a.out
-rwsr-sr-x 1 root root 8762 Feb 16 05:16 a.out
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-1989671/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android關於獲取使用者是否允許某項許可權Android
- NAS使用者許可權的設定
- Linux使用者/使用者組/許可權相關命令Linux
- mongodb關於使用者許可權的總結MongoDB
- linux使用者許可權Linux
- ORACLE使用者管理與許可權設定Oracle
- mysql 使用者管理和許可權設定MySql
- SUID 與 SGID - 使普通使用者可以完成特定使用者許可權才能完成的任務UI
- 使用者許可權繼承另一使用者的許可權繼承
- linux新增使用者、使用者組、許可權Linux
- 如何使用Linux使用者身份與程式許可權的設定?Linux
- Linux - 設定SFTP服務使用者目錄許可權LinuxFTP
- Linux — 使用者組、許可權Linux
- Linux使用者與許可權Linux
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- Android Q 讓使用者優雅地管理位置許可權Android
- Linux 怎麼實現新增FTP使用者並設定許可權的方法LinuxFTP
- CDB和PDB關於使用者建立和使用者許可權區別
- 本人在專案中關於使用者角色許可權的經驗
- Linux使用者、組、許可權管理Linux
- linux5-使用者許可權Linux
- oracle使用者許可權Oracle
- mysql使用者許可權MySql
- oracle 使用者許可權Oracle
- 提取使用者許可權或是不同資料庫使用者許可權的同步資料庫
- 設計實現業務系統中的使用者許可權管理
- 使用product_user_profile來實現使用者許可權的設定
- windows10許可權怎麼設定_win10設定使用者許可權的方法WindowsWin10
- 關於SQL Server資料庫中的使用者許可權和角色管理SQLServer資料庫
- linux給使用者新增sudo許可權Linux
- linux為使用者新增sudo許可權Linux
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- Linux特殊許可權SUID、SGID、SBITLinuxUI
- mysql使用者許可權管理MySql
- mysql使用者和許可權MySql
- 使用者物件許可權管理物件
- Oracle使用者與許可權Oracle
- 使用者許可權 plsql OracleSQLOracle