1.用户身份与能力

  root管理员是linux 的超级用户,他拥有系统的所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭服务进程,开启/禁用硬件设备……

  "Linux系统中的管理员就是root",这句话是错误的,Linux系统管理员之所以是root,并不是因为他叫root,而是因为用户的身份号码(UID)的数值为0,。UID相当于是身份证号,其用户身份大致分为:

  • UID=0:系统的管理员用户。
  • 1<=UID<=999:系统用户,服务程序会有独立的系统用户负责运行。
  • UID>=1000:普通用户,有管理员创建用于日常工作的用户。

  用户组:我们可以把多个用户加入到同一个用户组,从而便于为组中的用户统一规划权限或指定任务。另外,在管理员创建用户时,将为该用户自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人,如果该用户以后被归纳到其他的用户组,则这些其他用户组对该用户来说是扩展用户组。

1.1 useradd命令

  创建新用户,格式:useradd [option] 用户名

  创建新用户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。其中option:

参数 作用
-d 指定用户的家目录(默认为/home/username)
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(已存在的)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定默认的默认Shell解释器
$ useradd -u  hah
$ id hah
uid=(hah) gid=(hah) groups=(hah)

1.2 groupadd 命令

  用于创建用户组,格式为 groupadd [option] groupname

$ groupadd  haha

1.3 usermod 命令

  usermod用于修改用户的属性,格式为usermod [option] username

  其中option:

参数 作用
-c 填写用户账户的备注信息
-d -m 二者连用,可重新指定用户的家目录并自动把旧的数据转移过去
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止登陆系统
-U 解锁用户
-s 变更默认终端
-u 修改用户的UID
$ id hah
uid=(hah) gid=(hah) groups=(hah)
$ usermod -G root hah
$ id hah
uid=(hah) gid=(hah) groups=(hah),(root)
$ usermod -u hah
uid=(hah) gid=(hah) groups=(hah),(root)

1.4 passwd 命令

  修改用户密码,格式为passwd [option] username

  其中option:

参数 作用
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码

  另外,普通用户只能用来修改自身密码,而root管理员则有权限修改其他所有用户的密码,而且不需要输入旧密码验证。

$ passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
$ passwd hah
Changing password for user limingxing.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

1.5 userdel 命令

  删除用户,格式userdel [option] username

其中option:

参数 作用
-f 强制删除用户
-r 同时删除用户和用户家目录

2.文件权限与归属

linux中文件类型不尽相同:

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

  每个文件都有所属的所有者和所有组,以及所有者,所有组和其他人对文件的可读(r)、可写(w)、可执行(x)的权限。

  文件的读、写、执行权限可以简写为rwx,也可分别用数字4、2、1表示。

  文件权限的数字法表示基于字符表示权限计算而来,例如某文件的权限为7(4+2+1)代表可读可写可执行,6(4+2)代表可读可写。

  在linux系统中,查看文件的权限时,其表示方法为rwxrwxrwx。例如某文件的所有者权限为rwx,所有组权限为rw,其他人为r,那么则表示为rwxrw-r--,数组表示为764。

补充:在创建一个普通文件时,其默认权限是rw-r--r--。

2.1chmod命令和chown命令:

  chmod用来设置文件或目录的权限,格式为chmod [option] 权限 文件或目录名称

  如果把一个文件权限设置为任何人可读可写可执行,则执行: 

$ chmod -Rf  text.txt

  -R表示递归其子目录,-f表示 若无权限操作该文件时不显示报错信息。 

  chown用来设置文件的所有者和所有组,格式为: chown [option] 所有者:所有组 文件或目录名称

3.su命令与sudo服务

  su命令用于切换用户身份,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户:

