网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的教程攻略:

 

标题 UNIX如何设置用户ID位?
分类 软件教程
内容     
    在Linux系统中每一个进程都有好几个用户ID位,这些用户ID位怎么设置关系到文件访问的权限。本文就来以UNIX为例,简单介绍一下UNIX如何设置用户ID位。
    UNIX如何设置用户ID位?
    用stat函数可以获取一个文件的状态信息,原型是这样的:
    int stat(const char *path, struct stat *buf);
    其中结构体stat的结构:
    struct18. 当眼泪流下来,才知道,分开也是另一种明白。 stat {
    dev_t st_dev; /* ID of device containing file */
    ino_t st_ino; /* inode number */
    mode_t st_mode; /* protection */
    nlink_t st_nlink; /* number of hard links */
    uid_t st_uid; /* user ID of owner */
    gid_t st_gid; /* group ID of owner */
    dev_t st_rdev; /* device ID (if special file) */
    off_t st_size; /* total size, in bytes */
    blksize_t st_blksize; /* blocksize for file system I/O */
    blkcnt_t st_blocks; /* number of 512B blocks allocated */
    time_t st_atime; /* time of last access */
    time_t st_mtime; /* time of last modification */
    time_t st_ctime; /* time of last status change */
    };
    从传出的参数buf中可以拿到用st_uid,st_gid 表示的文件所有者ID,和文件所有者所在的组ID。
    在UNIX进程中也有几组ID的概念。分别是实际用户ID,实际用户组ID,有效用户ID和有效用户组ID等等。当我们开始一个进程是,通常这个进程的有效用户ID就是这个进程的实际ID(比如我用eric用户登录,这个有效用户就我eric对应的ID)。然而当“设置用户ID位”打开以后,有效ID就是进程的程序文件对应的所有者的ID。
    $ls -l 1.txt
    -rw------- 1 root root 16 4月 29 14:31 1.txt
    当前目录下面有一个文件“1.txt”是所有者root,并且只有root具有读和写权限。
    1 int main()
    2 {
    3 int fd;
    4 if((fd=open(“1.txt”,O_RDONLY)) == -1)
    5 {
    6 printf(“Open failed.\\n”);
    7 exit(-1);
    8 }
    9 char buf[1024]={0};
    10 read(fd,buf,1024);
    11 printf(buf);
    12 printf(“\\n”);
    13 }
    首先我在终端里使用su命令使用root用户。gcc read.c -omain。得到main程序。
    # gcc read.c -omain
    # exit
    exit
    $ main
    Open failed.
    显然main的所有者也是root,但是main程序依旧不可以打开“1.txt”,这是因为main启动后这个进程的有效ID是进程的实际用户ID(也就是eric账户的ID),而“1.txt”只对root用户具有读写权限,所以open失败。
    把main的设置用户ID位打开可以用shell指令: chmod u+s main
    我用的是c程序,主要代码如下:
    1 struct stat buf = {0};
    2 stat(“main”,&buf);
    3 buf.st_mode |= S_ISUID;
    4 chmod(“main”,buf.st_mode);
    执行后,main的“设置用户ID位”就打开了。再在非root终端下 执行main程序 就可以成功的读出 1.txt的内容
    $ main
    linuxidc.com
    linux权限设计还是比较合理的,虽然这里main程序可以运行时是已所有者root的权限,但是这需要root用户的授权:打开这个程序文件的“set uid bit”(设置用户ID位)。只要在打开这个set uid bit 时充分考虑到这个程序存在的风险。当然授权需谨慎。
    以上就是UNIX如何设置用户ID位的全部内容了,本文介绍了设置用户ID,设置用户ID也是文件权限设置的一个例子。
        UNIX如何设置用户ID位?十全十美雷电交加雄鸡报晓11. 这密雨的初夏,因一室的贝壳而忧愁了,那些多色的躯壳,似乎只宜于回响一首古老的歌,一段被人遗忘的诗。但人声嘈杂,人潮汹涌,有谁回顾那曾经蠕动的生命,有谁怜惜那永不能回到海中的旅魂。早睡早起有益于健康。36.君子坦荡荡,小人长戚戚。    澡兰香 吴文英088杜甫:哀江头linux设置用户id位,如何设置用户id位80、Give as good as one gets.
随便看

 

霍普软件下载网教程攻略栏目提供软件使用教程、手机游戏攻略等方法技巧。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/1/10 2:05:56