1. 用户组

RHEL 7/CentOS 7系统中的用户组有如下3类:

超级用户,UID 0:系统的超级用户。

系统用户,UID 1-999:系统中系统服务由不同用户运行,更加安全,默认被限制不能登录系统。

普通用户,UID1000~60000:即管理员创建的用于日常工作而不能管理系统的普通用户。

1.1 groupadd :添加用户组

一般创建用户的时候会自动创建与用户名相同的基本组,而groupadd命令通常单独创建用户组,并且作为部分用户的附加组,便于对这部分用户的权限做集中管理。

# 用法
groupadd [选项] group # 选项
-g GID:指定GID;默认是上一个组的GID+1;
-r: 创建系统组;

1.2 groupmod:修改组属性

# 用法
roupmod [选项] GROUP # 选项
-g GID:修改GID;
-n new_name:修改组名;

1.3 groupdel:删除用户组

# 用法
groupdel [选项] GROUP

1.4 gpasswd:组(密码/用户)操作

# 用法
gpasswd [选项] 组 # 选项
-a, --add USER 向组 GROUP 中添加用户 USER
-d, --delete USER 从组 GROUP 中添加或删除用户
-r, --delete-password remove the GROUP's password

1.5 newgrp:(临时)登录到指定的组

# 用法
newgrp [-] [group]
-: 会模拟用户重新登录以实现重新初始化其工作环境;

2. 用户

2.1 useradd:创建用户

# 用法
useradd [选项] 用户名 (创建用户,默认设定配置文件/etc/login.defs)
useradd -D:显示创建用户的默认配置;
useradd -D 选项: 修改默认选项的值;(结果保存于/etc/default/useradd文件中) # 选项(更多选项查看帮助)
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本组ID,此组得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT:指明注释信息;
-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
-r, --system:创建系统用户;

2.2 usermod:修改用户属性

# 用法
usermod [选项] 登录 # 选项
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
-a, --append:与-G一同使用,用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息;
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell;
-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
-U, --unlock:解锁用户的密码;

2.3 user del:删除用户

# 用法
userdel [选项] 用户名 # 选项
-r:删除用户时一并删除其家目录;

2.4 passwd:设置密码属性

# 用法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用户自己的密码;
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限; # 选项
-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
--stdin:从标准输入读取密码,如 echo "PASSWORD" | passwd --stdin USERNAME

2.5 su:switch user

# 用法
su [options...] [-] [user [args...]] # 说明
登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME 注意:管理员可无密码切换至其它任何用户; -c 'COMMAND':仅以指定用户的身份运行此处指定的命令;

3. 相关文件

3.1 /etc/passwd:用户信息

# 格式如下
name:password:UID:GID:GECOS:directory:shell
# name: 用户名
# password:可以是加密的密码,也可是占位符x;
# UID:用户ID;
# GID:用户所属的主组的ID;
# GECOS:注释信息;
# directory:用户的家目录;
# shell:用户的默认shell,登录时默认shell程序;

3.2 /etc/shadow:用户密码

# 格式如下
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

3.3 /etc/group:用户组信息

group_name:password:GID:user_list
user_list:该组的用户成员;以此组为附加组的用户的用户列表;

4. 用户权限

4.1 chmod

注意:用户仅能修改属主为自己的那些文件的权限;

# 用法
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE... # 选项
-R, --recursive change files and directories recursively(递归) # 示例&说明
chmod 755 FILE
chmod ugo+rwx FILE
chmod a-w FILE
a:所有,u:属主,g:属组,o:其它;
r:读,w:写,x:执行
chmod --reference=RFILE FILE(将FILE的权限修改为与RFILE一致)

4.2 chown:修改文件的属主、属组(修改属组相当于chgrp)

注意:仅管理员可修改文件的属主和属组

# 用法
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE... # 选项
-R, --recursive operate on files and directories recursively(递归) # 示例&说明
chown user1:group1 FILE (将FILE的属主设为user1,属组设为group1)
chgrp --reference=RFILE FILE(将FILE的属主、属组修改为与RFILE一致)

