微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > Linux教程

UNIX如何设置用户ID位?

时间:2024-05-08 10:46:32   

大家好,今天Win10系统之家小编给大家分享「UNIX如何设置用户ID位?」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

智企id手机版(改智企)系列软件最新版本下载

  在Linux系统中每一个进程都有好几个用户ID位,这些用户ID位怎么设置关系到文件访问的权限。本文就来以UNIX为例,简单介绍一下UNIX如何设置用户ID位。

  用stat函数可以获取一个文件的状态信息,原型是这样的:

  int stat(const char *path, struct stat *buf);

  其中结构体stat的结构:

  struct 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位?」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

文章♀来①自Win10系统之家,转载请联系网站管理人员!

相关文章

  • UNIX如何设置用户ID位?

    UNIX如何设置用户ID位?


      在Linux系统中每一个进程都有好几个用户ID位,这些用户ID位怎么设置关系到文件访问的权限。本文就来以UNIX为例,简单介绍一下UNIX如何设置用户ID位。
      用stat函数可以获取一个文件的状态信息,原型是这样的:
      intstat(constchar*path,structstat*buf);
      其中结构体stat的结构:
      struct...
  • 如何在Linux下配置Nginx以限制网站用户使用代理IP访问

    如何在Linux下配置Nginx以限制网站用户使用代理IP访问


      在Linux操作中有时会遇到使用代理ip来访问的网站用户,这就需要配置Nginx限制其访问,下面小编就给大家介绍下Linux系统中如何配置Nginx来拒绝代理ip访问。
      先大概说说简单的结构…前端一个Nginx反向代理,后端一个NginxinstanceappforPHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打流量,而是针...
  • 如何修改Linux文件系统的权限及安全设置

    如何修改Linux文件系统的权限及安全设置


      如果文件系统的权限设置不合理,就会威胁系统的安全,所以当运维人员遇到不能修改及删除文件的情况,就要对文件的的权限进行修改和设置了,下面小编就给大家介绍下Linux系统中如何修改及设置文件的权限。
      一、锁定系统重要文件
      系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在Linux下锁定...
  • 如何解决Unix迁移到Linux系统培训时遇到的问题

    如何解决Unix迁移到Linux系统培训时遇到的问题


      Linux系统类似于Unix系统,当还是有很大的区别的,习惯了Unix的用户再使用Linux系统多少会有些不习惯,下面小编要给大家介绍下如何解决Unix迁移到Linux系统培训时遇到的问题,一起来了解下吧。
      把Unix迁移到Linux实际操作时会遇到很多困难,培训员工迁移是不是更难呢?会不会遇到更多问题呢?备份和高可用性又了解得如何?你如何监控性能并调节你的系统呢?你又如...