口令文件

阴影口令

组文件

附属组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。

最新文章

  1. 【CSS】过渡、动画和变换
  2. could not insert new action connection could not find any information for the class named
  3. 九度oj 1528 最长回文子串
  4. 京东sdk商家上架接口调用问题总结(更新中...)
  5. 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
  6. [UWP]了解模板化控件(3):实现HeaderedContentControl
  7. dva框架使用mock.js模拟数据 + fetch请求数据
  8. virtualbox+ubuntu
  9. jmeter4.x centos7部署笔记
  10. _recruit
  11. vue2.0 父子组件通信 兄弟组件通信
  12. [转]阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
  13. OPTIMIZE TABLE linked list 表优化原理 链表数据结构 空间再利用
  14. NBUT 1219 Time 2010辽宁省赛
  15. opencv-python教程学习系列7-opencv图像基本操作
  16. Django路由系统---django重点之url命名分组
  17. C#MD5笔记
  18. java 面向对象编程(OOP)
  19. WKWebview的基本使用
  20. mvn库

热门文章

  1. 【原创】中断子系统-ARM GPIO中断处理流程
  2. Linux常用命令(df&amp;dh)
  3. 值得推荐的C#不同版本语言特性
  4. VsCode通过SSH连接远程服务器开发
  5. 集成spring框架的web.xml
  6. LeetCode 二分查找模板 I
  7. 一文搞懂MySQL前缀索引
  8. 优先队列priority_queue排序
  9. 使用 gRPCurl 调试.NET 5的gPRC服务
  10. Python Pandas操作Excel