第一章 linux帐号管理与acl权限控制   
不同的用户拥有不同的权限    可以通过user/group的特殊权限设定,来规范不同的群组开发
一 linux帐号与群组
A 使用者的识别码:
UID和GID   每个用户都拥有这两个属性  一个是人属性,另一个是群组属性
/etc/passwd  文件中记录个人属性
/etc/group中记录群组属性
例子:id  dazhenzhong中的id命令可以查看某用户的id信息
用户登陆的时候  系统流程
1.读取/etc/passwd   查看用户名是否正确   如果正确则将uid和gid都读出来   并且读取该用户家目录与shell的环境设定
2.核对密码表,进入/etc/shadow找出对应的帐号 uid   然后核对输入的密码是否正确  md5函数
3.如果正确   就进入shell控管的阶段
passwd  文件    分隔符为:
帐号名称
密码(设置为x   原因为真正的密码在etc/shadow里面)   
UID 用户id号码 0为管理员    1-999为系统保留的ID   其中1-200有发行版自己建立的系统帐号   201-999为如果系统有帐号需求时,可以使用的UID    通常这些帐号是不可以登陆的  所以才会有   /sbin/nologin这个特殊的shell的文件的存在
1000-(2^32-1)为普通个人用户使用的id
4.GID /etc/group    群组
5.用户信息说明
6.家目录
7.shell    ./bashrc***
B /etc/shadow  文件结构
分隔符  同样为 :
1.帐号名称
2.密码 真正的密码   早期为des   md5   当前为sha   长度更长  即相对更加安全
3.最后变更密码的时间
     4.密码不可被修改的天数
5.密码需要重新变更的天数
6.密码需要修改的期限前的警告天数
7.密码过期后的帐号宽限时间  密码失效日
8.帐号失效日期
9.保留
普通用户密码忘记的解决办法  passwd即可  root用户下操作
如果是root密码忘记  则需要开机进入单人模式   修改etc/shadow文件    也可以用livecd开机后mount根目录去修改etc/shadow文件。将里面的root的密码晴空   再重新不用密码登陆   
确认密码加密的算法:authconfig -test | grep hashing
C 群组   groups   newgrp
 
/etc/group
1.群组名称
2.群组密码
3.GID
4.此群组支持的帐号名称
有效群组 effective group  与初始群组  initial group
1.groups   命令列出当前用户的群组
2.第一个出现的就是有效群组   新创建的文件归有效群组的权限
3.newgrp  有效群组的切换
想要切换的群组  必须是已经支持的群组   命令为:newgrp 群组名
切换到新的shell环境下执行  
4.加入群组的方法
a  root   通过usermod命令加入
b 群组管理员  而非root    通过gpasswd将用户加入到群组当中   
/etc/gshadow   群组管理员      
 
