首页 > 技术文章 > Linux用户及权限管理

huoxc 2020-05-17 13:17 原文


Linux用户管理以及文件的权限管理

多用户:

在操作系统中可以存在多个不同的用户,将来在登录操作西欧统的时候,使用的用户身份不同,用户名不同,可能对系统中的文件
,目录操作权限有所不同;那么这是给文件或目录设置权限来实现的;

用户类型
管理员用户 root
普通用户
系统用户/程序用户(存在的目的是只是让我的系统中某一个软件能正常的启动以及使用)

用户相关的文件:

/etc/passwd		用户信息 
	格式:
		用户名:x:UID:GID:说明信息:SHELL
		
		UID:用来区分不同的用户
			1000---60000
			0---999		系统用户 
			
		SHELL:
			/bin/bash	默认 
			/sbin/nologin	系统用户 
		

/etc/shadow		用户密码信息

在Linux中用户组分为两类:

	基本组
	附加组			用户userA -----> 用户组userA;    caiwu, shichang, jishu, yanfa 
	在Linux中创建用户,如usera,这个用户创建出来时,如果我们没有做任何的改动,系统会自动出创建一个
	和用户名相同用户组usera,那么这个组称之为用户a的基本组;
	后续我们又创建出来的caiwu, shichang, jishu, yanfa ,可以把这个用户uaera加到这些组里面,那么这个组。称之为
	用户的附加组;
	对于1个用户来说,一个用户只能由一个基本组,而用户的附加组可能由多个

1、创建用户

useradd [option] 用户名称

创建用户:
useradd user1
查看用户:
[root@node01 ~]# id user1
uid=1002(user1) gid=1002(user1) groups=1002(user1)

在/home目录下有一个文件夹和用户名相同的文件夹
user1,称之为用户user1的家目录

切换用户
su - 用户名

2 指定用户的基本组、附加组

-g (组名或某组id)指的是用户的基本组
-G (组名后某一个组的id,如果有多个用逗号隔开)指的是附加组
[root@node01 ~]# groupadd caiwu
[root@node01 ~]# useradd -g user1 -G caiwu user3
[root@node01 ~]# 
[root@node01 ~]# id user3
uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu)
  1. 指定用户shell名称
	-s shell名称
	-M				不创建宿主目录 

[root@node01 ~]# useradd -s /sbin/nologin -M apache
  1. 创建系统用户
	-r 

[root@node01 ~]# useradd -r mysql
  1. 指定用户的宿主目录 (即家目录的位置,我们创建用户的时候,默认家目录在/home/目录下,如果想要指定一个用户的一个家目录可以自己手动指定)
[root@node01 ~]# useradd -d /tmp/hadoop hadoop

2、切换用户

su - 用户名称

3、查看用户id信息

[root@node01 ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1)

[root@node01 ~]# id user3
uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu)

[root@node01 ~]# id -u user3
2001
[root@node01 ~]# id -g user3
1001
[root@node01 ~]# id -G user3
1001 2001

[root@node01 ~]# id -u -n user3
user3
[root@node01 ~]# id -g -n user3
user1
[root@node01 ~]# id -G -n user3
user1 caiwu
[root@node01 ~]#

4、设置用户密码

passwd [option] [用户名称]

[root@node01 ~]# passwd user1

  1. 查看用户密码状态

[root@node01 ~]# passwd -S user1
user1 PS 2017-04-11 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

  1. 锁定用户密码(不能登录)

[root@node01 ~]# passwd -l user1
锁定用户 user1 的密码 。
passwd: 操作成功
[root@node01 ~]# passwd -S user1
user1 LK 2017-04-11 0 99999 7 -1 (密码已被锁定。)

  1. 解锁用户密码

[root@node01 ~]# passwd -u user1
解锁用户 user1 的密码。
passwd: 操作成功
[root@node01 ~]# passwd -S user1
user1 PS 2017-04-11 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@node01 ~]#

  1. 强制用户密码过期

[root@node01 ~]# passwd -e user1
正在终止用户 user1 的密码。
passwd: 操作成功

5、修改用户信息

usermod [option] 用户名称

-u UID 
-g 组名称
-G 组名称
-s shell名称

[root@node01 ~]# usermod -aG caiwu user3
[root@node01 ~]# id user3
uid=2001(user3) gid=1001(user1) 组=1001(user1),2001(caiwu),2004(shichang)

6、删除用户

userdel [option] 用户名称

[root@node01 ~]# userdel user1

[root@node01 ~]# userdel -r user2 >>>同时删除用户的宿主目录

用户组管理

1、创建用户组

groupadd 用户组名称

2、删除用户组

groupdel 用户组名称

