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用户简略介绍的主要内容,如果未能解决你的问题,请参考以下文章

LVS简略介绍

Linux命令之查看登录用户列表users

Linux(程序设计):66---简略版的线程池设计

Linux基础汇总

Linux介绍

Linux -- 目录结构介绍登录root用户添加和删除用户Linux远程登录和远程文件上传下载(FinalShell)