linux-用户及权限管理

简介

刚接触linux的用户权限的时候,以为linux的权限是跟window一样,用户分角色,然后角色设定其访问权限,然后在linux系统中新建了一个新用户后,查了很多资料,怎么也看不到他权限的配置。后来查了很多博客,大概了解了下,linux的权限是其实是文件的权限及指令的执行权限(如果不对希望指正),说到底,用户拥有哪些目录的访问权限,哪些文件的执行权限,实际上就是各个文件的权限的总和。linux新建了的普通用户,是有其默认的权限,只能访问其拥有权限的目录,及拥有普通指令执行权限。

用户及分组管理

用户管理

用户操作主要涉及到用户增加,用户修改,用户删除
1.useradd或adduser增加用户
在终端输入useradd –help,可以看到用户增加操作所用到的选项
用户增加
指令
useradd [options] username
选项
-c 添加一段注释
-d 指定用户的主目录
-g 指定用户的所属分组id或者分组名
-G 指定用户的附加组id或附件组名,多个用逗号隔开
-s 指定用户的运行shell
-m 创建用户的主目录,和d一起使用可在主目录不存在的情况下创建目录
-u 指定用户的id,与o一起使用时候允许与其他用户公用id
-o 允许重复的用户id存在

创建时候添加注释
[root@localhost /]# useradd -c ‘zhangsan gdut’ zhangsan
查看该用户
[root@localhost /]# more /etc/passwd
可以看到该用户的注释
zhangsan:x:1001:1001:zhangsan gdut:/home/zhangsan:/bin/bash

创建用户指定分组及目录
[root@localhost /]# useradd -d /home/zhangsanhome -m -g root -G chenjiayu,adm -s /bin/sh zhangsan
该指令指定了用户的目录/home/zhangsanhome,当该目录不存在的时候,会创建该目录,并制定了用户的主要分组root,附件分组chengjiayu,adm,运行的shell /bin/sh。

创建用户目录已存在的情况
这里写图片描述
可以看到,用户还是可以创建,但是文件没有覆盖掉,因为之前用户主目录中的hello文件夹还存在

创建用户指定用户id
[root@localhost home]# useradd -u 0 -o zhangsan
查看该用户
[root@localhost home]# id zhangsan
结果
uid=0(root) gid=0(root) groups=0(root)

2.usermod修改用户
在终端输入usermod –help可以看到修改用户所需要用到的选项,其中的用法大部分与useradd相同,相同的指令暂不做解释了
用户修改
指令
usermod [options] username
选项
-l 更换新用户
-L 锁定用户,使得用户不能登录
-e 修改账号的有效期限,日期格式为/MM/DD/YY 或 YYYY-MM-DD
-f 设置账号的缓冲期限,修改在密码过期后多少天即关闭该帐号,-1为关闭,0为立即生效
-U 解除账号的锁定

更换新用户
usermod -l lisi zhangsan

锁定用户
usermod -L lisi

解锁用户
usermod -U lisi

修改账号期限
usermod -e 2016-09-10 lisi

设置缓冲期
usermod -f 10 lisi

3.删除用户userdel
userdel的用法比较简单,userdel -r username,指将该用户及用户在文件系统中的文件都删除了,如果只是单单删除用户但是保持其档案的话,采用userdel username就行了。

4.设置用户密码passwd
惯例passwd –help
设置密码
指令
passwd [OPTION…]
选项
-k 更改有效的账号的密码,失效的用户的密码更改不了,如用户被锁定时,用户更改不了密码,但是密码过期的用户是更换得了密码的。欢迎补充
-d 删除用户密码,用户登录不需要密码
-l 锁定用户,让用户不能登录
-u 解锁用户
-e 使用户密码过期,用户下次登录时候更改密码
-x 用户密码的最大使用期限
-n 用户密码更改的最小间隔,即用户更改密码的时间间隔必须大于这个时间
-w 用户密码在过期前的前几天提示警告信息
-i 用户密码过期几天后,用户会被禁用
-S 用户密码的状态信息

设置用户密码
passwd lisi,在终端输入指令,然后按照指令操作完成密码的设置。
改变密码

更改有效的用户密码
passwd -k lisi,如下图的操作
这里写图片描述
图中第一部分把用户锁定了,更改用户密码失败;第二部分把用户解锁了,更改用户密码成功了;第三部分让用户密码过期,更改用户密码也成功了。可见-k选项是更改有效用户的密码

分组管理

1.增加分组groupadd
groupadd –help
增加分组
指令
groupadd [options] GROUP
选项
-g 创建分组的时候指定分组id,默认为使用当前最大的 GID 加1
-o 与-g一起使用的时候,可以重复使用组的gid号
-r 创建系统组,gid小于500

创建分组
groupadd -g 1001 zhangsan

2.修改分组
groupmod –help
修改分组
指令
groupmod [options] GROUP
选项
-g 改变分组的gid
-n 创建新分组

修改分组
groupmod -g 1002 -n lisi zhangsan
查看该分组
cat /etc/group |grep lisi
可以查看到该分组的gid变成了1002
lisi:x:1002:

