您的位置:首页 > 运维架构 > Linux

Linux用户管理命令

2018-07-21 14:17 120 查看
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。主要组(primary group) 用户至少属于一个组,必须有一个主组和附加组(supplementary group) ,一个用户可以属于0个或多个附加组。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

一、用户管理的相关文件

在linux系统下,要想对用户和用户组进行添加、修改、删除等操作,,我们必须了解用户和组的配置文件存放的位置。若想查看这些文件存放的内容,可以使用cat命令。

/etc/passwd

功能:存放所创建的用户帐号和其相关信息
内容:用户名:密码位:UID:GID:描述位:用户主目录:SHELL

注:由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow的配置文件中。因此,存放密码的字符显示为x,为了保密。在passwd文件中,各字段值间用":”分隔,每个字段均代表该帐号某方面的信息。

/etc/shadow

功能:存放用户密码(一般采用加密的方式存放密码)
内容:用户名:密码位:

注:shadow所有字段都可以手动修改,但普通账户不能查看shadow文件,只要root可以读取。与passwd文件类似,shadow文件也是每行定义和保存一个账户的相关信息。

/etc/group

功能:存放系统组信息
格式:组名:组密码:GID:附加组成员列表:用,间隔

注:普通用户也可以附加到某个组中。组密码映射到了/etc/gshadow,显示为x,附加组成员列表可以用,间隔

/etc/gshadow

功能:存放用户组口令
格式:组名: 加密后的密码位:组管理员:附加组成员列表

注:组管理员可以用,间隔,即可以修改组密码,可以修改组成员。

/etc/skel

功能:用于存放用户的环境文件等。当添加新用户时,系统会自动复制该目录到新用户的家目录下。

二.用户及组管理命令

Linux的用户账号类型一般分为两类:超级用户:具有一切系统操作权限;普通用户:操作权限受到限制。root是系统的超级管理员,但在管理文件操作时,一般不使用root。这时,就需要创建新用户进行日常管理操作。

su

功能:切换用户
格式:#su [选项] [用户名]
参数:
su: 不加任何选项的情况下,默认为切换到root用户,不改变shell环境
su -:默认切换到root用户,并改变shell环境

注:root切换到普通用户,不需要输入密码,普通用户切换到root用户,需要输入密码。在用户登录系统时,密码是不显示的,不要认为是键盘坏了。

id

功能:显示当前用户自身的信息
格式:id [参数] 用户名
参数: id 用户名 :显示指定用户的信息
id -u 用户名 :显示指定用户的uid
id -g 用户名 : 显示指定用户的主组的gid
id -un 用户名 : 显示指定用户的名字
id -gn 用户名 : 显示指定用的的主组的组名

useradd

功能:建的新的系统用户
格式:useradd [参数]用户名
参数: -u UID : 指定 UID
-o 与-u 配合,不检查uid的唯一性
-g GID/组名 : 指定用户的主要组
-G GID/组名 : 指定用户的附加组
-c : "注释" 用户名
-d 路径 : 用户
-s /sbin/nologin : 指定用户的默认shell
-N : 使用users组做为主要组
-r : 创建系统用户
-m : 与-r 配合使用,在创建系统用户时,同时创建家目录
-M : 创建非系统用户时,不创建家目录
-D : 设置默认值,影响以下文件

注: 路径中的目录名要先存在,而基名不要存在 ,useradd的默认设置 /etc/default/useradd ,在新建用户的同时会产生一个同名的组,会在home下创建一个跟用户同名的家目录 。

passwd

功能:修改用户密码
格式:passwd [参数] [用户名]
参数:-l:锁定用户
-u :解除用户的锁定
-d :删除用户的密码
-e :使下次使用密码登录时,强制修改密码
--stdin :从标准输入接收用户密码

注:root用户可以使用passwd命令的一切功能,但是普通用户只能使用该命令修改自己的密码。

userdel

功能:删除给定的用户,以及与用户相关的文件
格式:userdel [参数] 用户名
参数:
-r : 删除用户主目录,会连同家目录和mail一起删除

