口令文件

阴影口令

组文件

附属组ID

登录账户记录

系统标识

口令文件<\h2>

/etc/passwd文件是UNIX安全的关键文件之一。该文件用于用户登录时校验用户的口令,文件中每行的一般格式为:

用户名: x :用户ID:用户组ID:说明信息:个人主目录:SHELL

对于第二项x来说是密码,但由于安全原因密码已经被移至其他文件,因此使用x来代替。

UNIX系统提供了两个用于获取passwd文件中条目的函数,在给出用户ID或者用户名之后,这两个函数即可查看相关信息。其头文件及函数原型如下:

  #include <pwd.h>

  struct passwd* getpwuid(uid_t __uid);
struct passwd* getpwnam(const char *__name);

函数成功是返回相应指针,出错返回NULL。第一个函数使用用户UID,第二个函数使用用户名。返回的指针指向一个静态变量,因此只要再调用任一相关的函数就会改写指针所指向的变量内容。

上面两个函数一次只能查看一个,而且必须提供用户名或者用户UID,如果想要查看所有账户信息或者事先不了解用户名及用户UID,则可以通过下面几个函数来查看。其头文件及函数原型如下:

  #include <pwd.h>

  struct passwd *getpwent(void);
void setpwent(void);
void endpwent(void);

getpwent( )函数用于读取passwd文件(读取一项),setpwent( )用于设置从passwd文件头部开始读,endpwent( )用于关闭文件。

阴影口令<\h2>

阴影口令文件/etc/shadow用于存储加密后的密码,该密码加密方式是单向不可逆。shadow文件普通用户不允许读取,访问shadow文件的一组函数与访问passwd文件函数类似。其头文件及函数原型如下:

  #include <shadow.h>

  struct spwd *getspnam(const char *__name);

  struct spwd *getspent(void);
void setspent(void);
void endspent(void);

函数成功是返回相应指针,出错返回NULL。

组文件<\h2>

组文件/etc/group包含了系统用户组相关的信息,UNIX系统提供了两个函数来查看。其头文件及函数原型如下:

  #include <grp.h>

  struct group *getgrgid (gid_t __gid);
struct group *getgrnam (const char *__name);

函数成功是返回相应指针,出错返回NULL。

如果需要搜索整个组文件,则类似passwd文件函数。其头文件及函数原型如下:

  #include <grp.h>

  struct group *getgrent(void);
void setgrent(void);
void endgrent(void);

附属组ID<\h2>

现有的UNIX都支持一个用户加入多个组,对于除了创建用户时产生的自带用户组之外,用户额外加入的其他组则为附属组。为了获取和设置附加组ID,UNIX提供了3个函数。其头文件及函数原型如下:

include <unistd.h>

include <grp.h>

int getgroups (int __size, gid_t __list[]);

int setgroups (size_t __n, const gid_t *__groups);

int initgroups (const char *__user, gid_t __group);

登录账户记录<\h2>

UNIX系统还提供了一些事件簿记功能,该功能可以查看当前登录到系统的各个用户,还能跟踪登录注销等事件。UNIX中利用一个二进制结构来填写记录。登录时,login程序将信息写入到utmp文件和wtmp文件中。注销时,init进程将utmp文件中的记录移除,并添加一个新记录到wtmp文件中。

系统标识<\h2>

UNIX系统提供了一个函数用于返回与主机和操作系统有关的信息。其头文件及函数原型如下:

  #include <sys/utsname.h>

  int uname(struct utsname *__name);

函数成功时返回非负值,失败返回-1。