$ su - username

  su 和用户名之间的 ‘-’ 表示完全切换到新的用户,即把环境变量信息也变为新用户的相应信息,而不是保留原始的信息。另外,当从root用户切换到其他用户时不需要进行密码验证,而从普通用户到root用户需要验证密码。

  上述普通用户需要进行特殊权限时需要登录到root用户,这样就容易泄露root用户密码,而sodu命令可以把特定命令的执行权赋予给指定的用户。

  sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为sudo [option] 命令名称。

  该命令可以使得我们的当前用户以另外一个用户的身份去执行某个命令,但是并不需要切换到目标用户的身份,只不过在执行对应命令的那一刻,当前用户暂时拥有了目标用户的权限,这种机制有一点类似于SUID,二者同样表示的都是在执行命令的时候使用的不是当前用户的身份而是目标用户的身份,而且不用切换至目标用户的身份,却可以以目标用户的身份去执行某条命令,但是当前用户使用sudo所能执行的命令仅仅限于目标用户定义给当前用户的那些命令,其它未定义的命令就算使用了sudo也不能使用,事实上sudo就是用来定义某个用户能够以目标用户(未必是管理员,但是该用户我们可以自己指定)的身份通过某主机执行某条命令的机制,说的通俗一点就是谁可以以另外哪一个人的身份在哪个主机上执行哪个命令,但是这种机制有一种安全措施,只要某用户想要使用目标用户定义给他的可以使用的管理系统类命令的时候,必须向服务器提供他自己的密码,这种安全机制可以防范别人恶意冒充某用户使用sudo利用目标用户的身份去执行一些系统管理类的命令,以上就是sudo提供给我们的所有管理功能,总的来说,sudo的功能就是管理员所有可以执行的命令或者其他用户所有可以执行的命令都可以授权给另外一个用户来执行,一般来讲我们使用sudo的时候,都是将管理员用户的身份授权给其他用户来执行一些系统管理类命令。

