CentOS7用户和组的创建及文件权限管理

标签: CentOS  Linux  linux  centos

转自
https://www.cnblogs.com/dubhlinn/p/11055010.html
https://blog.csdn.net/n_s_X14/article/details/83717988

用户与组的创建

概念 和 基本信息

centos Linux用户中分为三类用户:即超级用户(root用户、根用户,用户UID=0)、普通用户(用户UID>=1000)、伪用户(用户UID=1~999)

centos Linux组分类也和用户类似,普通组GID>=1000。

超级用户拥有系统的最高权限,甚至可以删除系统;普通用户相对于超级用户少了很多权限,比如删除用户,禁止用户,添加用户组,删除用户组,修改系统配置等等;伪用户是无法使用密码登陆的,即仅仅用于系统自动的用户,人是无法用于登陆使用的

linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号。组类似于角色,系统可以通过组对有共性的用户进行统一管理。每个用户应该至少属于一个组,不能游离于组外;且在创建用户时,系统会在/home目录下自动生成一个目录作为该用户的“家目录”,该用户在登录后会首先进入家目录。家目录可以在添加用户时指定,如果不指定,默认会以用户名来命名。例如,用户bob的家目录默认是/home/bob,他在登录linux系统后,会首先进入/home/bob。

用户与组基本信息
/etc/passwd是用来储存用户信息的文件,/etc/shadow是用来储存用户加密后密码及密码相关属性的文件, /etc/group是用来存放用户组信息的文件,/etc/gshadow加密后的组密码,一般不会使用。

每个用户应该至少属于一个初始组,但是可以属于多个附加组。一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。用户的权限也只属于当前的初始组。

/etc/group
/etc/gshadow

组的创建

[[email protected] ~]# groupadd -h
Usage: groupadd [options] GROUP

Options:
  -f, --force                   exit successfully if the group already exists,
                                and cancel -g if the GID is already used
  -g, --gid GID                 use GID for the new group
  -h, --help                    display this help message and exit
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -o, --non-unique              allow to create groups with duplicate
                                (non-unique) GID
  -p, --password PASSWORD       use this encrypted password for the new group
  -r, --system                  create a system account
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       directory prefix
  -f, --force          			如果组存在则成功退出,不创建新的组,如果组ID已经存在则取消-g 参数设置
  -g, --gid GID              	设置组ID,未指明则就会按照用户组ID中上一个gid自增1
  -o, --non-unique              允许组ID(GID)不唯一,可重复。
  -p, --password PASSWORD       设置组密码,一般不会使用

创建三个组 group1,group2,group3

groupadd group1
groupadd -g 2000 group2
groupadd group3

查看组信息可以看到三个新创建的组。

cat /etc/group

三个创建好的组

信息使用:分隔。分为4部分
组名:密码:组ID(GID):组中用户列表

组名修改及组删除

修改组

[[email protected] ~]# groupmod -h
Usage: groupmod [options] GROUP

Options:
  -g, --gid GID                 change the group ID to GID
  -h, --help                    display this help message and exit
  -n, --new-name NEW_GROUP      change the name to NEW_GROUP
  -o, --non-unique              allow to use a duplicate (non-unique) GID
  -p, --password PASSWORD       change the password to this (encrypted)
                                PASSWORD
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -g, --gid GID                 修改组ID(GID)
  -n, --new-name NEW_GROUP      修改组名
  -o, --non-unique              允许设置的组ID重复
  -p, --password PASSWORD       修改组密码
groupmod -g 1002 group2
groupmod -g 1111 -n group1111 group3

用户组修改
删除组

[[email protected] ~]# groupdel -h
Usage: groupdel [options] GROUP

Options:
  -h, --help                    display this help message and exit
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -f, --force                   delete group even if it is the primary group of a user

组删除

用户

/etc/passwd
/etc/shadow

用户的创建

[[email protected] ~]# useradd -h
Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]

