Linux用户基础

用户限制使用者进程可以或不可以使用资源,组用来组织管理用户。

  • 每个用户拥有一个UserID,OS实际使用的是用户ID,而非用户名
  • 每个用户属于一个主组,属于一个或多个附属组
  • 每个组拥有一个GroupID
  • 每个进程以一个用户身份运行,并受该用户可访问的资源限制
  • 每个可登录用户拥有一个指定的shell

用户

  • 用户ID为32位,从0开始,但为了和老式系统兼容,用户ID限制在60000以下。
  • 用户分为三种:
    • root用户(ID为0)
    • 系统用户(1-499, 现在为1-999):没有shell,为某些服务而创建,如打印服务
    • 普通用户(500以上, 现在为1000以上)
  • 系统中的文件都有一个所属用户及所属组
  • 使用id命令可以显示当前用户的信息(每个用户可以有31个附属组)
  • 使用passwd可以修改当前用户密码

相关文件

  • /etc/passwd 保存用户信息
    username:x:uid:gid:commit:home:shell
    x表示密码,在shadow文件中
  • /etc/shadow 保存用户密码
    下面是一个加密后的密码,由$分为三部分,加密方式、sort、加密后的密码
    $1$t4BLqkzi$.LDsXR//TU7Ujrhm/HK8F0
  • /etc/group 保存组信息
    gname:password:gid:users
    用户使用组密码加入对应的组,现代操作系统已经不使用组密码,因为一个用户可以属于一个或多个附属组

查看登录的用户

  • whoami 显示当前用户
  • who 显示已登录用户
  • w 显示已登录用户及工作

Linux中,有一个约定:命令名字越长,显示内容越少,vv。

添加用户

useradd <username>

  • -d 指定家目录
  • -m 自动创建家目录
  • -s 登录shell
  • -u userid
  • -g 主组
  • -G 附属组(最多31个,用逗号隔开)
    该命令执行以下操作:
  1. 在/etc/passwd中添加用户信息
  2. 如果使用passwd命令创建密码,则将密码保存在/etc/shadow中
  3. 为用户建立一个新的家目录/home/username
  4. 将/etc/skel中的文件复制到用户的家目录
  5. 建立一个与用户名相同的组,新建用户默认属于这个同名组

修改用户信息

usermod <username>

  • -l 新用户名
  • -u 新userid
  • -d 家目录
  • -g 主组
  • -G 附属组
  • -L 锁定,使其不能登录
  • -U 解除锁定

删除用户

userdel <username> 不删除家目录
userdel -r <username> 同时删除家目录

一般使用部门、职能或地理区域的分类方式来创建使用组。

  • 每个组有一个GID
  • 组信息保存在/etc/group中
  • 每个用户拥有一个主组,和最多31个附属组

创建、修改、删除组

  • groupadd groupname
  • groupmod -n newname oldname
  • groupmod -g newGid oldGid
  • groupdel groupname

Linux权限机制

权限

权限是操作系统用来限制对资源访问的机制,权限一般分为执行

权限 对文件的影响 对目录的影响
r 可读取文件内容 可列出目录内容
w 可修改文件内容 可在目录中创建删除文件
x 可以作为命令执行 可访问目录内容

目录必须拥有x权限,否则无法查看其内容。

UGO

Linux权限基于UGO模型进行控制:

  • User, Group, Other
  • 每个文件的权限基于UGO进行设置
  • 权限三个一个组(rwx),对应UGO分别设置
  • 命令ls -l可以查看当前目录下文件的详细信息:
    drwxr-xr-- 2 username groupname size updatetime filename

修改文件所属用户和组

  • chown 修改所属用户

    • chown username filename
    • -R 递归修改目录下所有文件的所属用户
  • chgrp 修改所属组
    • chgrp username filename
    • -R 递归修改目录下所有文件的所属组

修改权限

chmod 模式 文件

模式:

  • u, g, o
  • a表示ugo(all)
  • +, -代表添加或删除权限
  • r, w, x表示权限
  • -R递归

示例:

  • chmod u+rw linuxcast.net
  • chmod g-x linuxcast.net
  • chmod go+r linuxcast.net
  • chmod a-x linuxcast.net

chmod支持数字方式修改权限,三个权限分别由三个数字表示:

  • r = 4(2^2)
  • w = 2(2^1)
  • x = 1(2^0)
  • - = 0

每组权限分别对应数字之和:

  • rw- = 4+2 = 6
  • rwx = 4+2+1 = 7
  • r-x = 4+1 = 5
  • 修改时必须同时修改ugo的权限:
    • chmod 660 linuxcast.net (rw-rw----)
    • chmod 775 linuxcast.net (rwxrwxr-x)

Linux权限扩展

默认权限

  • 每个终端都有一个umask属性,来确定新建文件、文件夹的默认权限
  • umask使用数字方式表示权限,如:022
  • 目录默认是777-umask,文件默认是666-umask
  • 普通用户默认umask=002,root用户默认umask=022
  • i.e. 普通用户:
    • 新建目录的权限是:777-002=775
    • 新建文件的权限是:666-002=664
  • 命令umask可以查看设置umask值
  • umask实际是四位数,一位是特殊权限

