Linux中的用户、组和权限的管理

一、Linux的安全模型

    在Linux中用户登陆时必须提供用户名和密码(用户是由root用户创建的,最初的密码也是root用户设定的)。系统使用用户和群组来控制使用者访问文件和其他资源的权限。每一个文件都一定属于一个用户(一般该用户就是文件的创造者)并与一个群组相关。每一个进程(处理程序)都会与一个用户和群组关联,可以通过在所有的文件和资源上设定权限来允许该文件的所有者或者某个群组的成员访问他们。主要由系统管理员维护系统的安全。

二、基本规则

    在Linux中,一般情况下每一个用户都有唯一的用户名和UID,root(系统管理员)的UId为0,CentOS7以前的版本中,系统用户的UID为1-499,这些用户是维持运行所需服务的对应进程,Linux中任何进程都有对应的用户,从CentOS7开始,系统用户的UID范围增加到1-999,其他UID为一般用户使用。

    用户组的GID分配方式与UID相同。创建用户时默认创建一个与用户名相同的主组,每个用户必须有且仅有一个主组,但是可以添加到多个辅助组中。

    Linux用户和组的主要配置文件:

        /etc/passwd:用户属性信息,中间用冒号隔开,格式:

            (用户名:密码:UID:GID:描述:家目录:shell类型)

        /etc/group:用户组属性信息,格式:

            (组名:密码:GID:用户列表)

        /etc/shadow:密码文件,格式:

            用户名

            加密后的密码,不设置密码的账户默认为!!,代表不能登录

            最后一次修改密码的时间

            密码更改的最短期限

            密码更改的最长期限

            从系统开始警告用户到用户密码正式失效的天数

            密码没有登陆但是账号仍然有效的最大天数

            失效时间,当设置了这个选项,密码失效后不能再登陆

        /etc/gshadow:组密码及其相关属性

三、用户、组管理命令

    

用户创建:用户账号的管理只要涉及到用户账号的添加、删除和修改。添加用户账号就是在系统中创建一个新账号,然后为新账号分配UID,指定用户组、家目录和登陆shell等资源。

    useradd [options] LOGIN (默认值设定:/etc/default/useradd)

    -u UID 创建用户时,指定用户的UID

    -o 一般配合-u使用,指定UID时,不考虑UID是否唯一,

    -g GID(或组名) 指定用户的所属基本组

    -c "COMMENTS" 为用户添加注释信息

    -d HOME_DIR 为用户创建制定的家目录

    -s SHELL 指定用户默认shell程序类型(所有可用shell在文件/etc/shells中)

    -G GROUP1[GROUP2…] 指定用户的附加组,组必须提前存在

    -N 不创建私用组作为主组,让users组作为用户的基本组

    -r 创建系统用户

创建用户家目录时,需要从/etc/skel/目录下复制用户文件。

批量创建用户:

    newusers 后接一个passwd格式的文件,可以批量创建用户,

    chpasswd 批量修改用户口令

    (用户创建后家目录中没有基本文件,需要另行拷贝)

用户属性修改:修改用户账号就是根据实际情况更改用户的有关属性,如UID、家目录、用户组等基本属性。

    usermod [options] login

    -u UID 为用户设置新的UID

    -g GID(或组名) 为用户指定新的基本组

    -G GROUP1[,GROUP2…] 为用户指定新的指定新的附加组,原来的附加组会被覆盖,增加-a选项可以保留原来的附加组

    -s SHELL 为用户指定新的默认shell

    -c "COMMAENT" 为用户设置新的注释信息

    -d HOMME_DIR 新的家目录不会自动创建,原家目录中的文件不会同时移动到新的家目录中;如果想要创建新的家目录并移动原家目录中的数据,使用-m选项

    -l LOGIN_NAME 更换新的用户名

    -L 锁定用户使其不能登录,在/etc/shadow密码栏中增加!

    -U 解锁用户,去掉密码栏中的!

    -e YYYY-MM-DD 为用户指定账号过期时间

    -f INACTIVE 设置非活动期限