Options:
  -b, --base-dir BASE_DIR       base directory for the home directory of the
                                new account
  -c, --comment COMMENT         GECOS field of the new account
  -d, --home-dir HOME_DIR       home directory of the new account
  -D, --defaults                print or change default useradd configuration
  -e, --expiredate EXPIRE_DATE  expiration date of the new account
  -f, --inactive INACTIVE       password inactivity period of the new account
  -g, --gid GROUP               name or ID of the primary group of the new
                                account
  -G, --groups GROUPS           list of supplementary groups of the new
                                account
  -h, --help                    display this help message and exit
  -k, --skel SKEL_DIR           use this alternative skeleton directory
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -l, --no-log-init             do not add the user to the lastlog and
                                faillog databases
  -m, --create-home             create the user's home directory
  -M, --no-create-home          do not create the user's home directory
  -N, --no-user-group           do not create a group with the same name as
                                the user
  -o, --non-unique              allow to create users with duplicate
                                (non-unique) UID
  -p, --password PASSWORD       encrypted password of the new account
  -r, --system                  create a system account
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             login shell of the new account
  -u, --uid UID                 user ID of the new account
  -U, --user-group              create a group with the same name as the user
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

常用

Options:
  -b, --base-dir BASE_DIR       设置用户家目录的父目录
  -d, --home-dir HOME_DIR       设置用户的家目录
  -g, --gid GROUP               设置用户的组id或组名
  -G, --groups GROUPS           设置用户的附加ID
  -m, --create-home             创建用户时创建用户家目录
  -M, --no-create-home          创建用户时不创建用户家目录
  -o, --non-unique              允许用户的uid重复
  -p, --password PASSWORD       设置用户的登录密码,一般不会在创建时指定。
  -s, --shell SHELL             设置用户所用的shell
  -u, --uid UID                 用户的uid
  -U, --user-group              创建用户时创建组,组名和用户名相同

默认情况,用户家目录的父目录是 /home 用户的家目录和用户名一致,组名和用户名一致,创建用户时创建家目录,不允许用户uid重复,无密码。

用户创建

useradd user1
groupadd group2
useradd -g group2 user2
useradd -d /user3 -p 123456 user3

为用户设置密码

passwd user1

查看用户信息

cat /etc/passwd

用户信息
主要看最后三行,用户信息用 : 分隔。分别是

用户名 : 用户密码(使用X代替,具体存储在/etc/shadow) : 用户ID : 组ID : 用户注释信息 : 用户的家目录 : 用户登录所使用的shell

user3 的 家目录 是 /user3,而未设置家目录的user1 user2 家目录是/home 下的同名文件夹。

查看用户密码

cat /etc/shadow

用户密码
看最后三行,user1 user2 user3
user2未设置密码,user1和user3密码都为123456 但是user1是创建后设置的密码,因此是加密的,user3是创建时设置的密码,不是加密的。(奇怪的是user3密码好像无法使用。。。) 因此用户密码设置最好是创建用户之后使用passwd 命令设置而不是直接使用-p 参数设置

查看用户信息

id 用户名
id user1
id user2
id user3

用户信息 ID查看
三个信息分别是 用户ID 组ID(初始组ID) 所属组列表。
初始组可以看做当前用户所使用的组?使用newgrp 组名可以更改初始组。

用户修改删除

用户修改

[[email protected] ~]# usermod -h
Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                the user from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user SEUSER     new SELinux user mapping for the user account

常用

Options:
  -d, --home HOME_DIR           修改新的用户家目录
  -g, --gid GROUP               设置新的组ID
  -G, --groups GROUPS           设置新的附加组列表
  -l, --login NEW_LOGIN         设置新的登录名 可以看做更改新的用户名,但是家目录未改变(如果未设置 -d 参数)
  -m, --move-home               将原家目录内容转移到新家目录,只有-d参数设置时有效
  -s, --shell SHELL             新的登录shell
  -u, --uid UID                 设置用户新的uid

示例,将用户 user1 的用户组更改为为 group1

