title: 用户ID与权限

date: 2019/11/25 21:20:02

toc: true

用户ID与权限

文件系统查看

cat /etc/group

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,reallin
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:

权限ID概览

我们是谁,登录的用户 real user ID
实际用户ID real group ID
文件权限检查 effective user ID
有效用户ID effective group ID
由exec函数保存的ID saved set-user-ID
保存的设置用户ID saved set-group-ID saved by exec functions

设置位

#define	__S_ISUID	04000	/* Set user ID on execution.  */
#define __S_ISGID 02000 /* Set group ID on execution. */
#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */

正常来说有效用户ID=实际用户ID,当设置了st_mode中的 set-user-ID bit set-group-ID bit .当执行此文件时,将用户的有效ID设置为文件的所有者ID.也就是有效用户ID=文件所有者ID

比如文件的所有者是root,那么当进程执行时一定需要用sudo超级用户权限执行,他实际有效ID也就是root的

chmod u+s xxx

黏着位

S_ISVTX

如果对目录设置了这一位,则只有对目录有写权限的用户,并且有以下权限之一才能对目录下文件删除重命名

  1. 拥有文件
  2. 拥有目录
  3. 超级用户

UMASK

文件创建权限海域umask有关,这个看umask.md

chmod与chown

看英文

// 改变所有者和组
chown - change file owner and group // 改变 所有者和组的读写权限位,4个8进制
chmod - change file mode bits

代码附录

chmod

extern "C" {
#include "apue.h"
}
#include <stdio.h> #include <sys/stat.h>
//int chmod(const char *pathname, mode_t mode); #include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
//int stat(const char *pathname, struct stat *statbuf); int main(int argc ,char** argv)
{
if(argc==1)
{
err_quit("pls input file path\n");
} struct stat statbuf; if(0!=stat(argv[1], &statbuf))
{
err_quit("get file stat faild\n");
}
// 去除组的所有权限
if(chmod(argv[1], statbuf.st_mode&=~(S_IRGRP|S_IWGRP|S_IXGRP))!=0)
{
err_quit("chmod file mode faild\n");
}
exit(0); } // reallin@ubuntu:~/work/pan/apue/study/3-6-5$ ll chmod.o
// -rw-rw-r-- 1 reallin reallin 188896 Nov 26 20:16 chmod.o
// reallin@ubuntu:~/work/pan/apue/study/3-6-5$ ./exe chmod.o
// reallin@ubuntu:~/work/pan/apue/study/3-6-5$ ll chmod.o
// -rw----r-- 1 reallin reallin 188896 Nov 26 20:16 chmod.o

用户ID与权限的更多相关文章

  1. 【转】linux 设置用户id 设置组id

    linux 设置用户id 设置组id   转自 linux 设置用户id 设置组id   最近看apue,简单记录对设置用户id理解(设置组id同理). 1. 相关的id好像很多,共有哪些? 文件2个 ...

  2. linux系统学习笔记:无死角理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID

    一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用 ...

  3. UNIX文件的权限之“设置用户ID位”

    用stat函数可以获取一个文件的状态信息,原型是这样的: int stat(const char *path, struct stat *buf); 其中结构体stat的结构: struct stat ...

  4. 操作失败,没有该服务权限![ 机构号:99 ,用户ID:50000009 ,服务号:0101030112 ]

    操作失败,没有该服务权限![ 机构号:99 ,用户ID:50000009 ,服务号:0101030112 ] 此时我们可以把代码 SERVICE_NO 改成 10个0 即 0000000000 ,就可 ...

  5. Linux下文件权限(一)用户ID和用户组ID

    最近在读<unix环境高级编程>,看到文件权限这里比较糊涂,主要设计多个用户ID和用户组ID,包括下面两个: (1)实际用户ID和实际用户组ID:这一部分表示我们究竟是谁.这两个字段在登录 ...

  6. 文件访问权限:更改用户ID

    本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户I ...

  7. 用户id,组id和文件访问权限

    实际用户ID和实际组ID:标示了我们究竟是谁,这两个字段在登录时取自口令文件中的登录项 有效用户ID和有效组ID以及附属组ID:决定了我们的文件的访问权限(通常有效用户ID等于实际用户ID,有效组ID ...

  8. 绑定用户id,用户权限认证

    上面这个就是为了把user_id与文章关联起来 文章需要跟用户关联,所以要去文章模型中加以关联 这样就可以直接在模板中进行关联处理 权限认证 首先要创建policy php artisan make: ...

  9. tp5用户id登录进行权限设置

    HTML代码:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

随机推荐

  1. 关于npm audit fix

    https://blog.csdn.net/weixin_40817115/article/details/81007774 npm audit : npm@5.10.0 & npm@6,允许 ...

  2. left

    left 语法: left: auto | <length> | <percentage> 默认值:auto 适用于:定位元素.即定义了 <' position '> ...

  3. [Luogu] 矩形覆盖

    https://www.luogu.org/problemnew/show/P1034 数据太水 爆搜过掉 #include <iostream> #include <cstdio& ...

  4. UVA1674 闪电的能量 树剖

    UVA1674 闪电的能量 树剖 题面 水.树剖模板 #include <cstdio> #include <cstring> #include <algorithm&g ...

  5. Noip2012 提高组 Day1 T1 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  6. numpy基础一

    常用,常忘 1.随机矩阵 np.random.rand(4,3) array([[ 0.06679473, 0.71073515, 0.5694172 ], [ 0.95018143, 0.60161 ...

  7. linux下文件传输一些方法整理.

    ftp类 ftp 命令已经不推荐使用了. #基本用法 lftp sftp://[domain name] lftp sftp://theURL.org #使用不同用户名 lftp sftp://[us ...

  8. 自制操作系统-使用汇编显示 hello world

    Windows (开机)读软盘第一个扇区的读法的具体表格 Hello World汇编版 就是将16进制编写的代码使用汇编语言编写出来 ; cherry-os ORG 0x7c00 ;指定程序装载的位置 ...

  9. VUE项目开发流程

    前期准备 安装npm 安装webpack\vue-cli(2.9.6版本--版本不同可能会导致以下一些目录结构以及错误解决办法不符合实际情况) 创建项目 初始化创建项目,项目名称.项目描述.拥有者等等 ...

  10. 【转】CAtlRegExp class .

    CAtlRegExp Class   CAtlRegExp 类用于表示并处理正则表达式.模板类,定义如下:     template < class CharTraits = CAtlRECha ...