特殊权限

权限 对文件的影响 对目录的影响
suid 以文件的所属用户身份执行
sgid 以文件所属组身份执行 该目录中创建的任意新文件的所属组与该目录的所属组相同
sticky 有写权限的用户也不能删除目录中的文件,只能被owner和root删除
  • suid权限的文件,u的权限x变为s,通常为可执行文件设置,比如/usr/bin/passwd文件,普通用户以root用户权限执行,将密码写入shadow文件。
  • sgid主要用在目录上,使目录中的文件和目录自动继承目录组
  • sticky称为粘滞位,写在o的x位置上,假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T)

设置方法:

  • chmod u+s filename
  • chmod g+s filename
  • chmod o+t filename
  • 也可以用数字方式,chmod 4755 filename
    • SUID = 4
    • SGID = 2
    • Sticky = 1

Linux入门-5 用户及权限基础的更多相关文章

  1. Linux入门(用户操作及权限)

    Linux入门之 用户操作及权限   在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分.每个级别在公司的职责不同,权限也不同.在Linux操作系统中也一样,不同的用户身份拥有着不 ...

  2. Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  3. Linux学习笔记14-权限基础

    权限基础 权限:操作系统限制对资源访问的机制,一般分为读.写.执行.每个文件都拥有特定权限,通过所属用户及所属组来限制哪些用户.组可以对特定文件进行什么样的操作. 每个进程都是以某个用户的身份运行,进 ...

  4. 3,linux入门到上手-文件权限管理与配置

    linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...

  5. 入门MySQL——用户与权限

    前言:  前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多. 1.创建用户 官方推荐创建语法为 ...

  6. Linux文件属性之用户和组基础知识介绍

    一.Linux多用户多任务介绍 Linux/Unix 是一个多用户.多任务的操作系统:在讲Linux账号及账号组管理之前,我们先简单了解多用户.多任务操作系统的基本概念. 1.1Linux单用户多任务 ...

  7. linux ftp 添加用户及权限管理

    Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记,顺便配置一下FTP.声明:使用Linux版本release 5.6,并以超级管理员root身份运行. 1.创建用 ...

  8. Linux --赋予普通用户root 权限

    Linux的普通用户在安装一些东西的时候或者执行命令的时候,终端始终会提示权限不够,我们会将这个普通用户赋予root权限,但是,和root还是有区别的,因为只能执行root规定好的一些操作命令. 1. ...

  9. Linux云计算-04_Linux用户及权限管理

    Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登录,而且在系统上启动进程也需要以一个用户身份器运行,用户可以限制某些进程对特定资源的权限控制 ...

随机推荐

  1. mysql-常用注入渗透手法

    mysql: 内置函数常用函数:left(), mid(), ord(),  length(), benchmark(),load_file(), outfile(), concat(), 系统重要信 ...

  2. Javac词法分析

    参考:<深入分析Java Web>技术内幕 许令波 词法分析过程涉及到的主要类及相关的继承关系如下: 词法分析的接口为Lexer,默认实现类为Scanner,Scanner会逐个读取Jav ...

  3. Hadoop Gateway 部署

    1.集群的 hadoop-current hive-current spark-current copy 到 gateway 机器 2.集群的 hadoop-conf       hive-conf ...

  4. JavaScript数据结构-1.数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 深入理解java集合框架之---------Arraylist集合

    ArrayList简介 ArrayLIst是动态数组,用MSDN的说法就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小,要注意 ...

  6. 图说使用socket建立TCP连接

    在网络应用如火如荼的今天,熟悉TCP/IP网络编程,那是最好不过.如果你并不非常熟悉,不妨花几分钟读一读. 为了帮助快速理解,先上个图,典型的使用socket建立和使用TCP/UDP连接过程为(截图来 ...

  7. 公司Git实用记录

    一.git命令名词解释 1.添加/跟踪/暂存:添加到本地索引 git add 文件名 2.提交:提交到本地仓库 git commit -m '注释' 3.推送:将提交到本地仓库的所有更新提交到服务器 ...

  8. CI中使用log4php调试程序

    下载log4php.我下载的版本是:apache-log4php-2.3.0-src.zip.借压缩,将压缩文件中的src/main/php/文件夹拷贝到CI的application/thrid_pa ...

  9. Perl入门

    Perl 是一门开源的脚本语言,由 Larry Wall 所创造,该语言以实用,快速开发为主要目标,与当前流行的面向对象结构化编程有些格格不入,但这并不妨碍 Perl 被广泛流传和使用,世界范围内围绕 ...

  10. Flex4 初始化过慢解决方法

    昨天找了个免费.net空间,想测试一下做的一个简单Flex4 上传项目的效果.上传所有文件到网站之后,访问项目页面,进度条一点一点艰难的向前移动,到了100%后却不出现程序界面,等待一会儿还是没有出现 ...