删除用户;userdel [OPTIONS]… login

    -r 删除用户的家目录等文件

查看用户相关的ID信息

    id [options]… [USER] 默认查看当前用户的id信息

    -u 查看UID

    -g 查看主组GID

    -G 查看用户辅助组的GID

切换用户su [OPTIONS…] [-] [USERNAME[args…]]

    su USERNAME:非登陆式切换,即不会读取目标用户的配置文件,也不会改变当前工作目录

    su -[l] USERNAME:登陆式切换,读取用户的配置文件并切换至用户家目录

    root用户切换其他用户式不需要密码,非root用户切换时需要密码

    su [-] USERNAME -c 'COMMAND' 更换身份执行命令

设置密码

passwd [OPTIONS] USERNAME 可以修改指定用户的密码,仅root用户有此权限

    -l 锁定指定用户

    -u 解锁指定用户

    -e 强制用户下次登陆时修改密码

    -n MINDAYS 设置用户密码最短使用期限

    -x MAXDAYS 设置用户最大使用期限

    -w WARNDAYS 设置提前开始警告的天数

    -iINTCTIVEDAYS 非活动期限

    –stain 从标准输入接受用户的密码

如同用户可以使用passwd修改自己的密码

用户组管理 

    添加组

    groupadd [OPTION]…GROUP_NAME

    -g GID 指明GID号

    -r 创建系统组

    

    删除组

    groupdel GROUP

    更改组密码

    gpasswd [OPTION] GROUP_NAME

    -a USER 将USER添加至组中

    -d USER 从指定组中一尺用户USER

    -A USER1[,USER2…] 设置有管理权限的用户列表

    newgrp可以临时切换基本组,如果用户不属于此组,需要组密码

    更改和查看组成员

    groupmems [OPTIONS] [ACTION]

    options:

    -g –group GROUP_NAME 更改为指定组(只有root)

    actions:

    -a –add USER_NAME 指定用户加入组

    -d –delete USER_NAME 从组中删除指定用户

    -p –purge 清空组中所有成员

    -l –list 显示组成员列表

    

    groups [OPTIOBS] [USER_NAME] 查看用户所属组列表

四、权限管理

文件属性:在Linux中ls -l可以查看文件或目录的属性。第一个字段中的第一个字符表示文件的种类,2-4个字符表示属主对文件或目录的操作权限,5-7表示属组用户的操作权限,最后三个字符表示其他用户的权限。后面的字段依次表示文件或目录的引用计数、属主、属组、大小、时间戳、文件名称。

修改文件的属主和属组

    修改文件的属主:

    chown chown [OPTION]… [OWNER][:[GROUP]] FILE… 

    用法: 

    OWNER 

    OWNER:GROUP 

    :GROUP 命令中的冒号可用.替换; 

    -R: 递归修改 

    chown [OPTION]… –reference=RFILE FILE… 参考其他文件

修改文件属组:chgrp

    chgrp [OPTION]… GROUP_FILE…

    chgrp [OPTION]… reference=RFILE FILE 参考其他目录修改

    -R 递归修改

r.w.x对文件的作用

    r:可以使用文件查看类工具获取其中内容

    w:可以修改内容

    x可以把此文件作为一个进程启动

r.w.x对目录的作用

    r:可以使用ls查看目录中的文件列表

    w:可以在目录中创建或删除文件

    x:可以用ls -l查看目录中的文件列表,也可以用cd进入目录

    

用数字表示r.w.x

    —    000    0 

    –x    001    1 

    -w-    010    2 

    -wx    011    3 

    r–    100    4 

    r-x    101    5 

    rw-    110    6 

    rwx    111    7


umask


    创建新文件是根据用户的umask值来设置文件默认权限。当用户创建目录是,使用用户的umask值屏蔽最大权限的777,得出的结果就是目录的默认权限;当用户创建文件时,用umask值屏蔽权限值666,得出文件的默认权限。root用户默认的umask为022,所以当root用户创建的目录默认权限为755,文件的默认权限是644;而一般用户的默认umask是002,所以当一般用户创建目录是默认权限为775,文件默认权限是664。全局umask默认设置在目录:/etc/bashrc中,用户默认设置:~/.bashrc。

    umask  查看当前用户的umask

    umask #    临时设置用户umask值

    umask -S    使用模式的方式显示umask

    umask -p    输出umask,使之可被调用