3.删除分组
groupdel –help
删除分组
指令
groupdel [options] GROUP
选项

删除分组
groupdel lisi

权限管理

用户执行系统命令

1.切换到对应用户
想让普通用户拥有对应指令的执行权限的方法之一是把当前用户切换到拥有指令执行权限的用户,此方法不推荐使用,一切换就是拥有所有的权限,如果误操作,后果不堪设想。
指令 su root或su -root,su root表示不把当前的环境变量切换到root用户下,su -root则反之

2.设置用户具有其他用户命令的执行权限
让登录的用户拥有其他用户部分指令的执行权限的方法是在/etc目录下得sudoers文件夹里面编辑,语法是who which host=(whom) command ,谁在哪台机子上以什么样的身份执行什么样的指令。编辑完了之后,对应用户可以用sudo command来执行对应的指令,相对于切换用户,该方法要安全的多。

步骤:
1)在/etc目录下编辑sudoers文件:visudo
2)添加lisi ALL = (ALL) NOPASSWD: ALL
3)按esc,:wq保存退出
注:这样用户lisi就有其他所有用户所有指令的执行权限,并且在执行命令的时候,不需要进行密码的验证

当然,sudoers不是这样就完的,如果要用户在特定主机上能执行指定的多条指令的时候,按照上面的办法一条条添加,不是显得我们的linux太绰了。linux是采用别名来解决问题的,有用户别名,主机别名,执行身份别名,命令别名。

用户别名User_Alias格式
User_Alias USERALIAS = zhangsan,wangwu,zhaoliu,%zhangsan
注:上面定义了一个用户别名,用来代替多个用户和分组的情况,%zhangsan,表示zhangsan这个分组

主机别名Host_Alias格式
Host_Alias HOSTALIAS = 192.168.2.197,192.168.2.198,192.168.2.196,server
注:server是主机名

执行身份别名Runas_Alias格式
Runas_Alias RUNASALIAS = zhaoliu,wangwu

命令别名Cmnd_Alias格式
Cmnd_Alias CMNDALIAS = /sbin/useradd,/sbin/userdel,/sbin/usermod
注:命令要用全路径,避免与其他路径的同名命令冲突

示例1
lisi HOSTALIAS = (root) CMNDALIAS
让用户在HOSTALIAS所包含的主机中,能以root的身份执行用户增加,删除,修改的指令

示例2
john ALPHA = /usr/bin/su [!-], !/usr/bin/su *root
该例子抄自man sudoers里面的例子,表示john用户能用切换到除了root的任意用户,但是其不能执行su指令的任何选项,有关里面的正则表达式,请man sudoers。

示例3
pete HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
该例子抄自man sudoers里面的例子,表示用户pete能在HPPA所包含的主机里面执行修改密码的指令,不包括选项,但是不能修改root的密码

示例4
fred ALL = (DB) NOPASSWD: ALL
该例子抄自man sudoers里面的例子,表示用户fred能以DB所包含的身份在任何主机上执行任何命令,并且不需要进行认证

注:man sudoers查看详细的描述,英文不好的人就比较麻烦了。

文件权限管理

1.改变文件访问权限chmod
执行权限:文件拥有者
chmod –help
授权文件

指令
chmod [option] mode file

选项
-c 当文件被改变的时候,输出修改的信息
-f 静默模式,抑制住大多数的错误信息,错误信息不输出
-v 运行时显示详细处理信息
-R 处理指定的目录及子目录下的所有文件
–reference=file 按照file的权限处理当前文件

mode
chmod [augo] [+-=] [rwx] file
对象
a:所有人及分组的权限
u:当前拥有者的权限
g:当前拥有者分组的权限
o:其他人的权限

操作符
+:表示增加权限
-:表示减去权限
=:设置权限,假如当前用户本来有rwx的权限,设置u=x,那当前用户就只有执行的权限了

mode
r:读权限,用数字表示是4
w:写权限,用数字表示是2
x:执行权限,用数字表示是1
注:rwx->7,rw->6,wx->3,rx->5

示例1
给文件拥有者及分组分配所有的权限
chmod 777 file
chmod a=rwx file

示例2
给文件拥有者及分组分配读写权限
chmod ug=rw file

示例3
给文件拥有者分配读写执行权限,给分组分配读和执行权限,给其他人分配执行的权限
chmod u=rwx,g=rx,o=x file
chmod 751 file

示例4
给文件拥有者增加读写权限,其他人增加执行权限
chmod u+rw,o+x file

2.改变文件拥有者chown
执行权限:root
chown –help
改变文件拥有者1
改变文件拥有者2
指令
chown [OPTION]… [OWNER][:[GROUP]] FILE
or: chown [OPTION]… –reference=RFILE FILE
选项
-c 当文件被改变的时候,输出修改的信息
-f 静默模式,抑制住大多数的错误信息,错误信息不输出
-v 运行时显示详细处理信息
-R 处理指定的目录及子目录下的所有文件
–reference 把文件的拥有者及分组设置成指定文件的拥有者及分组

示例1
将文件拥有者设置成root
chown root /u

示例2
将目录/u拥有者设置成root,分组设置成staff
chown root:staff /u

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值