注: 请不要轻易用-r参数,这个参数会删除用户的同时删除用户所有的文件和目录,如果用户目录下有重要的文件,在删除前请备份。

usermod

功能:修改用户信息
格式:usermod [参数] 用户名
参数:-u UID 用户名 修改指定用户的uid
-g GID/组名 : 修改用户的主组(该组要先存在)
-G GID/组名[GID2/组名2……] :设置用户的附加组
-a 与-G 配置,增加用户的附加组
-s shell :修改用户的默认shell
-c '注释内容' :修改用户的注释
-d 新地址 用户名 :只修改/etc/passwd当中家目录的信息,并不会将目录迁移
-m 与-d 配合使用:修改家目录时,目录一同迁移
note: -d 与地址 一定要连在一起
-l 新名字 旧名字:修改用户的登录名
-L 用户名 :锁定用户的密码
-U 用户名 :解锁用户的密码

注:如果使用-G为用户修改附加组的话,默认情况下会覆盖原有的附加组,如果只想追加新的附加组可以使用 -aG ,其中a表示追加。

gropadd

功能:建立用户组
格式:groupadd [参数] 组名
参数:-g GID/组名:指定GID的值
-r :自动分区的组ID

注:系统自备的id数是不一样的,centos6 < 500,centos < 1000

groupdel

功能:删除用户组
格式:groupdel 组名

groupmod

功能:修改组信息
格式:groupmod [参数] 组名
参数:-n 新组名:修改组的名称
-g GID:修改组的GID
-o:强制使用指定的GID,与-g连用

gpasswd

功能:修改组密码
格式:gpasswd [参数] [用户名] [组名]
参数:gpasswd -a username groupname :将指定用户以附加组方式加入到指定组
gpasswd -d username groupname :将指定用户从指定组中删除
gpasswd -A admin1[,admin2……] groupname :设置组管理员
gpasswd -M user1,user2 groupname :设置组成员列表 (仅root执行)
gpasswd -M '' groupname : 删除组成的所有成员
gpasswd -r groupname: 清空指定组的组密码

注:管理员可以修改组密码,及修改组成员

groups

功能:查看账号属于哪个组,主组和附加组
格式:groups [用户名]

newgrp

功能:生成一个子shell,使用户临时将主要组切换到指定组
格式: newgrp 组名

注:如果当前用户本身以附加组方式存在于该组中,那么newgrp 组名,无需输入密码

groupmems

功能:允许组管理员管理其组成员,查看将该组设置为附加组的组成员
参数:
-g :指定组名
-a 用户名:往指定组中增加成员
-d 用户名: 从指定组中删除成员
-l :列出组成员列表(不包含主组)
-p: 清空该组的所有组员

chpasswd

功能:修改用户口令,用户名和口令由用户输入的执行过程中输入
格式:#chpasswd [参数]
参数:-e 不加密存储

chown

功能:修改文件的owner
格式:chown 用户名 文件/目录名
参数:-R :递归同时修改目录下的子文件子目录
--reference 文件1 文件2 :将文件1的owner设置给文件2
chown owner.group 或 owner:group 文件名:可以同时修改文件的owner和group

注:修改文件的owner和group仅root可以修改

chgrp

功能:修改文件的group
格式:chgrp 组名 文件/目录名
参数:
-R :递归
--reference :文件1 文件2 将文件1的group设置给文件2

注:owner可以修改文件的属于组,但owner一定要属于目标组

三.用户安全管理

对于不同用户对权限的设置,超级用户可以不受文件访问权限的限制,而普通用户受具体文件访问权限的限制,若普通用户想执行对某个文件的操作,就需要修改这个用户对权限的设置。

普通权限

rwxrwxrwx:
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
rwx权限作用在文件上:
r:表示可以读取该文件的内容
w:表示可以修改该文件的内容
x:无作用
rw:表示可以读写该文件
rx:表示可以读并能执行该文件
wx:权限等同于仅w权限
rwx权限作用在目录上:
r:可以短列出目录的内容(子文件,子目录名)
w:无作用
x:可以进入该目录
rw:权限等同于仅r
rx:表示可以长列出,可以进入
wx:可以创建及删除文件或目录。
rwx:可以列出可以创建删除可以进入。

