【文件管理、管道、用户及组管理、用户及权限管理】\用户及组管理

用户与组管理

  Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:

  1.用户账号的添加、删除与修改。

  2.用户口令的管理。

  3.用户组的管理。

  Linux用户分为两种,分别是管理员(UID:0)和普通用户(UID:1-65535),普通用户又分为系统用户与登录用户。

  :一个程序可以访问哪些内容取决于这个程序的发行者是哪一个的。

  linux组可分为管理员组(GID:0)与普通用户组(1-60000)

  :centos6版本与centos7版本的UID与GID略有不同。

  此外,用户组还可以划分为基本组(用户在创建时默认创建一个与其名字相同的基本组)与附加组(除了已有的基本组以外,还可以添加其他组,其他组就是此用户附加组)

  所以组名通用户名,且只包含一个用户就叫做私有组,而组内包含多个用户叫做公有组

Linux用户和组相关的配置文件

  用户和用户组相关的信息都存放在/etc/passwd,/etc/shadow,/etc/group以及/etc/gshadow文件下。下面分别介绍这些文件的具体内容。

  1./etc/passwd

  此文件下保存了用户及其属性信息。其中每条信息从左到右被冒号分割成了7个部分,username(用户名):x(密码占位符,真正的密码自然不能放在这里了,太不安全了):UID(用户ID):GID(用户组ID):存放用户的注释信息:用户家目录:用户默认使用的shell。

  2./etc/shadow

  此文件保存了用户密码及其相关属性信息,其中每条信息从左到右被冒号分割成9个部分,用户名:密码(被加密过的,密码中有“!”或者“*”用户已被禁用):最近一次修改密码的日期,自linux元年开始的天数(1970年1月1日开始):密码最短使用时间:密码最长使用时间:密码告警时间(在密码过期前n天进行告警,需要修改密码了):不活动时间(超出警告时间后m天仍可登录):失效时间(到达此时间,用户无法使用):保留位暂不使用。

  3./etc/group

  此文件保存了用户组及其属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):x组密码占位符(与用户密码一样也是存放在其他位置):GID:以逗号分隔的用户列表,以此组为附加组的用户的用户列表。

  4./etc/gshadow

  此文件保存了组密码及其相关属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):密文密码(为空时只有该组成员可获得权限,“!”与“*”则不需要密码可直接加入):用户组管理员(是逗号分隔的用户列表,用户组管理员可以修改密码和组成员,也很组里其他成员拥有相同的权限):成员(以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样)

用户与组相关管理常用命令

  一、用户创建:useradd

  使用方法:useradd [options] login

  常用选项:

  -u:--uid UID:指定UID,定义在/etc/login.defs

  -g:--gid GROUP:指明用户基本组,可为组名也可以是GID

  -G: GROUP1[,GROUP2,...[,GROUPN]]]:指定用户所属的附加组,组事先存在

  -c:--comment COMMENT:用户注释信息

  -d:/PATH/TO/ HOME_DIR:指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件

  -s:--shell SHELL:指定用户的默认shell,可用列表存放在/etc/shells下

  -r:创建系统用户。

  :默认值设定在/etc/default/useradd中。可用 useradd -D命令查看创建用户的默认配置

  二、创建组:groupadd

  使用方法:groupadd [option]...  group_name

  常用选项:

  -g GID:指明GID号

  -r:创建系统组

  三、查看用户相关ID信息:id

  使用方法:id [OPTION]... [USER]

  常用选项:

  -u: 仅显示有效的UID

  -g: 仅显示用户的基本组ID

  -G:仅显示用户所属的所有组的ID

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

  使用方法:su [options...] [-] [user [args...]]

  切换用户方式:

    非登录式切换,不会读取目的用户的配置文件进行初始化:su USERNAME

    登录式切换,会读取目的用户配置文件,完全切换:su - USERNAME或者su -l USERNAME

  换身份执行命令:

  su [-] username -c  'COMMADN'

  五、用户加密:passwd

  使用方法:passwd[options]username:修改指定用户密码,仅root用户有权限。

  常用选项:

  -l:锁定指定用户

  -u:解锁指定用户

  -n:mindays:指定最短使用期限

  -x:maxdays:最大使用期限

  -w:warndays:提前告警期限

  -i:inactivedays:非活动期限

  从标准输入接收用户密码:echo “password” | passwd --stdin username

  六、用户属性修改:usermod

  使用方法:usermod [options] LOGIN

  常用选项:

  -u,UID:修改用户的ID为新UID;
  -g, --gid GROUP:修改用户到新基本组;
  -G,  GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;若保留原有,则同时使用-a选项(append)
  -s,新的默认shell
  -c,  COMMENT:新的注释信息;
  -d,  HOME_DIR:新的用户家目录;用户原有的文件不会被转移至新家目录下;若要移动则使用-m选项。
  -l, login name:新的用户名;
  -L,lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
  -U, --unlock:解锁用户的密码;
  七、删除用户:userdel

  使用方式:userdel [options] LOGIN

  常用选项-r:删除用户时一并删除其家目录,默认不删除

  八、组属性修改:groupmod

  使用方式:groupmod [options] GROUP

  常用选项:

  -g GID:新的GID

  -n group_name:新组名

  九、组删除:groupdel

  使用方式:groupdel GROUP

  十、组密码:gpasswd

  使用方式:gpasswd [option] group

  常用选项:

  -a USER:将user添加至指定组

  -d USER:删除用户以当前组命名的附加组

  -A USER1,USER2,...:设置有管理权限的用户列表

  十一、修改用户属性:chage

  使用方式:chage [options] LOGIN

  常用选项:

  -d:修改最后一次修改密码的时间

  -E:修改用户失效时间

  -I:修改密码过期怒限时间

  -W:修改告警天数

  -m:修改密码最小使用天数

  -M:修改密码最长使用天数