[root@node01 ~]# groupadd jishu
[root@node01 ~]# useradd tom
[root@node01 ~]# useradd mike
[root@node01 ~]# useradd jerry

[root@node01 ~]# usermod -G jishu tom
[root@node01 ~]# usermod -G jishu jerry
[root@node01 ~]# usermod -G jishu mike

[root@node01 ~]# grep "jishu" /etc/group
jishu❌2005:tom,jerry,mike

[root@node01 ~]# gpasswd -d tom jishu
正在将用户“tom”从“jishu”组中删除

[root@node01 ~]# grep "jishu" /etc/group
jishu❌2005:jerry,mike
[root@node01 ~]#

用户操作环境配置文件:

从/etc/skel目录复制而来

[root@node01 ~]# ls -a /home/userA/
. .. .bash_logout .bash_profile .bashrc .mozilla

.bashrc 打开新终端 /etc/bashrc
.bash_profile 用户登录系统 /etc/profile
.bash_logout 注销系统

示例:设置命令别名

alias 命令别名='命令'

针对单个用户设置别名:

[root@node01 ~]# vim /home/userA/.bashrc
alias ipshow='cat /etc/sysconfig/network-scripts/ifcfg-eth0'

[root@node01 ~]# source /home/userA/.bashrc

针对所有用户设置别名:

[root@node01 ~]# vim /etc/bashrc
alias ipshow='cat /etc/sysconfig/network-scripts/ifcfg-eth0'

[root@node01 ~]# source /etc/bashrc

文件目录权限管理

常规权限:
r read 读取 4
w write 写入 2
x execute 执行 1

文件:
r 查看文件内容(cat/more/less/head/tail/grep)
w 编辑文件内容(vim)
x shell/python脚本

目录:
r 查看目录下的文件(ls /tmp)
w 修改目录下的文件(新建、删除、mv)
x 切换目录(cd)

查看文件权限

[root@node01 ~]# ls -l /etc/fstab
-rw-r--r--. 1 root root 465 7月 28 2016 /etc/fstab

查看目录权限

[root@node01 ~]# ls -ld /etc/
drwxr-xr-x. 136 root root 8192 4月 11 13:48 /etc/

设置文件目录权限

  1. chmod 修改权限

chmod {augo}{+-=}{rwx} 文件名称

a	all 	所有
u	user	属主用户
g	group   属组
o	other	其他

[root@node01 ~]# chmod a+x /test/1.txt
[root@node01 ~]# chmod g=rw /test/3.txt

chmod nnn 文件名称

[root@node01 ~]# chmod 600 /test/4.txt

  1. 修改文件的属主、属组

chown 用户名称.用户组名称 文件名称

[root@node01 ~]# chown user1.caiwu /test/1.txt

[root@node01 ~]# chown user1 /test/2.txt

[root@node01 ~]# chown root.caiwu /test/4.txt

仅修改属组:

chgrp 用户组名称 文件名称

[root@node01 ~]# chgrp caiwu /test/3.txt

方法2) facl ---- 文件访问控制列表

设置权限:

针对单个用户设置权限

setfacl -m u:用户名:权限 文件名称

[root@node01 ~]# setfacl -m u:user4:r /test/3.txt

[root@node01 ~]# getfacl /test/3.txt
getfacl: Removing leading '/' from absolute path names

file: test/3.txt

owner: user1

group: user3

user::rw-
user:user4:r--
group::rwx
mask::rwx
other::r-x

针对单个用户组设置权限

setfacl -m g:用户组名称:权限 文件名称

删除facl权限

针对单个用户删除权限

setfacl -x u:用户名 文件名称

[root@node01 ~]# setfacl -x u:user4 /test/3.txt

针对单个用户组删除权限

setfacl -x g:用户组名称 文件名称

特殊权限:
suid 4
sgid 2
sticky bit 1 # chmod 644 file01 # chmod 6644 file02 # chmod 2700

1、suid

作用:普通用户在执行命令期间,会临时获取到命令属主用户对操作系统的权限

[root@node01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

设置suid权限

chmod u+s 文件名称

2、sgid

针对目录设置
作用:目录拥有sgid权限后,在目录下新创建的文件会继承目录的属组信息

设置sgid权限

chmod g+s 目录名称

[root@node01 ~]# ls -ldh /linux/
drwxr-sr-x. 2 root caiwu 18 4月 11 15:37 /linux/

3、sticky bit

针对目录设置
作用:
只有目录下文件的属主用户、目录属主用户及root可删除该文件

[root@node01 ~]# ls -ldh /tmp/
drwxrwxrwt. 8 root root 4.0K 4月 11 15:45 /tmp/

设置sticky bit权限

chmod o+t 目录名称

chmod, chown, chgrp, setfacl

共同选项:-R

推荐阅读