(摘自:https://blog.51cto.com/zhubo/1883195)

  其中option:

参数 作用
-h 列出帮助信息
-l 列出当前用户可执行的命令
-u用户名或UID 以指定的用户身份执行命令
-k 清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b 在后台执行指定的命令
-p 更改询问密码的提示语

  sudo的配置文件:

   sudo的配置文件是/etc/sudoers,这个文件的安全性很重要,所以为了避免其他用户查看该文件,这个文件的权限是440:

$ ls -l /etc/sudoers
-r--r----- root root Apr : /etc/sudoers

文件时只读的,linux提供visudo命令来修改此文件中的内容,此命令与vim编辑器一样,

/etc/sudoers这个配置文件的语法格式其实很简单,如果不是语法自身的某些关键字定义的某些功能的话,那么它的每一行通常表示定义了一个sudo条目,而一个sudo条目其实就是定义了哪个用户能够以另外哪个用户的身份在哪些主机上执行哪些命令的意思。而且此文件中有大量的注释信息供我们参考和理解。

sudo条目的语法格式

who(谁)  which_hosts(能够在哪些主机上)=(runas(以谁的身份))  COMMAND(运行哪些命令)

例如在

root    ALL=(ALL)       ALL #100行左右

后面加上

hah     ALL=(ALL)       ALL

则hah用户可以使用sudo执行任何的命令。

  但是考虑到生产环境中不允许某个用户拥有系统中所有命令的最高执行权,因此ALL参数就不合适了。因此只能赋予普通用户具体的命令以满足工作需求即可。如果需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统识别不出。我们可以试用whereis命令找出命令所对应的保存路径,例如:

$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat..gz
$ visudo
...
root ALL=(ALL) ALL
hah ALL=(ALL) /usr/bin/cat
...
$ su - hah
hah$ sudo cat text.txt
[sudo] password for hah:
.....

  如果有其他需求的话,可以按照注释内容进行配置。

linux用户身份和文件权限的更多相关文章

  1. Linux用户身份与文件权限学习笔记

    用户身份 管理员UID为0:系统的管理员用户 系统用户UID为1~999:服务程序会有独立的系统用户负责运行:防止被黑客入侵进行提权,并有效控制被破坏的范围 普通用户UID从1000开始:是由管理员创 ...

  2. linux用户身份与文件权限

    用户 useradd [ 参数 ] 用户名 添加用户 sudo useradd -d /home/test -u 1001 -s /bin/bash name usermod [选项] 用户名 更改用 ...

  3. Linux学习之用户身份与文件权限

    Linux学习之用户身份与文件权限 1 用户身份及能力 Linux系统的管理员之所以是root,并不是因为其名叫root,而是该用户身份号码数值(UID)为0. 管理员UID为0:系统的管理员用户 系 ...

  4. 《Linux就该这么学》培训笔记_ch05_用户身份与文件权限

    <Linux就该这么学>培训笔记_ch05_用户身份与文件权限 文章最后会post上书本的笔记照片. 文章主要内容: 用户身份与能力 文件权限与归属 文件的特殊权限 文件的隐藏属性 文件访 ...

  5. Linux - 用户管理与文件权限

    目录 Linux - 用户管理与文件权限 创建普通用户 切换用户 userdel删除用户 sudo 命令 文件与目录权限 Linux权限的解读 目录权限 查看用户权限的命令 文件权限 修改权限的命令 ...

  6. linux用户管理和文件权限

    linux用户管理和文件权限 新建用户:useradd ftpuser      useradd -g gxx userxx修改密码:passwd ftpuser新增用户组:# groupadd gr ...

  7. Linux 用户管理 与 文件权限

    Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...

  8. 6Linux用户身份与文件权限

    3类用户身份: (1)管理员UID为0,root (2)系统用户UID为1-999:nologin不能登录系统,老版本5.6中是1-499 (3)普通用户UID为1000开始,老版本5.6中是1000 ...

  9. Linux 用户身份与进程权限

    在学习 Linux 系统权限相关的主题时,我们首先关注的基本都是文件的 ugo 权限.ugo 权限信息是文件的属性,它指明了用户与文件之间的关系.但是真正操作文件的却是进程,也就是说用户所拥有的文件访 ...

随机推荐

  1. JAVA内存分配与回收策略

    对象的内存分配,大方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配.少数情况下也可能会直接分配在老年代中,分配规则并不是百分百固定 ...

  2. .NET Core中实现AOP编程

    AOP全称Aspect Oriented Progarmming(面向切面编程),其实AOP对ASP.NET程序员来说一点都不神秘,你也许早就通过Filter来完成一些通用的功能,例如你使用Autho ...

  3. PE知识复习之PE的导入表

    PE知识复习之PE的导入表 一丶简介 上一讲讲解了导出表. 也就是一个PE文件给别人使用的时候.导出的函数  函数的地址 函数名称 序号 等等. 一个进程是一组PE文件构成的.  PE文件需要依赖那些 ...

  4. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像

    本文由云+社区发表 作者:董超 导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~ 既然是实战 ...

  5. MySQL/MariaDB系列文章目录

    以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接. 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情. ...

  6. NLP入门(七)中文预处理之繁简体转换及获取拼音

      在日常的中文NLP中,经常会涉及到中文的繁简体转换以及拼音的标注等问题,本文将介绍这两个方面的实现.   首先是中文的繁简体转换,不需要使用额外的Python模块,至需要以下两个Python代码文 ...

  7. C#委托与事件总结

    目录 C#委托与事件的总结 1.概述 2.委托 2.1 什么是委托 2.2 委託的使用 2.3 深入理解委托 2.4 为什么要使用委托 2.5 代码清单 3.事件 3.1 事件与委托的关系 3.2 订 ...

  8. (摘)使用 .NET Core 实现依赖关系注入

    为什么使用依赖关系注入? 使用 .NET,通过 new 运算符(即,new MyService 或任何想要实例化的对象类型)调用构造函数即可轻松实现对象实例化.遗憾的是,此类调用会强制实施客户端(或应 ...

  9. JSON 数据转换

    JSON概述      JSON(Java Script Object Notation)JS对象符号,通常JSON和XML是二选一的,JSON的数据格式很类似于JavaScript的对象 { &qu ...

  10. 22、删除链表的倒数第N个节点

    22.删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删 ...