groupadd group1
usermod -g group1 user1
id user1

更改用户组

用户删除

[[email protected] ~]# userdel -h
Usage: userdel [options] LOGIN

Options:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -Z, --selinux-user            remove any SELinux user mapping for the user

常用

Options:
  -f, --force                  强制删除,即使有进程使用该用户启动
  -r, --remove                  删除用户同时删除该目录。

示例,删除 三个用户

userdel user1
userdel -r user2
userdel -rf user3

查看 /etc/passwd 用户信息 发现三个用户都被删除。查看 /home 目录
家目录未删除
另,一般情况下删除用户时,当用户初始组时创建用户时创建的,会将该用户的初始组一并删除。

rm -rf /home/user1/

12.文件与用户、组的关系

一个用户创建了一个文件,则这个用户就自动成为这个文件的"所有者",这个用户所属的初始组就成为文件的"所在组",除了所有者和所在组的用户,系统中的其他用户对于文件都是"其他组"的用户。可以通过ls -l命令查看文件的所有者和所在组。但是文件的所有者和所在组并不是固定不变的,可以修改。

先将先前创建的用户和组一并删除。再创建新的用户组进行测试。

创建三个组

groupadd group1
groupadd group2
groupadd group3

创建一个用户 usetest,设置初始组为group1,附加组为group2,group3并设置密码。

useradd -g group1 -G group2,group3 usertest
passwd usertest

创建用户usertest
切换到用户usertest 并进入该用户家目录 查看用户组
从root用户切换到普通用户不用输入密码

su usertest
cd
groups

切换用户

该用户属于一个初始组,两个附加组。用户的有效组是初始组。
https://blog.csdn.net/digitalkee/article/details/102616038

切换用户初始组命令 newgrp 附加组组名
使用 newgrp 命令一边切换 user1 的初始组,一边创建文件。

touch test1_file
mkdir test1_dir
newgrp group2
touch test2_file
mkdir test2_dir
newgrp group3
touch test3_file
mkdir test3_dir

可以看到,三个文件所属的 用户一致,但是所属的用户组不一致。

更改用户组

文件所属用户组及权限

ls -l命令可以以列表形式展示当前目录下的子目录和文件

ls -l
[[email protected] ~]$ ls -l
total 0
drwxr-xr-x. 2 usertest group1 6 Jul 13 03:39 test1_dir
-rw-r--r--. 1 usertest group1 0 Jul 13 03:39 test1_file
drwxr-xr-x. 2 usertest group2 6 Jul 13 03:39 test2_dir
-rw-r--r--. 1 usertest group2 0 Jul 13 03:39 test2_file
drwxr-xr-x. 2 usertest group3 6 Jul 13 03:39 test3_dir
-rw-r--r--. 1 usertest group3 0 Jul 13 03:39 test3_file

https://www.cnblogs.com/dubhlinn/p/11055010.html

分为8部分

(1)d(2)rwxr-xr-x. (3)2 (4)usertest (5)group1 (6)6 (7)Jul 13 03:39 (8)test1_dir
(1)-(2)rw-r--r--. (3)1 (4)usertest (5)group1 (6)0 (7)Jul 13 03:39 (8)test1_file

(1) 第一组只有1个字符,表示条目的类型:

-:普通文件

d:目录

l:软链接

c:字符设备,例如键盘、鼠标

b:块文件,例如硬盘;

(2) 第二组有9个字符,每3个表达一个意思:

第1-3个表示文件所有者的权限,

第4-6个表示文件所在组的用户的权限,

第7-9个表示文件其他组的权限。

总的来说,r表示可读,w表示可写,x表示可执行,但是对于文件和目录,表达的意思又不尽相同,下面分别描述。

文件 目录
- 无权限 无权限
r 可以用cat、more、less等命令查看文件内容 可以用ls命令查看目录下的内容
w 可以用vi、vim编辑器修改文件,但不代表可删除 可以在目录内增加、删除、重命名文件或子目录
x 可执行 可以用cd命令进入该目录

