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. 你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?

    我想大部分都知道 i++ 和 ++i的区别,i++ 就是先拿i来使用,之后再自增加1,而++i则是先自增加1,在拿i来使用,例如对于下面这两个语句,我敢保证大部分人都会做: int i = 1; Sy ...

  2. 版本管理工具Git(二)GitLab部署和配置

    安装 # 安装依赖包 sudo yum install -y curl policycoreutils-python openssh-server # 启用并启动SSHD sudo systemctl ...

  3. 【Java基础】【15Colletion集合】

    15.01_集合框架(对象数组的概述和使用) A:案例演示 需求:我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息. Student[] arr = new Stu ...

  4. PE知识复习之PE的两种状态

    PE知识复习之PE的两种状态 一丶熟悉PE的整体结构 从下面依次网上看.可以得出PE结构 其中DOS头有DOS头结构 也就是 IMAGE_DOS_HEADER 关于结构体的各项属性.前边已经写过了.本 ...

  5. Spring源码情操陶冶-tx:advice解析器

    承接Spring源码情操陶冶-自定义节点的解析.本节关于事务进行简单的解析 spring配置文件样例 简单的事务配置,对save/delete开头的方法加事务,get/find开头的设置为不加事务只读 ...

  6. 使用LR编写下载类脚本

    如何下载并保存文件到本地,实现文件下载的脚本制作.以下是本人测试某系统总结整理的脚本,仅供参考. #include "lrs.h" Action() { // 示例一: //第一种 ...

  7. 大前端的自动化工厂(3)—— babel

    一. 关于babel babel是ES6+语法的编译器,官方网址:www.babeljs.io,用于将旧版本浏览器无法识别的语法和特性转换成为ES5语法,使代码能够适用更多环境. 最初的babel使用 ...

  8. bootstrap之弹出框

    1.模态框的核心在于 首先声明一个 模态框,标记其位置 <div class="modal fade" id="myModal" tabindex=&qu ...

  9. wpf,visibility属性的多元素绑定及值转换

    visibility实现多元素绑定. 实现多绑定转换 public class VisibilityConverter : IMultiValueConverter { public object C ...

  10. java SPI机制

    1. SPI是Service Provider Interfaces的简称.根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务 ...