Linux基础学习笔记3-用户权限
本章内容
用户user
- 令牌token,identity
- Linux用户:Uername/UID
- 管理员:root,0
- 普通用户:1-65535
- 系统用户:1-499,1-999(Centos7)
- 对守护的进程获取资源进行权限分配
- 登录用户:500+,1000+(Centos7)
- 交互式登陆
- id -u username 查看用户ID号
- ps aux 查看进程
组group
- Linux组:Groupname/GIO
- 管理员组:root,0
- 普通组:
- 系统组:1-499,1-999(Centos7)
- 普通组:500+,1000+(Centos7)
安全上下文
- Linux安全上下文
- 运行中的程序:进程(process)
- 以进程发起者的身份运行:root:/bin/cat
- mage:/bin/cat
- 进程能够访问资源的权限取决于进程的运行者的身份
组的类别
- Linux组的类别
- 用户的主要组(primary group)
- 用户必须属于一个且只有一个组
- 组名同用户名,且仅包含一个用户,私有组
- 用户的附加组(supplementary group)
- 一个用户可以属于0个或多个辅助组
用户和组的配置文件
- Linux用户和组的主要配置文件:
- /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
- /etc/group:组及其属性信息
- /etc/shadow:用户密码及其相关属性
- /etc/gshadow:组密码及其相关属性
passwd文件格式
- login name:登陆用户名
- passwd:密码(x)
- UID:用户身份编码(1000)
- GID:登陆默认所在组编号(1000)
- GECOS:用户全名或注释
- home directory:用户主目录(/home/cheng)
- shell:用户默认使用的shell(/bin/bash)
shadow文件格式
- 登陆用户名
- 用户密码:一般用sha512加密
- 从1970年1月1日起到密码最近一次被更改的时间
- 密码再过几天可以被更改(0表示随时可被更改)
- 密码再过几天必须被更改(99999表示永不过期)
- 密码过期前几天系统提醒用户(默认为一周)
- 密码过期几天后账号会被锁定
- 从1970年1月1日算起,多少天后账号失效
group文件格式
- 群组名称:就是群组名称
- 群组密码:通常不需要设定,密码是被记录在/etc/gshadow
- GID:就是群组的ID
- 以当前组为附加组的用户列表(分隔符为逗号)
- gshadow文件格式
- 群组名称
- 群组密码
- 组管理员列表:可更改组密码和成员
- 以当前组为附加组的用户列表:(分隔符为逗号)
用户和组管理命令
- 用户管理命令
- useradd
- usermod
- userdel
- 组账号维护命令
- groupadd
- groupmod
- groupdel
- 用户创建:useradd [options] LOGIN
- -u UID
- -o 配合-u选项,不检查UID的唯一性
- -g GID:指明用户所属基本组,可为组名,也可以为GID
- -c "COMMENT":用户的注释信息
- -d HOME_DIR:以指定的路径(不存在)为家目录
- -s SHELL:指明用户的默认shell程序(可用列表在/etc/shells文件中)
- -G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在
- -N 不创建私用组做主组,使用users组为主组
- -r 创建系统用户
- -m 创建家目录,用于系统用户
- -M 不创建家目录,用于非系统用户
- 默认值设定:/etc/default/useradd文件中
- 显示或更改默认设置
- useradd -D
- useradd -D -s SHELL
- useradd -D -b BASH_DIR
- useradd -D -g GROUP
- 用户属性修改
- usermod [OPTION] login
- -u UID:新UID
- -g GID:新主组
- -G GROUP1[,GROUP2,...[GRUOUPN]]:新附加组,原来的附加组将会被覆盖;若要保留,则需要同时使用-a选项
- -s SHELL:新的默认SHELL
- -c 'COMMENT':新的注释内容
- -d HOME:新家目录不会自动创建;若要创建新的家目录并移动原家数据,同时使用-m选项
- -l login_name:新的名字;
- -L lock指定用户,在/etc/shadow密码栏增加!
- -U unlock指定用户,将/etc/shadow密码栏!去掉
- -e YYYY-MM-DD:指明用户账号过期日期
- -f INACTIVE:设定非活动期限
- 删除用户
- userdel [OPTION] login
- -r 删除用户家目录
- 查看用户相关的ID信息
- id [OPTION] [USER]
- -u 显示UID
- -g 显示GID
- -G 显示用户所属的组的ID
- -n 显示名称,需配合ugG使用
- 切换用户或以其他用户身份执行命令(switch user的缩写)
- su [options] [-] [user [args]]
- 切换用户的方式:
- su UserName:非登录式切换,即不会读取目标的配置文件,不改变当前工作目录
- su - UserName:登陆式切换,会读取目标用户的配置文件,切换至家目录,完全切换
- root su至其他用户无须密码,非root用户切换时需要密码
- 换个身份执行命令:
- su [-] UserName -c 'COMMAND'
- 选项:-l --login
- su -l UserName 相当于 su - UserName
- 设置密码
- passwd [OPTIONS] UserName:修改指定用户的密码
- 常用选项:-d 删除指定用户密码
- -l 锁定指定用户
- -u 解锁指定用户
- -e 强制用户下次登陆修改密码
- -f 强制操作
- -n mindays:指定最短使用日期
- -x maxdays:最大使用期限
- -w warndays:提前多少天开始警告
- -i inactivedays:从标准输入接收用户密码
- 示例:echo "PASSWORD" | passwd --stdin USERNAME
- 创建组
- groupadd [OPTION] GROUPNAME
- -g GID:指明GID号;[GID_MIN,GID_MAX]
- -r:创建系统组
- CentOS 6:ID < 500
- CentOS 7:ID < 1000
- 修改和删除组
- 组属性修改:groupmod
- groupmod [OPTION] group
- -n hroup_name:新名字
- -g GID:新的GID
- 组删除:groupdel
- groupdel GROUP(不能直接删除某个用户的主组)
- 更改组密码
- 组密码:gpasswd
- gpasswd [OPTION] GROUP
- -a user 将user添加至指定组中
- -d user 从指定组中移除用户user
- -A user1,user2,... 设置有管理权限的用户列表
- newgrp命令:临时切换主组
- 如果用户本不属于此组,则需要组密码
文件权限
- 修改文件的属主和属组
- 修改文件的属主:chown
- chown [option] ..[OWNER][:[GROUP]] FILE ...
- 用法: OWNER
- OWNER:GROUP
- :GROUP
- 命令中的冒号可用.替换
- -R:递归
- chown [OPTION]... --reference=RFILE FILE...
- 修改文件的属组:chgrp
- chgrp [OPTION] ...GROUP FILE...
- chgrp [OPTION] ...--reference=RFILE FILE...
- -R 递归
- 文件权限
- 文件的权限主要针对三类对象进行定义
- owner:属主,u
- group:属组,g
- other:其他,o
- 每个文件针对每类访问者定义了三种权限
- r:Readable
- w:Writeable
- x:eXcutable
- 文件:
- r:可使用文件查看类工具获取其内容
- w:可修改其内容
- x:可以把此文件提请内核启动为一个进程
- 目录:
- r:可以使用ls查看此目录中文件列表
- w:可以在此目录中创建文件,也可删除此目录中的文件
- x:可以使用ls -l查看此目录中文件列表,可以cd进入此目录

