- unix口令文件(POSIX.1称为用户数据库)/etc/passwd
- 加密口令字段包含一个占位符,将实际的加密口令存放在另一个位置(maybe:/etc/shadow)
- 口令文件中的字段可为空,若加密口令字段为空,则意味没有设置口令
- shell字段包含一个可执行程序,被用作该用户登录shell;为了阻止一个特定的用户登录系统,可将此字段设为/dev/null、/bin/false、/bin/true等
- nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ; nobody用户名使任何人都可登录系统;但是其用户ID65534和组ID65534不提供任何权限,只能访问人人都可读写的文件
- 给出用户名或数值用户ID,查询相关项:
- struct passwd* getpwuid(uid_t uid)
- struct passwd* getpwnam(const char* name)
- 遍历整个口令文件:
- struct passwd* getpwent(void):返回口令文件中的下一项,顺序与实现有关
- void setpwent(void):反绕口令文件,从头开始
- void endpwent(void):关闭相关文件
- 阴影文件:/etc/shadow:
- 访问接口:类似与口令文件的接口
- struct spwd* getspnam(const char* name)
- struct spwd* getspent(void)
- void setspent(void)
- void endspent(void)
- 组文件:/etc/group
- 接口:
- 附加组ID:一个用户同时属于多个组;不仅仅可以属于口令文件记录项中组ID所对应的组,相应的文件访问权限检查被修改位:不仅将进程的有效用户ID与文件的组ID相比较,并且将附加组ID与文件的组ID进行比较
- 接口:
- 实现的区别:
- 其他数据文件:
- 登录帐号记录:utmp :记录当前登录的各个用户、wtmp:记录登录与注销时间;详见 man struct utmp;files:/var/run/utmp、/var/log/wtmp
- POSIX.1定义uname函数,返回与当前主机和操作系统的有关信息
- int uname(struct utsname* name)
- 时间:
unix高级环境编程 系统数据文件与信息 --chap6
最新推荐文章于 2014-11-04 17:02:38 发布