(3) 第三组是一个数字,对于文件来说是硬链接数,通常是1,对于目录是其下的子目录数量(包含隐藏子目录)。

(4) 第四组表示文件的所有者。

(5) 第五组表示文件的所在组。

(6) 第六组是一个数字,表示其大小(KB)。

(7) 第七组是日期时间,表示文件或目录的最后修改时间。

(8) 第八组是文件名或目录的名字。

文件或目录所属用户与用户组更改

drwxr-xr-x. 2 usertest group2 6 Jul 13 03:39 test2_dir
-rw-r--r--. 1 usertest group2 0 Jul 13 03:39 test2_file

所属用户更改 命令 chown

chown [-R] username source

其中,username为修改后的用户名,source为文件或目录的路径名称,-R表示级联修改目录下面的子目录和文件的所有者。

所属用户组更改命令 chgrp

chgrp [-R] groupname source

其中,groupname为修改后的组名,source为文件或目录的路径名称,-R表示级联修改目录下面的子目录和文件的所在组。注意修改文件的所有者和所在组是相互独立的事件,互不影响。

所属用户与用户组同时修改命令 chown

chown [-R] username:groupname source

其中,username为修改后的用户名,groupname为修改后的组名,source为文件或目录的路径名称,-R表示级联修改目录下面的子目录和文件的所在组。这里的用户和组没有必然联系,即username不一定要属于groupname的那个组。

测试修改用户与组
创建用户 feng 默认初始组 feng

useradd feng
passwd feng
chown feng test1_file
chown -R feng test1_dir/
chgrp feng test2_file
chgrp -R feng test2_dir/
chown feng:feng test3_file
chown -R feng:feng test3_dir

修改后用户与用户组

文件或目录权限设置

文件或目录的权限可看做分为三部分,所属用户权限,所属组权限,其它组的权限。注,超级用户权限不在此列,超级用户如root 对几乎所有文件目录有所有权限。

修改文件权限命令 chmod
(1) 使用权限代码赋值

chmod role1=auth source

其中,role为角色代码,可以设置其中的一个或多个,多个角色之间用逗号(,)分隔且不能有空格,其取值范围如下:

u-文件或目录的所有者;

g-文件或目录所在组的用户;

o-其他用户;

a-所有用户,包含u、g、o,只能单独使用。

auth为权限码组合,例如读写执行权限为rwx,读和执行权限为rx,写权限为w,根据需要选择。

source为文件或目录的路径名称。

(2) 使用加减号添加或减少权限

chmod role+auth source

chmod role-auth source

role、auth、source的含义同上,同样可以设置一个或多个角色。

(3) 使用数字赋值

chmod xyz source

其中,x、y、z是三个数字,分别表示文件或目录的所有者、所在组的用户、其他组的用户的"权限值"。

权限值是这样计算的:

r=4

w=2

x=1

将这个用户的权限代码对应的数字加起来就是"权限值",所以其取值范围可能是0、1、2、3、4、5、6、7。

设置权限 实例
一 。修改test1_file 所有用户只有读权限

chmod u=r,g=r,o=r test1_file

二。修改test2_file 所属用户增加执行权限,所属组增加可写权限,其他组去除可读权限。

chmod u+x,g+w,o-r test2_file

三。修改test3_file所有用户设置所有权限。

chmod 777 test3_file

权限设置

版权声明:本文为dandanfengyun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dandanfengyun/article/details/107310586

智能推荐

CentOS 7配置南大docker镜像

文章目录 CentOS 7配置南大docker镜像 0.帮助页面 1.系统要求 2.卸载旧版本(没有旧版本可跳过) 3.安装方式 4.准备工作 5.可选操作 Stable Test Nightly 6.安装docker引擎 7. (可选)修改配置文件防止与xshell连接冲突 8.启动docker CentOS 7配置南大docker镜像 0.帮助页面 南大docker源:https://mirr...