5. 特殊权限

5.1 SUID

默认情况下,进程其以发起者的身份运行(前提:发起者具有该程序的执行权限);

SUID可以使没有该程序的执行权限的用户,临时以该程序属主的身份运行该程序。

  • 功能:

    让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

  • 用法:

chmod u+|-s FILE...
# 展示位置(属主的执行权限位):
# 如果属主原本有执行权限,显示为小写s;
# 否则,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

5.2 SGID

  • 功能:

    1)让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

    2)在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)

  • 用法:

chmod g+|-s FILE...
# 展示位置(属组的执行权限位):
# 如果属组原本有执行权限,显示为小写s;
# 否则,显示为大写S;
  • 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

5.3 SBIT(Sticky BIT)

  • 功用:

    对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置Sticky BIT权限,则每个用户能创建新文件,且只能删除自己的文件;

  • 用法:

chmod o+|-t FILE...
# 展示位置(其它用户的执行权限位)
# 如果其它用户原本有执行权限,显示为小写t;
# 否则,显示为大写T;
  • 示例:
# 系统上的/tmp和/var/tmp目录默认均有Sticky BIT权限;
[root@VM_0_171_centos ~]# ls -ld /tmp /var/tmp
drwxrwxrwt. 7 root root 4096 5月 6 14:58 /tmp
drwxrwxrwt. 2 root root 4096 4月 4 14:59 /var/tmp

补充:管理特殊权限的另一方式:

SUID SGID SBIT 左右交叉组合 一般权限
0 0 0 ... 0
0 0 1 ... 1
0 1 0 ... 2
0 1 1 ... 3
1 0 0 ... 4
1 0 1 ... 5
1 1 0 ... 6
1 1 1 ... 7

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;

例如:chmod 1777

6. 隐藏权限

在Linux系统中除了能对文件设置一般权限和特殊权限外还有一种叫做隐藏权限的功能

6.1 chattr:设置文件的隐藏权限

用法

chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

OPTIONS

-R  递归设置目录中的文件权限
-V 详尽打印输出信息
-f 抑制多数错误信息
-v version 设置文件版本

参数说明(来自man帮助文档):

The letters 'aAcCdDeijsStTu' select the new attributes for the files:

append only (a), no atime updates (A), compressed (c), no copy on write(C), no dump (d), synchronous directory updates (D), extent format (e),immutable (i), data journalling (j), secure deletion (s), synchronous updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).

示例

[root@VM_0_171_centos tmp]# chattr -V +i acl
chattr 1.42.9 (28-Dec-2013)
acl的标志被设为 ----i-----------
[root@VM_0_171_centos tmp]#

6.2 lsattr:查看文件的隐藏权限

用法

lsattr [ -RVadv ] [ files...  ]

OPTIONS

-R     递归
-V 显示lsattr程序版本号
-a List all files in directories, including files that start with '.'
-d 查询目录本身
-v 显示文件版本号

示例

[root@VM_0_171_centos tmp]# lsattr -v
123 suS-iadAcj-t---- ./acl
687539122 ---------------- ./attr
7. 文件访问控制列表facl

指定的特定用户或用户组对某个文件的操作权限(在原来的u、g、o之外,另一层对用户或用户组的赋权机制)

7.1 setfacl

用法:

# 赋权给用户
setfacl -m u:USERNAME:MODE FILE...
# 赋权给用户组
setfacl -m g:GROUPNAME:MODE FILE...
# 撤销赋权
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...

7.2 getfacl

用法:

getfacl FILE...

示例:

