Linux 用户和组的增删改查,用户切换及权限超详细解读

目录

用户和组及权限简单介绍

用户及组创建和删除

用户创建useradd

-m创建用户john

-g创建用户john

-d创建指定家目录的用户john

-m -g -d的组合使用

用户删除 userdel

用户密码设置

组创建 groupadd

组删除 groupdel

主组和附加组

修改用户所在主组或附加组 usermod

更换或添加附加组

更换主组

用户及组的信息查询

用户信息查询 id/getent passwd

id

getent passwd

组信息查询 getent group

权限详解

文件或目录权限更改 chmod

根据用户类别分别更改

完整用法

简要写法

根据3位数字进行权限设置

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

更改文件或目录所属用户

更改文件所属用户

更改目录所属用户

更改文件所属组

更改目录所属组


用户和组及权限简单介绍

Linux中为了做到权限的隔离,设置了用户和组,不同的用户和组的权限都是不同的不同的

权限一般分为可读,可写,可执行

其中权限最大的为root,也就是超级管理员用户,家目录位于/root,拥有对所有文件的读,写,执行权限,包括系统文件

普通用户一般只具有自己家目录内文件的读,写,执行权限,其它文件需要视root或其它用户对所有文件的权限开放程度而定,普通用户的家目录一般位于/home/家目录名

用户及组创建和删除

用户创建useradd

用户创建使用useradd命令,可用option选项为-m,-g,-d

-m 表示make a home directory,也就是再创建用户的时候会再/home/目录下生成一个和用户名相同的目录名,若不使用-m则不会自动创建

-g表示 group,就是指定一个已经存在的组让user加入,不会自动创建用户同名组

-d表示directory,表示指定一个user的家目录

不带有任何选项的命令

useradd john

这个命令会创建用户john,并会自动创建名为john的组

-m创建用户john

useradd -m john

这样会再创建用户john的同时创建/home/john作为用户john的家目录

-g创建用户john

若此时有一个已存在的组 developers,那么如果要指定john所属于这个组

useradd -g developers john

-d创建指定家目录的用户john

若此时要设置家目录为自定义路径/data1/deve/john

useradd -d /data1/deve/john john

-m -g -d的组合使用

由于-m和-d都用于创建家目录,所以看似冲突,实际组合使用的时候,我们以以下命令为例

useradd -m -g developers -d /data1/deve/john john

这个命令会同时创建/home/john和/data1/deve/john两个目录,但是john最终的家目录为/data1/deve/john,并且所属组为developers

用户删除 userdel

用户删除使用命令userdel,可选options为-r,若不使用-r则不会自动删除用户的家目录

所以若想要完整地删除用户john及其家目录则需执行

userdel -r john

用户密码设置

若要为用户设置密码则需要在

useradd john

后执行

passwd john

之后系统会让你输入两次密码进行确认

组创建 groupadd

组创建有两种方式,一种是创建用户时使用-m创建同名组,一种是手动创建

手动创建方式为

groupadd 组名称

若要创建developers组

则执行

groupadd developers

组删除 groupdel

组删除只需要执行

groupdel 组名称

若要删除developers组

则执行

groupdel developers

主组和附加组

主组也就是primary group,是用户在创建的时候指定的组,也就是通过自动创建同名的组或者-g指定的组就是主组,主组只能有一个

附加组也就是supplementary group,是指用户后期通过指定附加组进行加入的,可以加入不止一个附加组,方法为usermod

修改用户所在主组或附加组 usermod

usermod,也就是user modify,一般用于修改用户组信息

常用option为 -G,-g,以及使用-aG,a一般配合G一起使用,G指的就是supplementary groups,g指的是primary group,-aG的作用是额外追加附加组,不会消除已经加入的附加组,单独只用-G会消除当前已加入的附加组

-g用于替换主组

更换或添加附加组

若使用

useradd -m john

则用户john属于组john

若还想让john加入额外组developers

则执行

usermod -G developers john

若再加入developers后还要加入组club

则执行

usermod -aG club john

若想要一次性加两个附加组,可以执行

usermod -G developers,club john

更换主组

若本来的主组为john,要想更换主组为developers

则执行

usermod -g developers john

用户及组的信息查询

用户信息查询 id/getent passwd

用户信息查询一般有两种方式

一是使用 id 用户名称

二十使用 getent passwd 用户名称

id

使用id查询用户信息一般使用

id 用户名称

比如id john

返回结果样例如下

uid=UID(username) gid=GID(groupname) groups=GID1(groupname1),GID2(groupname2),...
uid为用户id

gid为主组id

groups里为加入的附加组的id

getent passwd

getent的全称是get entry,目的是获取到/etc/下的数据

