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. shell高级特性-4

    1.shell模块 shell脚本中可以加载配置文件或调用已经完成函数或脚本. a.加载配置文件 新建配置文件config,插入以下代码: reboot_mode=True 在同一路径下,新建文件mo ...

  2. (四)五种IO模型

    基本概念 我们之前编写的套接字程序都是阻塞式的,其实这也是默认的形式.现在我们需要明确一些概念: 用户空间和内核空间 首先要明确,用户启动的应用程序在系统中以一个进程的形式存在,而无论对于网络数据还是 ...

  3. Koa 框架常用知识点整理

    简介 Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行,所有功能都通过插件实现. 学前准备 检查Nodejs版本 打开cmd命令行窗口nod ...

  4. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  5. XSS DOM 测试

    dvwa DOM XSS DOM Based XSS:是基于DOM文档对象模型的操作,通过前端脚本修改页面的DOM节点形成的XSS,该操作不与服务器端进行交互,而且代码是可见的,从前端获取到DOM中的 ...

  6. 如何理解git checkout -- file和git reset HEAD -- file

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374831943254ee ...

  7. XML记一次带命名空间的xml读取

    public static void ReadXML(string xmlUrl) { //判断文件是否存在 if (!File.Exists(xmlUrl)) { Console.WriteLine ...

  8. [PHP] yield沟通函数循环内外

    1.yield是函数内外,循环内外沟通用的 , 当你的函数需要返回一个大数组 , 循环的时候需要遍历这个大数组时 , 并且需要多次遍历这个函数的返回值 , 这个是有用的 2.当我也是只需要在一次循环中 ...

  9. Php导出百万数据的优化

    导出数据量很大的情况下,生成excel的内存需求非常庞大,服务器吃不消,这个时候考虑生成csv来解决问题,cvs读写性能比excel高.测试表student 数据(大家可以脚本插入300多万测数据.这 ...

  10. ecstore 安装后提示require function does not exist in....

    解决: 安装好后,修改config.php里的TMP_DIR,指向网站目录下的data目录(用绝对路径) // define('TMP_DIR', '/data/www/data/tmp/');  先 ...