用户,组,文件权限管理
用户和组的配置文件
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd文件格式:
/etc/passwd
查看方式:
getent passwd [username]
详细解析:
magedu:x:1000:1000:magedu:/home/magedu:/bin/bash
用户名:
密码位:x
pwconv (默认) 将密码映射到了/etc/shadow
pwunconv 将密码保存到/etc/passwd中,删除/etc/shadow文件
UID:
每个用户都有一个UID,UID为0时,说明是管理员帐户。
CentOS6 1-499为系统用户,预留
CentOS7 1-999为系统用户,预留
GID:
主要组:每个有且仅有一个主要组,当用户创建时,自动创建一个与用户同名的组作为主要组。
辅助组:用户可以有零个或多个辅助组。
GECOS(描述位可以为空):
chfn username 设置用户的描述
finger username (默认没有安装) 查看用户的信息
修改描述位:chfn magedu(GECOS)
directory:
usermod -d /home/magedunew magedu
编辑directory: nano /etc/passwd
当directory为空时,则用户登陆不上
默认的登录Shell
usermod -s /sbin/nologin magedu
chsh -s /sbin/nologin maged
当shell是sbin/nologin 则所有的用户都登录不上,通过命令usermod 可以修改回来(如下:)
也可以通过usermod修改家目录
usermod -d /home/magedunew magedu
usermod -s /sbin/nologin magedu
扩展:
密码的显示与隐藏
用户信息登陆可以查看到普通登陆密码:
[aaa@qq.com ~]# pwunconv
[aaa@qq.com ~]# cat /etc/passwd
普通用户密码被隐藏:
[aaa@qq.com ~]# pwconv
[aaa@qq.com ~]# su - magedu
Last login: Thu Jul 20 19:08:49 CST 2017 on pts/2
[aaa@qq.com ~]$ cat /etc/passwd
注:
用户的密码被存放在 /etc/shadow(默认的)
[aaa@qq.com ~]# ls /etc/shadow -l
-r——–. 1 root root 1454 Jul 20 19:13 /etc/shadow
对root来说通过
[aaa@qq.com ~]# cat /etc/shadow
可以直接查看到用户密码
shadow文件格式:
username
getent shadow [username]
密码位: sha512 sha256 md5
authconfig –passalgo=sha256 –update
!!用户被锁定
usermod -L 锁定用户
usermod -U 解锁用户 -p password
密码上一次的修改日期(从1970-1-1到修改的时间经过了多少天来表示)
密码最小存活期
密码最大存活期
密码过期之前提前多少天提醒用户(在正确登录时)
密码过期之后多少天帐户过期(在正确登录时)
帐户过期时间(自1970-1-1到该天经过了多少天来表示)
保留位
authconfig –passalgo=sha256 –update
chage -l username 显示帐户的密码信息
-d 指定密码的上次修改时间(yyyy-mm-dd)
-E 指定账户的过期时间
-I 密码过期之后多少天帐户过期
-m 设置最小存活时间
-M 设置最大存活时间
-W 设置密码过期前的提醒时间
chage username 交互式修改用户的密码策略
[aaa@qq.com ~]# getent shadow magedu
magedu:
1.
修改加密方式的方法:
[aaa@qq.com ~]# authconfig –passalgo=md5 –update
查看:[aaa@qq.com ~]# less /etc/login.defs
(帮助键[aaa@qq.com ~]# authconfig –help |grep pass)
加密方式不同,输入的密码相同,加密后不同,
加密方式相同,输入的密码相同,加密后相同,
添加用户:
[aaa@qq.com ~]# useradd kezhang
[aaa@qq.com ~]# passwd kezhang
gshdow文件格式:
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)
创建用户:
useradd [options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c “COMMENT”:用户的注释信息
-d HOME_DIR: 以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
小结:创建用户: useradd
默认值设定:/etc/default/useradd文件中
显示或更改默认设置:
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
chage -l username 显示帐户的密码信息
-d 指定密码的上次修改时间(yyyy-mm-dd)
-E 指定账户的过期时间
-I 密码过期之后多少天帐户过期
-m 设置最小存活时间
-M 设置最大存活时间
-W 设置密码过期前的提醒时间
chage username 交互式修改用户的密码策略
用户属性修改
usermod [OPTION] login
usermod -u newuid username 修改用户的UID
-o -u newuid username 修改用户的uid(可以与已存在用户的uid相同)
-aG 加组名,可以追加辅助组而不用覆盖之前的组
-G “” username 或 usermod -G primarygroup username 清空用户所有的辅助组
-g groupname username 修改用户的主组
-s /sbin/nologin username 修改用户的默认shell
-c ... username 修改用户时指定描述信息。
chfn ... username
-d /.../path username 修改用户的家目录(不会创建,只修改/etc/passwd当中的家目录信息)
-m -d /.../path username 修改用户的家目录信息,并将家目录移动到目的目录并改名。
-L 给用户/etc/shadow中的密码位加!使用户被锁定
-e yyyy-mm-dd 设置一个帐户过期时间
-f days 指定密码过期之后多少天帐户过期
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加组,原来的
附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c ‘COMMENT’:新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移
动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
vipw = vim /etc/passwd
vipw -s = vim /etc/shadow
vigr = vim /etc/group
vigr -s = vim /etc/gshadow
pwck 检查/etc/passwd /etc/shadow
grpck 检查/etc/group /etc/gshadow
删除用户
userdel [OPTION]… login
-r: 删除用户家目录
查看用户相关的ID信息
id [OPTION]… [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
切换用户或以其他用户身份执行命令
su [options…] [-] [user [args…]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的
配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置
文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c ‘COMMAND’
选项:-l –login
su -l UserName 相当于 su - UserName
设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅
root用户权限
passwd: 修改自己的密码
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码
echo “PASSWORD” | passwd –stdin USERNAME
修改用户密码策略
chage [OPTION]… LOGIN
-d LAST_DAY
-E –expiredate EXPIRE_DATE
-I –inactive INACTIVE
-m –mindays MIN_DAYS
-M –maxdays MAX_DAYS
-W –warndays WARN_DAYS
–l 显示密码策略
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
用户相关的其它命令
chfn 指定个人信息
chsh 指定shell
finger
创建组
Groupadd groupname
Useradd username 创建用户的同时也会创建一个同名的组
主组与附加组的创建目录或文件的区别:权限不同 创建文件时继承的信息也不同。
屏幕剪辑的捕获时间: 2017/7/22 10:59
修改和删除组
组属性修改:groupmod
groupmod [OPTION]… group
-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel
groupdel GROUP
设置组管理员
管理员:只能由root任命或撤销,可以同时有多名,以,为间隔。权利:可以修改组密码,可以将用户从该组(辅助组)当中添加或删除。
任命 gpasswd -A xiaoqiao,luren admin
撤消所有管理员:gpasswd -A “” admin
gpasswd -a libai admin 往组中增加用户
gpasswd -d libai admin 将用户从组中删除
gpasswd -r admin 删除组密码
gpasswd -R admin 限制非辅助组用户可以通过newgrp admin获取主组权限。当前密码被删除替换为!
gpasswd -M redhat,libai admin 设置辅助组的成员列表。
groupmems -g admin -a libai (仅能一次加一个用户到组中)
groupmems -g admin -d libai 将指定成员从组中删除
groupmems -g admin -l 列出指定组的成员列表(辅助组)
groupmems -p admin 消除指定组的所有成员。
主管理员的权限:创建修改组密码,加入删除组成员
管理员的任命由root决定:
创建不成功
创建成功
删除管理员(1.设成root2.改成空格):
更改组密码
组密码:gpasswd
设置并显示组密码:
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
更改和查看组成员
groupmems [options] [action]
options:
-g, –group groupname 更改为指定组 (只有root)
Actions:
-a, –add username 指定用户加入组
-d, –delete username 从组中删除用户
-p, –purge 从组中清除所有成员
-l, –list 显示组成员列表
groups [OPTION].[USERNAME]… 查看用户所属组列表
注:groupmems 只能操作辅助组
主组的信息是记录附加组
查看:
或:
修改主组:
Getent group username 查看一个用户有多少组
Groups username 查看一个组有多少用户
id username 可以查看该user的UID GID Groups
文件权限:
一 文件属性操作
chown 设置文件的所有者
chgrp 设置文件的属组信息
分开操作:
同时修改所属人所属组:
所属人不可把文件转交给别人:
仅改目录中的所属人的
修改目录和文件中的所属人的
修改文件所属组:
用户要想把某个文件的所属组改成某个组,首先是这个文件的所属人,
小结:
chown : change owner
owner.group
owner:group
以上只有root才能修改文件的所有人
:group或 .group 文件的owner也可以使用chown修改文件的所属组(owner必须属于目标组)
-R 递归
–reference sourcefile tarfile
chgrp : change group
文件的owner可以修改文件的所属组(owner必须属于目标组)
-R 递归
–reference sourcefile tarfile
chmod –reference 源文件 目的文件
–reference
二
一文件的权限主要针对三类对象进行定义:
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限:
r: Readable
w: Writable
x: eXcutable
普通文件
r: 可以读取文件的内容
cat less more nano vim 执行脚本
w: 可以修改文件的内容
nano vim > >> tee gedit
x: 可以执行该文件
执行脚本
目录文件
r: 用户可以列出目录下有哪些文件(不能查看文件的详细信息)
w: 只有w无意义。
x: 用户可以进入该目录(如果知道文件名,且有相对应的文件权限 ,可以执行对应的操作)
rx: 用户可以进入目录,且可以长列出。
rw:等于只有r
wx: 能进入,能创建能删除,不能列出。故用户能否删除文件与文件自身权限无关。
rwx: 全部权限。
—:null
权限判断的顺序(beta)
先判断是否是文件的所有人,如果是,则执行所属人的权限后结束,如果不是所有人,则判断是否所属组(可以是主组也可以是辅助组),如果是,则执行所属组的权限后结束,如果不是则执行其他人的权限后结束。
所有人->所有组->其他人
数字
Chmod 777 name
rwxrw-r–
111,110,100
764
r:100:4
w:010:2
x:001:1
echo ‘obase=10;ibase=2;111’ |bc(输出10进制,输入2进制,调用bc计算器)
0:—
1:–x
2:-w-
3:-wx
4:r–
5:r-x
6:rw-
7:rwx
修改文件的权限 :字符,数字
修改文件权限
chmod实例:
利用字符设置权限
利用数字设置权限:
X 当文件本身没有x权限时,则跳过,一般用于批量修改多个文件、目录的权限时,自动跳过没有执行权限的文件。
X只能给目录加权限:
利用ugo可以给文件加x
**
3新建文件和目录的默认权限
**
umask值 可以用来保留在创建文件权限
新建FILE权限: 666-umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
非特权用户umask是 002
root的umask 是 022
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示
umask –p 输出可被调用
全局设置: /etc/bashrc 用户设置:~/.bashrc
当umask中全部是偶数时,可以直接减,当umask中包含奇数时,对于目录直接减,对于文件,在奇数所在的位减完后加一
777 rwxrwxrwx 666 rw-rw-rw-
021 —-w—x 021 —-w—x
756 rwxr-xrw- 646 rw-r–rw-
当复制一个文件或目录时,它的最高权限并不是666或777 而是基于源文件减去umask
每一次退出登陆的umask都可能不同,每次登陆会读取配置文件,生效新的配置
~/.bashrc
umask xxx
Umask 设置nano .bashrc
不会立即生效,使用 . .bashrc 和 source .brashrc
练习
1、当用户xiaoming对/testdir 目录无执行权限时,意味着无
法做哪些操作?
无x 有rw
不能进入该目录,不能创建删除,可以列出文件,不能长列出
2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无
法做哪些操作?
可进入目录,可创建删除,不能列出,若已知某个文件一定存在,可以访问
3、当用户wangcai 对/testdir 目录无写权限时,该目录下的
只读文件file1是否可修改和删除?
无w有rs 。 不能删除,不可修改(删除与目录的wx有关,文件能不能该与目录无关与文件自身有关)
4、当用户wangcai 对/testdir 目录有写和执行权限时,该目
录下的只读文件file1是否可修改和删除?
有wx 。可删除,不能修改
扩展:当目录只有w时不能读,不能执行,可写但并不能看到写的东西
5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为
wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
[aaa@qq.com ~]# useradd wangcai
[aaa@qq.com tmp]# groupadd sysadmins
[aaa@qq.com ~]# cd /var/tmp
[aaa@qq.com tmp]# chown wangcai.sysadmins fstab
[aaa@qq.com tmp]# chmod o= fstab
[aaa@qq.com tmp]# ll
权限位映射
SUID, SGID, Sticky
SUID: user,占据属主的执行权限位
s: 属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t: other拥有x权限
T:other没有x权限
实例:
suid
sticky
数字
chmod u+s 4***
g+s 2***
o+t 1***
6 即有suig也有sgid
3 即有sgid也有sticky
5 即有suid也有sticky
7 all
小结:
suid 当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属人的权限。
sgid 当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限。
当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建的文件及目录的所有属均为该目录的所有组。
sticky 当对一个目录作用了sticky之后(只限制组用户,目录的owner不受影响),该目录下的文件仅其所属人才能删除。 sticky 设置在文件上无意义
刘关张,未来创建的文件/目录,其他人没有任何权限,而彼此之间可以相互读写。(三人的主组不相同),且不能删除别人创建的文件。
设定文件特定属性
chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
lsattr 显示特定属性
实例:
1chattr +i
2chattr +a
3 lsattr
注:
执行一个文件的俩种方式:
管理员并若不是组内成员,则并不能享受组内权限
sbin下的命令只有超级管理员能执行(eg:groupmems,usermod)
Bin 下的命令所有人都可以执行(eg:gpasswd)
Which command 可以查看command是哪个路径下的,命令
解:误删除了用户wangcai的家目录,请重建并恢复该用户家
目录及相应的权限属性
a
小编介绍完了,有问题请留言,ta要去休息了。。。。。