getent passwd会返回/etc/passwd中的所有内容

每一条的样例如下

username:password:UID:GID:gecos:home_directory:shell
username为用户名称

password为密码一般用x掩盖

UID为用户id

GID为主组id

gecos为General Electric Comprehensive Operating System的缩写,表示用户用户描述信息,可能为空

home_directory为家目录

shell为执行终端,默认为/bin/bash

由于getent passwd会返回所有用户信息

可以选择getent passwd 用户名称进行执行用户信息输出

如要输出john用户的信息,可以执行

getent passwd john

组信息查询 getent group

getent group会获取/etc/group里的所有组信息

每一条的样例如下

group_name:password:GID:members
group_name为组名

password一般由x掩盖

GID为组号

members为作为附加组属于的用户列表

权限详解

drwxr-xr-x 31 root root       4096 8月  25 04:25 anaconda3

-rw-r--r--  1 root root          0 9月   9 07:18 tt.txt

lrwxrwxrwx.   1 root root     8 3月   7 2019 sbin -> usr/sbin


上面是三条文件的long listing显示的详细信息,可以看到最左边的字段是一个长度为10的字符串,下面对其进行详细解读

可以看到最左边的字符一共有三种,分别为d,-,l分别代表了三种类型,分别为directory目录,-代表文件,l代表symbolic link也就是软链接

可以看到软链接的目标是sbin -> usr/sbin

那么后9个字符,可以看到是由rwx-四个字符进行排列组合而成

9个字符要从左往右3,3拆分

我们以第一个anaconda3为例

rwxr-xr-x拆分为

rwx        r-x        r-x

rwx分别代表了read,write,execute,也就是读权限,写权限,可执行权限,注意,rwx的顺序不可变,如不具有某个权限则使用-

那么rwx        r-x        r-x进行拆分的原因为三个权限所对应的用户不同

从左至右分别对应 文件所属用户的权限,文件所属组的权限,其他用户的权限

权限字符串后的数字为硬链接数

root root代表了文件所属用户为root,所属组为root组

再之后的数字为文件或目录大小(字节数)

再之后8月  25 04:25为文件或目录最后修改时间

最后为文件或目录的名称

文件或目录权限更改 chmod

对于问卷或目录里的权限更改只有文件所属用户或者root用户可以更改,、

chmod的全称是change mode

用法有两种

根据用户类别分别更改
完整用法

完整用法会分别设置u(user),g(group),o(others)的权限,多个设置间用逗号间隔,例如

chmod u=rw,g=w,o=re /root/tt.txt

这里设置tt.txt的权限为所属用户可读可写,同组用户可读,其他用户可读可执行

简要写法

简要写法只要补充对应类别要补充或删除的权限,多个更改设置间用逗号间隔,例如

chmod u+rx,g+w /root/tt.txt

这里的作用为为所属用户添加可读和执行权限,为同组用户添加可写权限

根据3位数字进行权限设置

根据3位数字分别代表文件所属用户权限,所属组权限,其他用户权限

每位数字从0-7分别代表3位2进制数的转化

例如二进制数111,每一位从左到右分别对应r,w,x的权限,1为有,0为无,如rwx权限全具备则为111,转化为十进制就为7

所以不同数字的意义如下

0:无任何权限,  即 ---

1:仅有x权限,    即 --x

2:仅有w权限       即 -w-

3:有w和x权限     即 -wx

4:仅有r权限        即 r--

5:有r和x权限      即 r-x

6:有r和w权限     即 rw-

7:有全部权限      即 rwx

所以这里chmod的使用样例为

chmod 751 /root/tt.txt

这里将tt.txt所属用户具有全部权限,所属组具有可读和执行的权限,其它用户具有执行权限

根据分配权限需要可自行组合数字

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

chown的全称为change owner

只有root用户有权限修改文件或目录所属的用户和组

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

用法为

chown 要更改为的用户名称 文件路径

例如

chown root /home/john/tt.txt

这里将john家路径下的tt.txt所属用户转换给了root

更改目录所属用户

用法为

chown -R 要更改为的用户名称 目录路径

这里的-R 表示recursion(递归),因为要递归遍历整个目录的文件都转移所属用户

例如

chown -R root /home/john/libra/

这里将john家路径下libra目录所属用户转换给了root

更改文件所属组

用法为

chown :要更改为的用户名称 文件路径

例如

chown :root /home/john/tt.txt

这里将john家路径下的tt.txt所属用户转换给了root组

更改目录所属组

用法为

chown -R 要更改为的用户名称 目录路径

这里的-R 表示recursion(递归),因为要递归遍历整个目录的文件都转移所属组

例如

chown -R :developers /home/john/libra/

这里将john家路径下libra目录所属组转换给了developers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值