Qcon演讲纪实:详解如何在实时视频通话中实现AR功能

2018年4月20日-22日,由 infoQ 主办的 Qcon 2018全球软件开发大会在北京如期举行。声网首席 iOS 研发工程师,iOS 端移动应用产品设计和技术架构负责人龚宇华,受邀分享了《基于 ARkit 和 ARcore,在实时视频通话中实现 AR 功能》,在演讲中剖析了 AR 与 VR 差异,ARKit 的工作原理,以及逐步讲解如何基于 ARKit 与声网Agora SDK 创建 AR...

POJ2348 UVa10368 HDU1525 Euclid's Game【博弈】

Euclid's GameTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4106    Accepted Submission(s): 1947 Probl...

使用Breeze.js编写更好的查询

这篇文章是由同行评审Agbonghama柯林斯 。 感谢所有SitePoint的审稿作出SitePoint内容也可以是最好的! 数据量正在迅速发展,他们正在变得越来越复杂,维护。 许多开发人员希望避免由数据问题他们的工作过程中造成的问题和头痛。 一个使我们的工作更轻松的图书馆是Breeze.js 。 在这篇文章中,我们将讨论我们如何能够写出更好的查询与Breeze.js。 但是首先,我们应该知道什...

Netty框架构建Nio编程

~~~ 随手点赞,养成习惯 ~~~ 为什么选择Netty框架 Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的。 优点: ① API使用简单,开发门槛低 ②功能强大,预置了多种编解码功能,支持多种主流协议 ③ 定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展; ④性能高,通过与其他业界主流的NIO框架对比,Nett...

猜你喜欢

【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)

Description Solution 首先我们可以知道两个性质:1、路径u-v和路径v-w可以合并为路径u-w;2、路径u1-v1加路径u2-v2和路径u1-v2加路径u2-v1是等价的(就是起始点和终点可以互换) 那么知道这些性质之后就很好做了。我们只用知道每个点多少次做起点和多少次做终点。 我们设f[i]表示满足i子树的需求i上的值要是多少。 那么枚举i的所有儿子,判断a[i]-f[i],...

【String-easy】541. Reverse String II 反转的元素,有反转个数和间隔

1. 题目原址 https://leetcode.com/problems/reverse-string-ii/ 2. 题目描述 3. 题目大意 给定一个字符串,和字符串的间隔k, 这个k表示每k个数反转一次,然后再间隔k个元素再反转k个元素。 4. 解题思路 只要按照间隔去反转就可以了。然后间隔k个元素不反转是通过让i每次递增 2*k完成的。 5. AC代码 6. 相似题型 【1】344. Re...

【C语言笔记结构体】

我们都知道C语言中变量的类型决定了变量存储占用的空间。当我们要使用一个变量保存年龄时可以将其声明为int类型,当我们要使用一个变量保存某一科目的考试成绩时可以将其声明为float。 那么,当我们要做一个学生信息管理系统时,需要保存学生的姓名、学号、年龄等信息,该怎么做呢? 如当要保存三个学生的信息时, 方法一是: 方法二是: 显然,方法二跟更清晰,因为它把name、num、age都集成在一个模板,...

39. Combination Sum 回溯算法简析

LeetCode传送门     这道题要求给你一组正数 C,然后给你一个目标数 T,让你从那组C中找到加在一起等于 T 的那些组合。     例如:给你 [2,3,6,7] 和 7,则返回 [[2,2,3],[7] ] 。      想解决这个问题前,我们首先引入一个新问题,图(树)的遍历问题。  ...

git安装|Linux系统安装 git|Linux如何安装git?Linux通过远程安装git|

Git是一个开源的分布式版本控制系统,可以有效、高速地处理项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 开发者需要一个GIT账号,通过这个查看项目的提交记录,可以更加清楚项目的开发情况,便于版本控制。 以下介绍在CentOS8操作系统搭建GIT服务器。   一、安装GIT服务器流程   安装GIT...