美文网首页程序员Linux学习|Gentoo/Arch/FreeBSD
Linux运维之道(8)——用户和组管理

Linux运维之道(8)——用户和组管理

作者: 逃跑中计划 | 来源:发表于2016-03-26 21:49 被阅读682次

    @(Linux)[用户和组管理]


    1. 用户和组管理

    1.1 资源分派三元组

    • Authentication:认证
    • Authorization:授权
    • Accouting:审计

    1.2 Linux用户-UID

    管理员root, 0
    普通用户:1-65535

    • 系统用户:1-499, 1-999
      对守护进程获取资源进行权限分配
    • 登录用户:500+, 1000+
      交互式登录

    1.3 Linux组-GID

    管理员组root, 0
    普通组

    • 系统组:1-499, 1-999
    • 普通组:500+, 1000+

    Linux组的类别:

    • 用户的基本组(主组):
      组名同用户名,且仅包含一个用户:私有组
    • 用户的附加组(额外组):
      通过后需添加获得

    1.4 Linux安全上下文

    进程所能够访问的所有资源的权限取决于进程的发起者的身份

    • 比如说,当我以escape这个用户使用ls命令时,首先系统会检测我这个用户是否是这个命令的所有者(rwx),如果不是判断是否为这个命令的所属组(r-x),如果都不是则会应用其他人(r-x)权限。但是,也有一些命令例外,具体什么呢?下一篇文章将会涉及,请多关注。
    • 其实在我们执行命令的时候,系统会重新启动一个bash(假设你使用的是bash)来运行我们的命令,在运行完毕之后返回命令执行的结果。
    [escape@localhost ~]$ ll /usr/bin/ls
    -rwxr-xr-x. 1 root root 117616 2月  16 23:49 /usr/bin/ls
    

    1.5 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

    • 用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段

    /etc/gshadow

    • 组名:口令:组管理者:组内用户列表

    **密码的复杂性策略: **
    1、使用数字、大写字母、小写字母及特殊字符中至少3种;
    2、足够长;
    3、使用随机密码;
    4、定期更换;不要使用最近曾经使用过的密码;

    2. 用户和组相关的管理类命令


    2.1 用户创建:useradd

    格式:useradd [options] LOGIN

    参数选项:

    • -u UID
      [UID_MIN, UID_MAX], 定义在/etc/login.defs
    • -g GID
      指明用户所属基本组,可为组名,也可以GID
    • -c "COMMENT"
      用户的注释信息;
    • -d /PATH/TO/HOME_DIR
      以指定的路径为家目录
    • -s SHELL
      指明用户的默认shell程序,可用列表在/etc/shells文件中
    • -G GROUP1[,GROUP2,...[,GROUPN]]]
      为用户指明附加组;组必须事先存在
    • -r
      创建系统用户
      CentOS 6: ID<500
      CentOS 7: ID<1000

    默认值设定/etc/default/useradd文件中


    2.2 组创建:groupadd

    格式:groupadd [OPTION]... group_name

    参数选项:

    • -g GID
      指明GID号;[GID_MIN, GID_MAX]
    • -r
      创建系统组
      CentOS 6: ID<500
      CentOS 7: ID<1000

    2.3 查看用户相关的ID信息:id

    格式:id [OPTION]... [USER]

    参数选项:

    • -u
      UID
    • -g
      GID
    • -G
      Groups
    • -n
      Name

    2.4 切换用户或以其他用户身份执行命令:su

    格式:su [options...] [-] [user [args...]]

    切换用户的方式:
    su UserName

    • 非登录式切换,即不会读取目标用户的配置文件;

    su - UserName

    • 登录式切换,会读取目标用户的配置文件;完全切换;

    换个身份执行命令:
    su [-] UserName -c 'COMMAND'

    参数选项:

    • -l
      su -l UserName相当于su - UserName

    Note:root用户su至其他用户无须密码;非root用户切换时需要密码;


    2.5 用户属性修改:usermod

    格式:usermod [OPTION] login

    参数选项:

    • -u UID
      新UID
    • -g GID
      新基本组
    • -G GROUP1[,GROUP2,...[,GROUPN]]]
      新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append
    • -s SHELL
      新的默认SHELL
    • -c 'COMMENT'
      新的注释信息
    • -d HOME
      新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项
    • -l login_name
      新的名字
    • -L
      lock指定用户
    • -U
      unlock指定用户
    • -e YYYY-MM-DD
      指明用户账号过期日期
    • -f INACTIVE
      设定非活动期限

    2.6 给用户添加密码:passwd

    格式:passwd [OPTIONS] UserName

    • 修改指定用户的密码,仅root用户权限
    • passwd: 修改自己的密码;

    参数选项:

    • -l
      锁定指定用户
    • -u
      解锁指定用户
    • -n mindays
      指定最短使用期限
    • -x maxdays
      最大使用期限
    • -w warndays
      提前多少天开始警告
    • -i inactivedays
      非活动期限
    • --stdin
      从标准输入接收用户密码
      echo "PASSWORD" | passwd --stdin USERNAME

    Note: /dev/null and /dev/zero
    /dev/null,它是空设备.看作黑洞,它非常等价于一个只写文件,所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到,然而/dev/null对命令行和脚本都非常的有用。
    /dev/zero也是一个伪文件,但它实际上产生连续不断的null的流(二进制的零流,而不是 ASCII型的)。写入它的输出会丢失不见,而从/dev/zero读出一连串的null也比较困难,虽然这也能通过od或一个十六进制编辑器来做到。 /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。


    2.7 删除用户:userdel

    格式:userdel [OPTION]... login

    参数选项:

    • -r
      删除用户家目录

    2.8 组属性修改:groupmod

    格式:groupmod [OPTION]... group

    • -n group_name
      新名字
    • -g GID
      新的GID

    Note:userdel不允许你移除正在线上的使用者帐 号


    2.9 组删除:groupdel

    格式:groupdel GROUP

    Note: 如果有任何一个群组的使用者在线上的话就不能移除该群组,最好先移除使用者后再移除群组。


    2.10 组密码:gpasswd

    格式:gpasswd [OPTION] GROUP

    参数选项:

    • -a user
      将user添加至指定组中
    • -d user
      删除用户user的以当前组为组名的附加组
    • -A user1,user2,...
      设置有管理权限的用户列表
    • -r
      删除密码

    实战演示:

    [root@localhost ~]# gpasswd -A peter test2  #将peter设为test2组管理员
    [root@localhost ~]# gpasswd -a peter test2  #将用户peter加入到test2组
    [root@localhost ~]# gpasswd -d peter test2  #将用户peter从test2组中移出
    

    2.11 临时切换基本组:newgrp

    格式:newgrp [-] [group]
    如果用户本不属于此组,则需要组密码

    实战演示:

    [root@localhost ~]# newgrp www  #登录到www群组
    

    2.12 修改用户属性:chage

    格式:chage [OPTION]... LOGIN

    参数选项:

    • -d LAST_DAY
    • -E, --expiredate EXPIRE_DATE
    • -I, --inactive INACTIVE
    • -m, --mindays MIN_DAYS
    • -M, --maxdays MAX_DAYS
    • -W, --warndays WARN_DAYS

    其它命令:chfn, chsh, finger

    3. 权限管理

    文件的权限主要针对三类对象进行定义:

    • owner: 属主, u
    • group: 属组, g
    • other: 其他, o

    每个文件针对每类访问者都定义了三种权限:

    • r: Readable
    • w: Writable
    • x: eXcutable

    文件:

    • r: 可使用文件查看类工具获取其内容;
    • w: 可修改其内容;
    • x: 可以把此文件提请内核启动为一个进程;

    目录:

    • r: 可以使用ls查看此目录中文件列表;
    • w: 可在此目录中创建文件,也可删除此目录中的文件;
    • x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;

    举例:

    • r-->4
    • w-->2
    • x-->1
      640: rw-r-----
      rwxr-xr-x: 755

    3.1 修改文件权限:chmod

    格式:

    • chmod [OPTION]... MODE[,MODE]... FILE...
    • chmod [OPTION]... OCTAL-MODE FILE...
    • chmod [OPTION]... --reference=RFILE FILE...

    参数选项:

    • --reference=参考文件
      使用指定参考文件的模式,而非自行指定权限模式
    • -R
      以递归方式更改所有的文件及子目录
    • --help
      显示此帮助信息并退出
    • --version
      显示版本信息并退出

    Note:每种 MODE 都应属于这类形式[ugoa] [-+=] [rwxXst] [ugo]

    操作对像

    • u 文件属主权限
    • g 同组用户权限
    • o 其它用户权限
    • a 所有用户(包括以上三种)

    权限设定

    • + 增加权限
    • - 取消权限
    • = 唯一设定权限

    权限类别

    • r 读权限
    • w 写权限
    • x 执行权限
    • X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
    • s 文件属主和组id
    • l 给文件加锁,使其它用户无法访问

    Note:仅root可以修改文件的属主和属组

    实战演示:

    [root@localhost ~]# chmod ugo+r nginx_bak.conf        #所有人皆可读取
    [root@localhost ~]# chmod a+r nginx_bak.conf          #所有人皆可读取
    [root@localhost ~]# chmod ug+w,o-w nginx_bak.conf     #设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
    [root@localhost ~]# chmod u+x nginx_bak.conf          #创建者拥有执行权限 
    [root@localhost ~]# chmod -R a+r ./www/               #将www下的所有档案与子目录皆设为任何人可读取
    [root@localhost ~]# chmod a-x nginx_bak.conf          #收回所有用户的对nginx_bak.conf的执行权限
    [root@localhost ~]# chmod 777 nginx_bak.conf          #所有人可读,写,执行
    
    [root@localhost ~# chmod a+s test.ppt                   #chmod g+s ,为某个文件设置替代组标识
    [root@localhost ~# ls -al |grep test.ppt
    -rwSr-Sr--.  1 tank tank    2320384 11月 18 19:29 test.ppt
    # 第一个S指示用户替代标识(suid)已经被设置。
    # 第二个S指示替代组标识(sgid)已经被设置。
    # 这样,每一个运行该程序的用户将给予和程序拥有者同样有效的用户标识,和用户所属组同样有效的组标识。
    

    3.2 修改文件的属主:chown

    格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...

    参数选项:

    • --reference=参考文件
      使用参考文件的所属组,而非指定值
    • --help
      显示此帮助信息并退出
    • --version
      显示版本信息并退出
    • -R, --recursive 递归处理所有的文件及子目录
      以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。
    • -H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接
    • -L 遍历每一个遇到的通到目录的符号链接
    • -P 不遍历任何符号链接(默认)

    实战演示:

    #将nginx.conf所属用户和组改为escape,escape
    [root@localhost ~]# chown escape:escape nginx.conf      
    #将www目录,所属用户和组改为escape,escape  
    [root@localhost ~]# chown -R escape:escape www            
    [root@localhost ~]# chown root nginx.conf       #只改变用户
    [root@localhost ~]# chown :escape 1.html        #只改变组
    

    3.3 修改文件的属组:chgrp

    格式:

    • chgrp [OPTION]... GROUP FILE...
    • chgrp [OPTION]... --reference=RFILE FILE...

    参数选项:

    • -c, --changes
      详细描述对每一个文件的动作:实际上改变了哪个组
    • -f, --silent, --quiet
      不列出错误信息.(那些组不能被改变)
    • -h
      作用于符号链接本身代替它所指向的. 仅可用于 lchown 系统调用被提供时
    • -v, --verbose
      详细描述作用或没作用的所有文件
    • -R
      递归的改变目录和它的内容的组所有权

    实战演示:

    [root@localhost www]# chgrp escape  abc.txt       #改变用户组
    [root@localhost www]# chgrp -R escape  myweb      #改变myweb目录,以及目录下的所有文件所属组
    

    3.4 文件或目录创建时的遮罩码:umask

    格式:umask [-p] [-S] [mode]

    • FILE: 666-umask
      Note: 如果某类的用户的权限减得的结果中存在x权限,则将其权限+1
    • DIR: 777-umask

    参数选项:

    • -S
      以字符的形势显示当前的掩码
    • -p
      umask开头以数字的形势显示当前掩码

    常用命令:

    • umask
      查看
    • umask #
      设定

    实战演示:

    [root@localhost ~]# umask        #查看当前用户预设权限
    0022
    [root@localhost ~]# umask -S     #以字母的形势显示权限
    u=rwx,g=rx,o=rx
    [root@localhost ~]# umask -p     
    umask 0022
    [root@localhost ~]# umask 755    #设置预设权限
    [root@localhost ~]# umask 
    0755
    

    4. 思维导图

    用户和组管理

    相关文章

      网友评论

        本文标题:Linux运维之道(8)——用户和组管理

        本文链接:https://www.haomeiwen.com/subject/fsudlttx.html