# 对acl文件为gentoo用户赋予rwx选项
[root@VM_0_171_centos tmp]# setfacl -m u:gentoo:rwx acl
# 查询文件的访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
user:gentoo:rwx
group::r--
mask::rwx
other::r--
# 撤销acl文件对gentoo用户的赋权
[root@VM_0_171_centos tmp]# setfacl -x u:gentoo acl
# 再次查询访问控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
# 设置访问控制列表后,文件的权限位后会增加一个+
[root@VM_0_171_centos tmp]# ls -l acl
-rw-r--r--+ 1 root root 35 5月 6 16:31 acl

Linux-用户及权限的更多相关文章

  1. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  2. Linux 用户及权限详解

    Linux 用户及权限详解 用户 , 组 ,权限 安全上下文(secure context): 权限: r,w,x 文件: r : 可读,可以使用类似cat 等命令查看文件内容. w : 可写,可以编 ...

  3. Linux用户和权限——管理文件权限的命令

    Linux用户和权限——管理文件权限的命令 摘要:本文主要学习了Linux中修改文件权限的命令. chown命令 chown命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件( ...

  4. Linux用户和权限——权限管理

    Linux用户和权限——权限管理 摘要:本文主要介绍了Linux系统中权限的分类,以及对权限的管理. 用户的三种身份 所有者 由于Linux是个多人多工的系统,因此可能常常会有多人同时使用这部主机来进 ...

  5. Linux用户和权限——管理用户和用户组的命令

    Linux用户和权限——管理用户和用户组的命令 摘要:本文主要学习了在Linux系统中管理用户和用户组的命令. useradd命令 useradd命令可以用来创建新用户. 基本语法 useradd [ ...

  6. Linux用户和权限——用户和用户组管理

    Linux用户和权限——用户和用户组管理 摘要:本文主要介绍了Linux系统中的用户和用户组管理. 用户和用户组 含义 在使用Linux系统时,虽然输入的是自己的用户名和密码,但其实Linux并不认识 ...

  7. linux用户及权限管理

    [文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...

  8. Linux用户和权限管理看了你就会用啦

    前言 只有光头才能变强 回顾前面: 看完这篇Linux基本的操作就会了 没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了.这篇主要将Linux下的用户和权限知识点再整理 ...

  9. linux用户和权限详解

    1.用户组说明 在使用useradd命令创建用户的时侯可以用-g 和-G 指定用户所属组和附属组.基本组:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组 ...

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

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

随机推荐

  1. PHP redis 群发短信

    $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $list = M('Sms')->field('phone')-&g ...

  2. Android资源相关语法

    2018-08-29 getResources().getString(Rid)获取配置中的字符串

  3. jvm gc 算法

    1标记-清除法 他是现代垃圾回收算法的思想基础. 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段. 在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象(根搜索算法).而未被标记的对象 ...

  4. Linux学习笔记:Jenkins安装

    操作系统是CentOS 7,安装Jenkins 首先安装jdk,可在Oracle jdk和Openjdk中任选其一安装Oracle jdk步骤见:   https://www.cnblogs.com/ ...

  5. java ajax请求后台并获取到返回值

    js: $.ajax({ url : '../Islogin.do', type : 'get', cache : false, dataType : 'json', success : functi ...

  6. PHP字符串函数运用小案例

    $str = 'ZenD_CONTRollER_FronT'; //转换为Zend_Controller_Front //1.全部转换为小写 $str1 = strtolower($str); //2 ...

  7. transform.forward和vector3.forward

    Vector3.forward的值永远是(0,0,1)(这里的(0,0,1)是世界坐标的(0,0,1)),而transform.forward我们可以理解为其对应物体的z轴方向,是一个向量,而不是一个 ...

  8. 25、UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

    layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————- - (voi ...

  9. 849. Maximize Distance to Closest Person

    class Solution { public: int maxDistToClosest(vector<int>& seats) { ; ; for(int i:seats) / ...

  10. 2019.01.17 bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)

    传送门 最小生成树菜题. 题意:给出一些有向边,问有向的最小生成树. 思路:先dfsdfsdfs一把所有有用的边都存起来,然后按终点点权为第一关键字,边权为第二关键字给边排序保证最小生成树的合法性,排 ...