通过文件的方式增加用户

  在linux中一切皆文件,那么我们操作文件就可以自己创建出一个用户来。当然实际操作时不会这样创建用户只是用来帮助理解。

  第一步,在/etc/passwd 中创建一个用户;

rose:x:1003:1003:/home/rose:/bin/bash

  第二步,在/etc/shadow增加密码等信息;

rose:!!:17321:0:99999:7:::

  第三步,在/etc/group 增加主组;

rose:x:1003:

  第四步,在/etc/gshadow 设置组密码信息;

rose:!::

  第五步,为用户设置邮箱;

[root@localhost /]# touch /var/spool/mail/rose

  第六步,设置家目录,并为家目录中增加一些隐藏文件

[root@localhost /]# mkdir /home/rose
[root@localhost /]# cp -r /etc/skel/.[!.]* /home/rose/
[root@localhost /]# id rose
uid=1003(rose) gid=1003(rose) groups=1003(rose)

文件的权限

  文件权限针对的对象是:

  owner:属主,u

  group:属组,g

  other:其他,o

  对于文件而言:

  文件可读(r):可以查看其内容。

  文件可写(w):可修改文件内容。

  文件可执行(x):可以把文件提请内核启动为一个进程。

  对于目录而言:

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

  目录可写(w):可在此目录中创建或删除文件

  目录可执行(x):可以使用ls-l查看目录中文件,可以cd进目录。

权限管理类命令

  一、修改文件权限(chmod)

  使用方法:

  1. chmod [OPTION]... MODE[,MODE]... FILE...

  可以直接将rwx直接赋值给相应的用户类型:u为属主,g为属组,o为其他用户,a为所有用户(同ugo=---)

  或者直接操作一类用户的一个权限位(u+x,o-r)

       2.chmod [OPTION]... OCTAL-MODE FILE...
  直接使用八进制来修改r=4,w=2,x=1.其中-R可递归修改权限。
       3.chmod [OPTION]... --reference=RFILE FILE..
  参考其他文件的权限
