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)
zhanghuanyuzhanghuanyu
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • M20-1 8月3号作业

    1、三种权限rwx对文件和目录的不同意义 2、umask和acl mask 的区别和联系 3、三种特殊权限的应用场景和作用 4、设置user1,使之新建文件权限为rw——- 5、设置/testdir/f1的权限,使user1用户不可以读写执行,g1组可以读写 /testdir/dir的权限,使新建文件自动具有acl权限:user1:r…

    Linux干货 2016-08-05
  • mysql慢查询日志进行按库切割重写文件然后分析

    需求: 把每天的慢查询日志进行按库切割 对每个库的慢查询日志进行分析 思路: 工具/功能 一般统计信息 高级统计信息 脚本 优势 mysqldumpslow 支持 不支持 perl mysql官方自带 mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强. mysql-explain-slow-log 支持 不支持 perl 无 my…

    Linux干货 2015-04-03
  • 计算机组成及Linux初识

    拼一载春秋,搏一生无悔 1. 计算机简介 2. Linux发行版简介 3. Linux哲学思想简介 4. Linux系统上获取命令帮助 5. Linux「12」个基础命令简介 6. Linux发行版基础目录及功能简介 1.计算机简介 电子计算机(英语:computer),亦称电脑,是一种利用「电子学…

    Linux干货 2016-10-27
  • Linux发展史

    Linux发展史 操作系统出现前:   1946年第一台计算机诞生–20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片…

    Linux干货 2016-10-14
  • 实时获取MySQL的TPS、QPS(输出到屏幕)

    这个脚本挺好用的,例如我们在主库执行了一个大事务,结果导致从库的show slave status\G 一直卡在 system lock状态,我们用下面这个脚本就能知道到底是hang住了,还是只是执行缓慢(反应在脚本执行结果里面就是qps\tps是不停变动的)。 当然,从库一直处于system lock 状态,一般是因为我们从库也设置双1导致,只要…

    Linux干货 2017-05-07
  • shell脚本编程和位置变量

    编程基础 程序:指令+数据    程序编程风格:       过程式:以指令为中心,数据服务于指令       对象式:以数据为中心,指令服务于数据    shell:提供了编程能…

    Linux干货 2016-08-16

评论列表(1条)

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

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