修改文件权限(change mode)
- chmod [OPTION] ..OCTAL-MODE FILE...
- -R:递归修改权限
- chmod [OPTION] ...MODE[,MODE]... FILE...
- MODE:
- 修改一类用户的所有权限:
- u= g= o= ug= a= u=,g=
- 修改一类用户某位或某些位权限
- u+ u- g- g+ 0+ 0- a+ a- + -
- chmod [OPTION] ... --reference=RFILE FILE...
- 参考RFILE文件的权限,将FILE的修改为同RFILE
- 权限设置示例:
- chgrp sales testfile
- chown root:admins testfile
- chmod u+wx,g-r,o=rx file
- chmod -R g+rwX /testdir
- chmod 600 file
- chown --reference=mage test
新建文件和目录的默认权限
- umask值可以用来保留在创建文件权限
- 新建FILE权限:666-umask
- 如果所得结果某位存在执行(奇数)权限,则将其权限+1
- 新建DIR权限:777-umask
- 非特权用户umask是0002
- root的umask是0022
- umask:查看掩码
- umask #:设定 示例:umask 002
- umask -S 模式方式显示
- umask -p 输出可被调用
- 全局设置:/etc/bashrc 用户设置:/etc/.bashrc
Linux文件系统上特殊权限
- SUID,SGID,Sticky
- 三种常用权限:r,w,x user,group,other
- 安全上下文
- 前提:进程有属主和属组;文件有属主和属组
- (1)任何一个可执行文件文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限
- (2)启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
- (3)进程访问文件时的权限,取决于进程的发起者
- (a)进程的发起者,同文件的属主:则应用文件属主权限
- (b)进程的发起者,属于文件属组;则应用文件属组权限
- (c)应用文件"其他"权限
- 可执行文件上的SUID权限
- 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序是否拥有执行权限。
- 启动为进程之后,其进程的属主为原程序文件的属主。
- SUID只对可执行的二进制程序上有效。SUID权限会让执行者暂时拥有所有者的权限。SGID权限会让执行者暂时拥有所属组的权限。
- SUID设置在目录上无意义
- 权限设定:
- chmod u+s FILE...
- chmod u-s FILE...
- 可执行文件上SGID权限
- 任何一个可执行文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
- 启动为进程之后,其进程的属组为原程序文件的属组
- 权限设定:
- chmod g+s FILE
- chmod g-s FILE
- 目录上的SGID权限
- 默认情况下,用户创建文件时,其属组为此用户所属的主组
- 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
- 通常用于创建一个协作目录
- 权限设定:
- chmod g+s DIR...
- chmod g-s DIR...
- Sticky位
- 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限是否拥有
- 在目录上设置Sticky位,只有文件的所有者或root可以删除该文件
- sticky设置在文件上无意义
- 权限设定:
- chmod o+t DIR...
- chmod o-t DIR...
- 例如:ls -ld
- /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
- 注意一下特殊权限的数字法表示

