linux用户简略介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux用户简略介绍相关的知识,希望对你有一定的参考价值。
参考技术A 用户和组管理资源分派
Authentication;认证
Authoization;授权
Accouting;审计
Audition
token ,identity(username/password)
linux 用户 Username/UID
管理员;root 0
普通用户:1-65535
系统用户; 1-499 ,9999
对守护进程获取资源进行权限分派
登录用户;500+ ,1000+
交互登录
linux组: Groupname/GID
管理员组;root, 0
普通组;
系统组 1-499,1--999
普通组 500+ , 1000+
linux安全上下文
运行中的程序;进程(procees)
以进程发起者的身份运行;
root;cat
tom;cat
一个进程所能够访问的所有资源取决于进程发起者的身份
linux组的类别;
用户的基本组(主组):
组名同用户名;且仅包含一个组;私有组
用户的附加组(额外组):
linux用户和组相关的配置文件;
/etc/passwd 用户及其属性信息(名称,UID,基本组ID)
/etc/group. 组及其属性信息
/etc/shadow 用户密码及其相关属性;
/etc/gshadow 组密码及其相关组信息
/etc/passwd
name;password;UID;GID;GECOS;directory;shell
用户名;密码;UID;GID;GECOS;主目录;默认shell
/etc/group
group_name;password;GID;user_list
组名,组密码,GID,以当前组为附加组的用户列表(用户过多的话,分隔为逗号)
/etc/shadow
用户名:加密了的密码l:
加密机制 ,
加密 明文-->密文
解米 密文-->明文
单向加密;提取数据指纹 (唯一特征)
md5; message digest, 128bits
sha1;secure hash algorithm,160bits
sha224.224bits
sha383;384bits
sha512;512bits
雪崩效应,初始条件的微小改变,将会引起结果的巨大改变;
定长输出;
密码的复杂性策略
1数字,大小写字母,及特殊字符中至少三种
2足够长;
3使用随机密码,
4定期更换,不重复以前的密码
用户和组相关的管理命令
用户创建; useradd
useradd user1
tail -l /etc/passwd 查看相关命令
useradd -u UID [UID_MIN,UID,MAX]定义在 /etc/login.defs
-g 指明用户的基本组,可为组名,也可为GID(添加组id的时候组名必须存在)
-c“COMMENT”用户的注释信息
-d /PATH/TO>HOME_DIR 以指定的路径为目录
- s SHELL指明用户的默认shell
可用列表在/etc/shell 文件中
(/etc/default/useradd) 设置SHELL变量
-G GROUP1 GROUP2,用户指明附加组;组必须存在
默认值设定; /etc/default/useradd 中
useradd-D
-s
id 用户名查看用户的UID等信息
groupadd 组名
练习
创建用户gentoo ,附加组为distro和linux,默认shell 为/bin/csh z
注释信息为“Gentoo DIstribution”
Linux(程序设计):66---简略版的线程池设计
一、设计线程池的优点、作用- 在前面的文章(javascript:void(0))中我们设计过了一种线程池,但是那种线程池比较复杂代码比较多,本文介绍一个简略版的线程池
- 线程使应用能够更加充分合理的协调利用cpu 、内存、网络、i/o等系统资源。
- 线程的创建需要开辟虚拟机栈,本地方法栈、程序计数器等线程私有的内存空间。
- 在线程的销毁时需要回收这些系统资源。频繁的创建和销毁线程会浪费大量的系统资源,增加并发编程的风险。
- 另外,在服务器负载过大的时候,如何让新的线程等待或者友好的拒绝服务?这些丢失线程自身无法解决的。所以需要通过线程池协调多个线程,并实现类似主次线程隔离、定时执行、周期执行等任务。
-
本线程池比较简单,就包括3个内容:
- 任务节点。
- 线程节点。
- 线程池。
-
任务节点:
- 功能:就是一个任务,其有一个回调函数,用于执行任务。
- 特点:当有新任务加入线程池之后,这个任务会被线程池分配给线程去处理。
//任务节点
typedef struct NJOB
{
void (*_jobFunc)(void *NJOB); //回调函数
void *_userData; //回调函数参数
struct NJOB *_next;
struct NJOB *_prev;
}NJOB;
-
线程节点:
- 功能:单个线程的表示结构体,可以用来处理任务,
- 特点:线程各自运行在自己的pthread_create()回调函数中,一直不间断的执行任务,
//线程节点
typedef struct NWORKER
{
pthread_t _tid; //线程节点的tid
struct NWORKQUEUE *_workQueue; //该线程所属的线程池
int _terminate; //是否终止工作
struct NWORKER *_next;
struct NWORKER *_prev;
}NWORKER;
- 线程池:线程池对象,保存着任务和所有的线程。
//线程池(管理着所有的任务和线程节点)
typedef struct NWORKQUEUE
{
struct NJOB *_jobs;
struct NWORKER *_workers;
int _sumWorkersNum; //总共的线程数
int _freeWorkersNum; //空闲的线程数
pthread_mutex_t _mutex; //互斥锁
pthread_cond_t _cond; //条件变量
}NWORKQUEUE;
typedef NWORKQUEUE threadPool;
三、编程实现
-
源码下载方式:
- CSDN下载:javascript:void(0)。
- 或者公众号【多栖技术控小董】回复【13740168】获取下载链接。
运行
- 下载代码,进入目录之后输入make编译,然后运行即可
以上是关于linux用户简略介绍的主要内容,如果未能解决你的问题,请参考以下文章
Linux -- 目录结构介绍登录root用户添加和删除用户Linux远程登录和远程文件上传下载(FinalShell)