Linux入门基础(三):Linux用户及权限基础
用户基础
用户和组
- 每个用户都拥有一个userid
- 每个用户都属于一个主组,属于一个或多个附属组
- 每个组拥有一个groupid
- 每个进程以一个用户身份运行,受该用户可访问资源限制
- 每个可登陆用户拥有一个指定的shell
用户
- userid为32位,从0开始,为了和老式系统兼容,用户id限制在60000以下
- 用户分为三种
- -root用户(id为0的用户)
- -系统用户(id为1~499的用户)
- -普通用户(500以上)
- 系统中的文件都有一个所属用户及所属组
- 使用id命令可以显示当前用户的信息
- 使用passwd命令可以修改当前用户密码
相关文件
- /etc/passwd 保存用户信息
- /etc/shadow 保存用户密码(加密的)
- /etc/group 保存组信息
查看登录的用户
- 命令whoami显示当前用户
- 命令who显示有哪些用户已经登陆系统
- 命令w显示有哪些用户已经登陆并且在干什么
创建一个用户
命令useradd用来创建一个用户
-d 家目录
-s 登陆shell
-u userid
-g 主组
-G 附属组(最多31个,用逗号分隔)
例如
useradd -u 600 -g group1 user1
这个命令会执行以下操作 :
- 在/etc/passwd中添加用户信息
- 如果使用passwd命令创建密码,则将密码加密保存在/etc/shadow中
- 为用户建立以个新的家目录/home/用户名
- 将/etc/skel中的文件复制到用户家目录中
- 建立一个与用户用户名相同的组,新建用户默认属于这个同名组
修改用户信息
命令usermod用来修改用户信息
-l 新用户名
-u 新userid
-d 用户家目录位置
-g 用户所属主组
-G 用户所属附属组
-L 锁定用户使其不能登录
-U 解除锁定
例如
usermod -u 700 user1
删除用户信息
命令userdel用以删除指定用户:
例如
#删除指定用户,保留用户家目录
userdel user1
#删除指定用户,同时删除用户家目录
userdel -r user1
组
几乎所有操作系统都有组的概念,通过组,我们可以更加方便的归类,管理用户
一般来件,我们使用部门,职能或地域的分类方式来创建使用组
- 每个组都有一个组id
- 组信息保存在/etc/group中
- 每个用户都拥有一个主组,同时还可以拥有最多31个附属组
创建组
命令groupadd用来创建组
例如
groupadd group1
修改组
命令groupmod用来修改组
例如
#修改组名
groupmod -n group2 group1
#修改组id
groupmod -g 601 600
删除组
命令groupdel用来删除组
例如
groupdel group2
权限机制
权限是操作系统用来限制对资源访问的机制
每个进程都以某个用户的身份运行,所以进程的权限和该用户的权限一样
文件权限
文件拥有三种权限 :
| 权限 | 对文件的影响 | 对目录的影响 |
|---|---|---|
| r (读取) | 可读取文件内容 | 可列出目录内容 |
| w (写入) | 可修改文件内容 | 可在目录中创建删除文件 |
| x (执行) | 可以作为命令执行 | 可访问目录内容 |
目录不许拥有x (执行权限) , 否则无法查看其内容
UGO模型
Linux权限基于UGO模型进行控制
- U代表User , G代表Group , O代表Other
- 每一个文件的权限基于UGO进行设置
- 权限三个一组(rwx),对应UGO分别进行设置,总共9个 例如 rwxrwxrwx
- 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件的所属用户或组的使用O权限
修改文件所属用户和所属组
命令chown用以改变文件的所属用户
例如
#chown 用户名 文件名/文件夹
chown user1 /var/www/aaa
#-R 递归修改目录下所有文件
命令chgrp用以修改文件的所属组
例如
#chgrp 组名 文件名/文件夹
chgrp group1 /var/www/aaa
#-R 递归修改目录下所有文件
修改权限
命令chmod用以修改文件的权限
chmod 模式 文件
模式为如下格式 :
- u,g,o分别代表用户,组和其他
- a可以代指ugo
- +,- 代表假如或删除对应的权限
- r,w,x 代表三种权限
模式示例 :
#所属用户加入读写权限
chmod u+rw fileName
#所属组删除执行权限
chmod g-x fileName
#所属组和其他加入执行权限
chmod go+x fileName
#ugo都删除执行权限
chmod a-x fileName
chmod 也支持数字方式修改权限,分别由三个数字表示
-r = 4 (2^2)
-w = 2 (2^1)
-x = 1 (2^0)
使用数字表示权限时,每组权限分别对应数字之和
rw=4+2=6
rwx=4+2+1=7
r-x=4+1=5
所以,使用数字表示ugo权限使用如下方式表示:
chmod 660 fileName == rw-rw----
chmod 775 fileName == rwxrwxr-x
扩展权限
默认权限
每一个终端都拥有一个umask属性,来确定新建文件 , 文件夹的默认权限
目录的默认权限:777-umask
文件的默认权限:666-umask
一般对于普通用户默认的umask是002,root用户的默认是022
- 新建文件的权限是:666-002=664
- 新建目录的权限是:777-002=775
命令umask用以查看 , 设置umask值
#查看
umask
#设置
umask 022
特殊权限
除普通权限外,还有三个特殊权限:
| 权限 | 对文件的影响 | 对目录的影响 |
|---|---|---|
| suid | 以文件的所属用户身份执行 | 无 |
| sgid | 以文件的所属组身份执行 | 在该目录中创建的任意新文件的所属组与该目录的所属组相同 |
| sticky | 无 | 对目录拥有写入权限的用户可仅可以删除其拥有的文件,无法删除其他用户所拥有的文件 |
设置特殊权限
设置suid:
chmod u+s fileName
即rwsrwxrwx
设置sgid:
chmod g+s fileName
即rwxrwsrwx
设置sticky:
chmod o+t fileName
即rwxrwxrwt
与普通权限一样,特殊权限也可以使用数字方式表示
- SUID = 4
- SGID = 2
- Sticky = 1
所以可以通过一下命令 设置
chmod 4755 fileName
即rwsrwxrwx
Linux入门基础(三):Linux用户及权限基础的更多相关文章
- linux入门教程(三) Linux操作系统的安装
因为笔者一直都是使用CentOS,所以这次安装系统也是基于CentOS的安装.把光盘插入光驱,设置bios光驱启动.进入光盘的欢迎界面. 其中有两个选项,可以直接按回车,也可以在当前界面下输入 lin ...
- linux常用终端命令(三)用户和权限
三.用户权限相关命令 用户 和 权限的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 1.用户和权限的基本概念 1.1.基本概念 用户管理包括 用户 与 组 管理 linux系统中 ...
- Linux基础三:用户和组
三.用户和组 1.概念 (1).用户概念: 用户是用来运行某一些进程.拥有某一些文件或目录. 在Linux里面,用户分成三大类:root用户.系统用户.普通用户. 用户是用UID来唯一标识身份的,且r ...
- Linux 配置SFTP,配置用户访问权限
之前我服务器是使用的Windows Server 2003,这段时间由于访问量变大我还是机智的换成Linux了,在搭建FTP的时候看到网上都是推荐vsftpd,不过我不推荐这个家伙,看官且看下文. 我 ...
- 零基础Linux入门之《Linux就该这么学》
本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...
- Linux下给mysql创建用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- lilybbs-faq - linux入门以及百合 Linux 版精华区导读
QUESTIONS 问题与解答 不需要任何命令的简单介绍 历史 (APUE 提到了1990年之前的unix历史,还有各种标准 ANSI ISO IEEE posix xpg3.... 但是linux ...
- Linux入门-5 用户及权限基础
1. Linux用户基础 用户 相关文件 查看登录的用户 添加用户 修改用户信息 删除用户 组 2. Linux权限机制 权限 UGO 修改文件所属用户和组 修改权限 3. Linux权限扩展 默认权 ...
- linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
1.切换到root用户 2.查看是否安装vsftp,我这个是已经安装的. [root@localhost vsftpd]# rpm -qa |grep vsftpd vsftpd--.el7_2.x8 ...
随机推荐
- Android Studio最全插件整理
在Android开发中,合理的使用Android Studio插件不但可以提高开发效率,还能从整体上提高代码的质量.下面就Android开发中常见的一些插件做一个整理. 1,GsonFormatGso ...
- 【Python】Java程序员学习Python(九)— 集合(list、tuple、range)和映射(dict)
集合是一门语言最重要的一个特性,对集合支持的程度越好,使用起来越方便 一.表现形式 1.1 list list的基本用法: 使用中括号包裹,[1,2,3] 元素类型可以是任意类型,同样可以是list ...
- 一种特殊场景下的HASH JOIN的优化为NEST LOOP.
应用场景: 有如下的SQL: select t.*, t1.ownerfrom t, t1where t.id=t1.id; 表t ,t1的数据量比较大,比如200W行.但是两张表能关联的行数却很少, ...
- PRINCE2是什么?
PRINCE是PRoject IN Controlled Environment(受控环境下的项目管理)的简称. PRINCE2描述了如何以一种逻辑性的.有组织的方法,按照明确的步骤对项目进行管理. ...
- 回归JavaScript基础(八)
主题:引用类型包装类.单体内置对象的介绍. 对于我们开发人员来说,JavaScript有种引用类型一定很陌生!那就是基本包装类型:Boolean.Number和String.这也不是我们的错,主要这些 ...
- LeetCode 之Find Minimum in Rotated Sorted Array
1.题目描述 2.题目分析 对该问题,要找最小元,可以从后向前遍历,只要前一个元素大于当前元素,说明当前元素就是最小元. 3.代码 int findMin(vector<int>& ...
- 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构
若要将应用程序开发的生成和测试阶段自动化,可以使用持续集成和部署 (CI/CD) 管道. 本教程介绍如何在 Azure VM 上创建 CI/CD 管道,包括如何: 创建 Jenkins VM 安装并配 ...
- .net core 配置swagger遇到的坑
Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. Swagger 可以生成 ...
- python基础_类型_list
#list 类似数组array,以[]扩起来逗号分隔 a = ['a','b','c'] #常用函数 a.append('c') #在list最后增加一个元素,结果是['a','b','c','c'] ...
- 将字典或者数组转换成JSON数据或者字符串
将字典或者数组转换成JSON数据或者字符串 源码: NSDictionary+JSON.h 与 NSDictionary+JSON.m // // NSDictionary+JSON.h // Cat ...