查看文件权限
[root@localhost /]# ll -lh /dj
total 16K
-rw-r--r-- root root Jun : hello_world.py
-rw-r--r-- root root Jun : name_daxiaoxie.py
-rw-r--r-- root root Jun : name.py
-rw-r--r-- root root Jul : test.py
修改权限
[root@localhost /]# chmod /dj/hello_world.py
[root@localhost /]# ll -lh /dj
total 16K
-rwxrwxr-x root root Jun : hello_world.py
-rw-r--r-- root root Jun : name_daxiaoxie.py
-rw-r--r-- root root Jun : name.py
-rw-r--r-- root root Jul : test.py
使用第三种方式
[root@localhost /]# chmod --reference=/dj/hello_world.py /dj/test.py
[root@localhost /]# ll -lh /dj
total 16K
-rwxrwxr-x root root Jun : hello_world.py
-rw-r--r-- root root Jun : name_daxiaoxie.py
-rw-r--r-- root root Jun : name.py
-rwxrwxr-x root root Jul : test.py
[root@localhost /]#

  二、修改文件的属组属主(仅使用root用户)

  1.修改属主(chown)

  使用方式:chown[OPTION]...[OWNER][:[GROUP]]FILE...或使用--referrence

  chown owner|owner:group|:group file (其中:可用.替换,并且可以使用-R递归更换)

  2.修改属组(chgrp)

  chgrp[option]...group file或--referrence方式

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

  file:666-umask(若某类用户权限减得结果中存在x权限则将其权限+1)

  dir:777-umask

  umask:查看当前值

  umask#:设定值

linux用户及权限管理的更多相关文章

  1. Linux用户和权限——管理文件权限的命令

    Linux用户和权限——管理文件权限的命令 摘要:本文主要学习了Linux中修改文件权限的命令. chown命令 chown命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件( ...

  2. Linux用户和权限——管理用户和用户组的命令

    Linux用户和权限——管理用户和用户组的命令 摘要:本文主要学习了在Linux系统中管理用户和用户组的命令. useradd命令 useradd命令可以用来创建新用户. 基本语法 useradd [ ...

  3. Linux用户和权限管理看了你就会用啦

    前言 只有光头才能变强 回顾前面: 看完这篇Linux基本的操作就会了 没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了.这篇主要将Linux下的用户和权限知识点再整理 ...

  4. 4.Linux用户与权限管理

    Linux 系统是一个多用于多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统 新增用户: useradd  新用户名 设置密码:pa ...

  5. Linux用户和权限管理

    用户:资源获取标识符,资源分配,安全权限模型的核心要素之一 密码:来实现用户认证 创建用户:useradd Username 生成的属性信息 /etc/passwd 用户名:密码:占位符:UID:GU ...

  6. 3-4 linux 用户及权限管理

    1. 安全上下文(secure context) 取决于资源权限和进程权限 分为三种:r:读,w:写,x:执行 每一类用户都有三个权限 文件: r:可读,可以使用类似cat等命令来查看文件内容 w:可 ...

  7. 拾遗:Linux 用户及权限管理基础

    Lacks of Knowledge 1: Linux has large amount of COMMANDS,but many of them have similar funtions,it's ...

  8. linux 用户创建、管理、权限分配

    (1)su与sudo su:通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证: sudo: sudo扮 ...

  9. 【linux相识相知】用户及权限管理

    linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管 ...

随机推荐

  1. 在Intellij Idea中使用JSTL标签库

    习惯了eclipse和myeclipse开发的我们总是依赖于系统的插件,而当我想当然的以为IntelliJ IDEA 的jstl 的使用应该和myeclispe一样,当时使用起来却到处碰壁,完全找不到 ...

  2. python中的map、filter、reduce函数

    三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str.   1.map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function ...

  3. Java-集合框架总结

    集合框架: Java中的集合框架大类可分为Collection和Map:两者的区别: 1.Collection是单列集合:Map是双列集合 2.Collection中只有Set系列要求元素唯一:Map ...

  4. java基础(十五章)

    一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new S ...

  5. axis调用webservice的简单方法

    package com.service; import org.apache.axis.client.Call; import org.apache.axis.client.Service; publ ...

  6. Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

    在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/62660 ...

  7. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  8. 宿主机共享文件夹给不同Linux虚拟机的方法

    一.Windows/Linux宿主机共享文件夹给VMWare中的Linux虚拟机 1.能安装vmware tools1)在vmware的ubuntu中安装vmware tools2)在vmware中开 ...

  9. web存储之webstorage

    web存储分类 客户端和服务端 认识web存储 随着web应用的发展,是的客户端存储的用途越来越多,然而实现客户端端存储的方式也是越来越多样化.最简单最兼容的方式就是cookie,但作为真正的客户端存 ...

  10. 动态读取文件持续显示在UI上

    private void DisplayLogInfo(FileInfo _LastFile) { if (_LastFile != null) { StreamReader sr = null; t ...