Linux文件系统上的特殊权限

    

    SUID:可执行文件搭配SUID权限,能够获得特权,任意存取该文件的所有者能够使用的全部系统资源。

    权限设定:chmod u+s FILE

                      chmod u-s FILE


    SGID:设置在文件上面,效果去SUID相同,只不过文件的所有者换成用户组,该文件就可以任意存取整个用户组是能使用的系统权限。

    权限设定:chmod g+s FILE(或DIR)

                      chmod g-s FILE(或DIR)

    

     Sticky:当一个目录设置了Sticky为权限时,只有文件的所有者和root用户才能删除该目录下的文件。

    权限设定:chmod o+t DIR

         chmod o-t DIR

访问控制列表:

    ACL(访问控制列表)可以实现灵活的权限管理,除了文件的所有者,所属组和其他人,对更多的用户设置权限。

为多用户或者组的文件和目录赋予访问权限rwx

    mount -o acl /directory

    getfacl file |directory 

    setfacl -m u:wang:rwx file|directory

    setfacl -Rm g:sales:rwX directory 

    setfacl -M file.acl file|directory 

    setfacl -m g:salesgroup:rw file| directory 

    setfacl -m d:u:wang:rx directory 

    setfacl -x u:wang file |directory

    setfacl -X file.acl directory


mask

    mask影响除所有者和other用户之外的所有人的最大权限,范围内的任何人的权限不能超过mask。




  

                

原创文章,作者:zhanghuanyu,如若转载,请注明出处:http://www.178linux.com/27415

(0)
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:05

相关推荐

  • 初探VIM_第六周练习(02)

    引言—什么是Vim? 接触Linux这么久,想必对于一切皆文件的哲学思想已经不陌生了。因此,学习并掌握用一款Linux文本编辑器,对于玩转LInux来说,是很有必要的。 vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。 在GNU项目将vi编辑器移植到开源世界时,…

    Linux干货 2016-12-18
  • 文本三剑客—sed 基础

    文本三剑客—sed 基础        sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式的插入、删除或者替换数据中的文本。流编辑器则会自爱编辑器处理数据之前基于预习提供的一组…

    Linux干货 2017-05-15
  • DNS and BIND 介绍及安装

    DNS DNS是什么 为什么要用DNS 域名 BIND DNS是什么 DNS:Domain Name System,域名系统DNS作为域名和IP地址相互映射的一个分布式数据库,能够让用户更方便的访问互联网。它的正向映射是吧一个主机和IP地址关联起来,它的反向映射则是IP地址到主机名。DNS协议运行在UDP协议上,使用53端口。 为什么要用DNS 连接到互联网…

    Linux干货 2016-05-28
  • 第二周作业

    # 第二周作业 ##1.文件管理类命令 ###cp   复制 * 单元复制 如果目标文件不存在,会自动创建 如果已经存在,会覆盖 * 多源复制 目标必须是目录,分别复制每个文件至目标目录中,并保持原名 > -i: 交互提醒 > -f: 强制覆盖,不交互 > -r: 递归复制目录 > -d: 如果复制的是符号链接,不找源文件,…

    Linux干货 2016-12-09
  • RHEL6.4 yum访问HTTPS源时出错

    在RHEL6.4上安装OpenStack时,使用epel的源,但源是https的,进行安装时,总报下面的错误。     https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/repodata/repomd.xml:  …

    Linux干货 2016-02-28
  • Docker之~集群配置

    一、前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前最新版本为0.6.2。 本文介绍如何基于Centos7.0构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能。以下为Kubernet…

    2017-03-16

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 22:46

    文章整体架构清晰,对命令的常见选项有了很好的总结。可以加上一些自己在练习过程中的操作,这样在以后的复习中会更直观明了哦。