unix环境高级编程第六章笔记的更多相关文章

  1. unix环境高级编程第四章笔记

    文件和目录 start fstart lstart函数 一旦给出pathname, start函数就返回了与此命名文件有关的信息结构 #include <sys/start> int st ...

  2. unix环境高级编程第三章笔记

    文件描述符 1.文件描述符的概念 对于内核而言,所有打开的文件都会用一个文件描述符来引用,打开或和创建一个新文件的时候,内核会给进程返回一个文件描述符,而当使用read write时,可以使用这个文件 ...

  3. UNIX环境高级编程 第8章 进程控制

    本章是UNIX系统中进程控制原语,包括进程创建.执行新程序.进程终止,另外还会对进程的属性加以说明,包括进程ID.实际/有效用户ID. 进程标识 每个进程某一时刻在系统中都是独一无二的,它们之间是用一 ...

  4. UNIX环境高级编程 第7章 进程环境

    本章涉及C/C++程序中main函数是如何被调用的.命令行参数如何传递给main函数.程序的内存空间布局.程序如何使用环境变量.程序如何终止退出. main函数 C程序或C++程序总是从main函数开 ...

  5. UNIX环境高级编程 第13章 守护进程

    守护进程daemon是一种生存周期很长的进程.它们通常在系统引导时启动,在系统关闭时终止.守护进程是没有终端的,它们一直在后台运行. 守护进程的特征 在Linux系统中,可以通过命令 ps -efj ...

  6. UNIX环境高级编程 第9章 进程关系

    在第8章学习了进程的控制原语,通过各种进程原语可以对进程进行控制,包括新建进程.执行新程序.终止进程等.在使用fork( )产生新进程后,就出现了进程父子进程的概念,这是进程间的关系.本章更加详细地说 ...

  7. UNIX环境高级编程 第6章 系统数据文件和信息

    UNIX系统的正常运作需要用到大量与系统有关的数据文件,例如系统用户账号.用户密码.用户组等文件.出于历史原因,这些数据文件都是ASCII文本文件,并且使用标准I/O库函数来读取. 口令文件 /etc ...

  8. UNIX环境高级编程 第5章 标准I/O库

    本章是关于C语言标准I/O库的,之所以在UNIX类系统的编程中会介绍C语言标准库,主要是因为UNIX和C之间具有密不可分的关系.由于UNIX系统存在很多实现,而每个实现都有自己的标准I/O库,为了统一 ...

  9. UNIX环境高级编程 第1章 UNIX基础知识

    所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...

随机推荐

  1. Databricks 第5篇:Databricks文件系统(DBFS)

    Databricks 文件系统 (DBFS,Databricks File System) 是一个装载到 Azure Databricks 工作区的分布式文件系统,可以在 Azure Databric ...

  2. 【Flutter】容器类组件之剪裁

    前言 Flutter中提供了一些剪裁函数,用于对组件进行剪裁. 剪裁Widget 作用 ClipOval 子组件为正方形时剪裁为内贴圆形,为矩形时,剪裁为内贴椭圆 ClipRRect 将子组件剪裁为圆 ...

  3. DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路

    简介: 数据库将面临怎样的变革?云原生数据库与数据仓库有哪些独特优势?在日前的 DTCC 2020大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部总裁.ACM杰出科学家李飞飞就<云原生分布式数 ...

  4. 计网Q1:多个方面比较电路交换、报文交换和分组交换的主要优缺点

    网上看到的带佬儿的帖子......膜过来<doge 原文链接: https://blog.csdn.net/njchenyi/article/details/1540657 电路交换: 由于电路 ...

  5. python协程爬取某网站的老赖数据

    import re import json import aiohttp import asyncio import time import pymysql from asyncio.locks im ...

  6. 关于SQL Server 镜像数据库快照的创建及使用

    从SQL Server 2005 SP 起,SQL 开始支持数据库镜像.它的设计目的是试图为SQL Server 提供一个具有实时性数据同步的灾难恢复技术,即能够提供数据冗余备份,切换起来比较方便.每 ...

  7. 解决安装mysql动态库libstdc++.so.6、libc.so.6版本过低问题

    初始化mysql报错: ./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ...

  8. 网络可视化工具netron详细安装流程

    1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构.如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构. 这时,就可以使用netron可视化工具,可以清晰的 ...

  9. Docker容器日志清理方案

    Docker容器在运行过程中会产生很多日志,久而久之,磁盘空间就被占满了,以下分享docker容器日志清理的几种方法 删除日志 在linux上,容器日志一般存放在 /var/lib/docker/co ...

  10. kubernetes用户权限管理工具permission-manager

    Permission Manager Permission Manager是一个为Kubernetes RBAC和用户管理提供Web UI的项目,为Kubernetes权限管理提供友好的可视化界面. ...