注:当用户访问一个文件时,首先判断当前用户是否为该文件的所属人owner,如果是owner,则应用owner位的权限;如果不是owner,则判断该用户的所属组当中,是否有一个组与该文件的group相同,如果有,则应用group位的权限;如果都不是,则应用other位。以上权限组合可以用字母和八进制数字表示:r:4,w:2,x:1.

特殊权限

安全上下文:
进程运行时能够访问哪些资源或文件,不取决于进程文件的属主属组,而是取决于运行该命令的用户身份的uid/gid,以该身份获取各种系统资源。
suid:当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限
权限设定:chmod u+s file.....
chmod u-s file......
sgid:当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限;当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同
权限设定:chmod g+s file.....
chmod g-s file......
sticky: 对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除。
权限设定:chmod o+t DIR.....
chmod o-t DIR......

chmod

功能:修改文件访问权限
格式:chmod [参数] <权限值> <文件名>
参数:
-v:显示详细说明
-c:与-v相似,但只有在文件权限发生改变时才显示详细说明
-R:递归改变目录的权限
-f:不显示拥有者的详细信息

注:只有root和文件所属人有权执行chmod文件

umask

功能:设置权限掩码(决定新建文件的权限)
格式:umask 权限值
参数:umask:查询umask
umask xxx :设置umask

注:超级用户默认为022,普通用户默认为002。新文件和新目录的umask基准值不一样。

getent passwd [user_name]:只显示某个user的信息

四、权限管理

acl

在Linux中,acl主要负责文件权限管理,centos7 默认支持acl,centos6及之前的版本,操作系统安装时所创建的文件系统默认支持acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:
1.查看分区ACL权限是否开启
tune2fs -o acl /dev/sda5
2.开启acl
mount -o acl /dev/sda5 /app
acl需要getfacl和setfacl来进行acl权限的获取和设置。
setfacl:
-m : 赋予文件相关的acl参数,不能与-x同时设置
-x : 删除文件相关的acl参数,不能与-m同用
-b :删除所有的acl参数
-k :删除默认的acl参数
-R :递归设置acl参数
--restore : 恢复acl参数
getfacl :
<filename> : 获取文件的acl的详细权限

注:acl权限有优先级,判断顺序为:owner > acl user > group > other

Chattr

功能:管理文件的隐藏权限属性
格式:chattr [参数] 操作符 属性值 文件或目录
参数: 
+a 表示文件不能删除数据,不能覆盖数据,只能追加数据。
+i 表示文件不能删除,不能覆盖,不能追加任何数据

注:只有root可以设置这个属性,参数中的“+”表示为目标文件增加一个隐藏属性。

lsattr

功能:查看attr权限,显示特定属性
格式:lsattr [参数] [文件名]
参数:-R:查看目录所有内容的属性,包括子目录中的内容

五、练习

1、创建用户liubei,guanyu,zhangfei,要求三用户同属于一个附加组shuguo
步骤:1.先分别创建用户liubeu,guanyu,zhangfeu,
2.使用gpasswd命令把用户归属于一个组shuguo
3.使用命令id查看
[root@centos 7 ~]# useradd liubei
[root@centos 7 ~]# useradd guanyu
[root@centos 7 ~]# useradd zhangfei
[root@centos 7 ~]# gpasswd -a liubei,guanyu,zhangfei shuguo
[root@centos 7 ~]# id liubei
[root@centos 7 ~]# id guanyu
[root@centos 7 ~]# id zhangfei



2、复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
步骤:1.先使用cd命令进到tmp目录下
2.使用cp命令复制文件
3.使用chown修改所有者为wangcai
4.使用chgrp命令修改所属组为sysadmins
5.使用chmod命令修改权限
6.使用ll命令查看
[root@centos 7 tmp]# cd /var/tmp
[root@centos 7 tmp]# cp /etc/fstab /var/tmp
[root@centos 7 tmp]# chown wangcai fstab
[root@centos 7 tmp]# chgrp sysadmins fstab
[root@centos 7 tmp]# chmod 660 fstab
[root@centos 7 tmp]# ll

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  用户 权限