访问控制列表
- ACL:Access Control List,实现灵活的权限管理
- 除了了文件的所有者,所属组和其他人,可以对更多的用户设置权限
- Centos7 默认创建的xfs和ext4文件系统具有ACL功能
- Centos7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
- tune2fs -o /dev/sdb1
- mount -o /dev/sdb1 /mnt/test
- ACL生效顺序:所有者,自定义用户,自定义组,其他人
- 为多用户或者组的文件和目录赋予访问权限rwx
- mount -o acl /dir
- getfacl file | dir
- set -m u:wang:rwx file | dir
- setfacl -Rm g:sales:rwX dir
- setfacl -M file.acl file | dir
- setfacl -m g:salesgroup:rw file | dir
- setfacl -m d:u:wang:rx dir
- setfacl -x u:wang file | dir
- setfacl -X file.acl dir
Linux基础学习笔记3-用户权限的更多相关文章
- Linux基础学习笔记2-文件管理和重定向
本节内容 1)文件系统结构元素 2)创建和查看文件 3)复制.转移和删除文件 4)软和硬链接 5)三种I/O设备 6)把I/O重定向至文件 7)使用管道 文件系统和结构 文件系统 文件和目录被组织成一 ...
- linux基础学习笔记
我用的是centOS7.0版本的系统.linux的shell终端窗口类似于wind的command窗口 shell命令提示符格式:用户名@主机名:目录名 提示符 @前面的是已登录的用户名,@之后的为计 ...
- Linux基础学习笔记6-SHELL编程
编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 编程基本概念: 顺序执行:循环执行:选 ...
- Linux基础学习笔记5-软件管理
包管理器 二进制应用程序的组成部分: 二进制文件.库文件.配置文件.帮助文件 程序包管理器: debian:deb文件.dpkg包管理器 redhat:rpm文件.rpm包管理器 rpm:Redhat ...
- CentOS7学习笔记(六) 用户权限管理
用户.用户组与文件的关系 在了解权限管理之前先创建一些用户和用户组便于后续学习,在root用户下操作: # 创建两个用户组 [root@localhost data]# groupadd kaifa ...
- Linux基础学习笔记以及常用命令
1.windows自带命令进入mysql所在磁盘 2.进入mysql安装目录的bin文件 D:\>cd D:\Program Files (x86)\mysql-5.5.25-winx64\ ...
- Linux基础学习笔记4-文本处理
本章内容 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看 文件查看命令:cat,tac,rev cat [OPTION] ...
- Linux基础学习笔记1
MBR分区 主分区: 1-4,一块硬盘最多四个主分区,对主机必须有,主区可以格式化ntfs,存数据: 扩展分区:1-4,一块硬盘最多一个扩展分区,可以没有扩展分区,划分更小的单元,即逻辑分区: 逻辑分 ...
- MySql 在cmd下的学习笔记 —— 有关用户权限的操作(grant)
用户连接到MySQL时: [用户] <----> [服务器] 分为2个阶段: 1:有没有权限连接: 2:有没有执行此操作的权利.(如select, update……) 判断依据:( ...
随机推荐
- Linux系统高树攀登之路
Linux系统高树攀登之路 Linux作为一种操作系统已经发展了这么长的时间,已然有了很多的“粉丝”,其中不乏有“通天之力”的Linux大牛,也有能在Linux世界里“快乐畅游”的强者,同时也有想要攀 ...
- Linux 与 Unix 到底有什么不同?区别在哪?
Linux 与 Unix 到底有什么不同?区别在哪? 如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中.数十年来,它一直是数据中心的重要参与者,尽管很难找到明确 ...
- python六十四课——高阶函数练习题(二)
总结:高阶函数以及匿名函数之间的配合使用 from functools import reduce #模块一:lambda和filter的结合使用 #lt = [1,2,3,4,5,6,7,8,9] ...
- bootstrap+Ajax+SSM(maven搭建)实现增删改查
https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风 ...
- [SDOi2012]吊灯
嘟嘟嘟 这题想了半天,搞出了一个\(O(10 * d * n)\)(\(d\)为\(n\)的约数个数)的贪心算法,就是能在子树内匹配就在子树内匹配,否则把没匹配的都交给父亲,看父亲能否匹配.交上去开了 ...
- Linux shell判断文件和文件夹是否存在(转发)
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...
- 路飞学城-Python开发集训-第1章
学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...
- robotframework下添加python文件作为Library(可以创建自己想实现的接口)
1.在robotframework中要想实现自己的接口,例如:print,还有图片内容比对函数.可以自己在项目中加第三方库 2.创建后的内容如下: 3.在测试用例中引用:
- leetcode 344. Reverse String 、541. Reverse String II 、796. Rotate String
344. Reverse String 最基础的旋转字符串 class Solution { public: void reverseString(vector<char>& s) ...
- 在其他Activity中展示自定义相机拍的照片
在使用相机拍照中,我们需要当点击了确定按钮之后,拍的照片展示在其他Activity的ImageView中,代码如下: 1.首先在自定义相机的Activity中,处理点击拍照确定按钮后的逻辑功能:将图片 ...