二 帐号管理
A.新增和删除用户
useradd  /passwd   即如帐号  建立uid gid  家目录等   
/shadow 将密码参数填入   
/group 加入与帐号名称相同的群组名称
/home 建立一个同名目录  做家目录  权限为700
useradd  -D 来查看预设值     
文件为/etc/default/useradd    群组分为私有群组和公共群组两类   前者group=100  家目录权限值设定为700 只有自己可以进入自己的家目录 代表发行版有rhel   fedora centos等      公共群组   将group=100这个设定值  作为新建帐号的初始群组   ,因此每个帐号都属于users这个群组   代表发行版有suse等
除了基本的帐号设定   UID/GID还有密码参数设定文件   /etc/login.defs   和etc/skel/*
passwd 通常会使用pam模组来检验密码     修改密码
change   查看密码详细的参数   
usermod 对用户信息进行修改
userdel 删除用户   涉及到的文件
/etc/passwd    /etc/shadow
/etc/group     /etc/gshadow
/home/username     /var/spool/mail/username
-r    连同家目录一起删除
如果想暂时停止某用户的使用  可以将/etc/shadow  第8位设置为0就可以了
如果想要将系统内某用户的所有资料删除    在userdel -r username  之前   先运行find / -user username  查找出整个系统内属于username的文件  再删除
id      普通用户的账户信息修改命令    查询某人    修改自己   
chsh change shell的简写   可以修改/etc/passwd此系统文件   SUID功能
新增与删除群组
groupadd
groupmod
groupdel
gpasswd   群组管理员使用的命令
ACL
权限细化       unix-like作业系统额外项目
查询     dmesg | grep -i acl
设定
getfacl   取得某个文件或者目录的acl设定项目
setfacl 设定某个目录或文件的acl规范
用户切换
使用一般帐号:用较低权限启动系统服务:软件本身的限制
su    切换到root   需要root的密码   su -  为直接切换到root
注意login-shell   变量改变    和non-login shell   变量不变  两个设定文件    
切换身份的时候   尽量使用login shell的方式    
所以   如果希望完整的切换用户及其环境需要使用
su - username   或者 su -l username    才会连同PATH/USER/MAIL等变量都转换成新使用者的环境
如果只是向要执行一次root的指令  可以利用   su --c  指令串   的方式来处理
使用root切换成为任何用户的时候   并不需要输入新用户的密码
sudo 执行root的指令串     需要输入用户自己的密码   所以更加安全
env      显示shell环境变量

第四部分 linux使用者管理的更多相关文章

  1. Linux使用者管理(1)---用户账号

    linux很重要的应用就是作为服务器的操作系统.服务器的作用是给多用户提供各种“服务”(可能是读服务器上的文件,或者是利用服务器进行数值计算)那么如果多用户共同拥有一台服务器,就需要对服务器上的用户进 ...

  2. linux 使用者管理

    1.用户标识符 UID  用户ID GID  用户组ID 2./etc/passwd 文件结构 id范围:0系统管理员|1~499 (系统账号)|500~65535 可登录账号

  3. [Linux]第四部分-Linux用户管理

    登陆过程:1.从etc/passwd中查找账号,没有则退出,然后在etc/shadow中读出uid与密码表passwd中内容格式 用户名:密码:UID:GID:用户信息说明:家目录:用户所用Shell ...

  4. 【原创】(十四)Linux内存管理之page fault处理

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  5. Linux使用者管理(2)---账号管理

    用户添加 新增用户 sudo useradd -m username 这里必须使用sudo 因为需要对/etc/shadow进行读写,在ubuntu环境下,必须使用-m设置,否则不会创建主文件夹. 在 ...

  6. Linux(3)- 用户管理、文件与目录权限、常用命令、Linux软件包管理

    一.用户管理 现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源. 普通用户 ...

  7. 笔记:Linux用户管理(补充)、权限管理、内存管理、网络管理、渗透常用命令

    一.用户管理(补充) 添加用户:useradd [选项] 用户名 useradd -u 5000 -g demogroup -G root -d /home/demo -s /bin/bash dem ...

  8. 第十四章、Linux 账号管理与 ACL 权限配置

    1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...

  9. Linux内存描述之内存页面page–Linux内存管理(四)

    服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...

随机推荐

  1. Python+selenium之跳过测试和预期失败

    在运行测试时,需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试,又或者直接将测试用例设置为失败.unittest单元测试框架提供了实现这些需求的装饰器. 1.unittest.skip(re ...

  2. openfire4.0.2源码 使用 IntelliJ IDEA 搭建开发环境

    从官网下载压缩包,解压,直接打开build目录下的project 打开后, 相关的设置 fix直接修复或者下载 设置 设置每个插件目录下的java目录为source 编译openfire和plugin ...

  3. hihoCoder #1050 : 树中的最长路

    题意: 求出树上最长路径的长度,并返回. 思路: 刚看到数据<=10^5,假如是单分支的树,那么有5万层,就不能递归,那就用桟实现, 那就要将长度信息保存在另开的数组中,很麻烦!!这题专门给递归 ...

  4. 将SQL2008升级为SQL2008 r2

    我的SQL2008版本信息 Microsoft SQL Server Management Studio     10.0.1600.22 ((SQL_PreRelease).080709-1414 ...

  5. 认识CoreData—初识CoreData

    http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之 ...

  6. 多线程程序设计-Thread的一些方法

    run():是程序中会和会和其他线程“同时”执行的部分.   wait():使得当前线程进入等待状态,等待的线程不会主动进入到线程队列中排队等待cpu资源,必须由其他线程调用notify()方法通知它 ...

  7. 字符编码:Unicode和UTF-8的关系

    今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思 ...

  8. idea中pom.xml没有工作 IDEA中maven项目pom.xml依赖不生效解决

    问题: 今天在web项目中需要引入poi相关jar包.查看之下才发现pom.xml中的依赖虽然已经下载到了本地仓库 repository,但是却没有加入到项目路径的 Extenal Libraries ...

  9. C#传递数组参数

    在C#中,可以将数组作为参数传递给方法,同时方法可以更改数组元素的值. 一.将一维数组作为参数传递给方法 using System;using System.Collections.Generic;u ...

  10. 括号匹配性检测C语言实现

    #include <stdio.h> #define SIMPLE_KUOHAO "(()1231qeqw)(@#$)" #define COMPLEX_KUOHAO ...