1. 用户和密码的创建修改和删除

用户相关的配置文件

/etc/passwd文件总共分为7部分
用户名:用户密码:UID:GID:用户的描述:用户的家目录:登入shell
/etc/shadow文件总共分为9部分
用户名:密码位:密码上一次修改时间:密码最小存活时间:密码最大存活时间:密码过期之前多少天提醒用户:密码过期之后多少天用户过期:账户过期时间(与密码上一次修改时间无关):保留位


用户相关命令

id ----------------------------------查看用户的信息(用户名,UID,GID,附加组等信息)
useradd&adduser ------>创建用户命令
-u:指定用户的UID

[root@centos7 ~]# useradd -u 2000 user1
[root@centos7 ~]# id user1
uid=2000(user1) gid=2000(user1) groups=2000(user1)

-g:指定用户的主组

[root@centos7 ~]# useradd -g user1 user2
[root@centos7 ~]# id user2
uid=2001(user2) gid=2000(user1) groups=2000(user1)

-G:指定用户的附加组信息

[root@centos7 ~]# useradd -G user1 user3
[root@centos7 ~]# id user3
uid=2002(user3) gid=2002(user3) groups=2002(user3),2000(user1)

-c:用户的描述信息

[root@centos7 ~]# useradd -c "ceshixinxi" user4
[root@centos7 ~]# cat /etc/passwd | grep user4
user4:x:2003:2003:ceshixinxi:/home/user4:/bin/bash

-s:指定用户的登入shell

[root@centos7 ~]# useradd -s /sbin/nologin user5
[root@centos7 ~]# grep user5 /etc/passwd
user5:x:2004:2004::/home/user5:/sbin/nologin

-d:指定用户的家目录

[root@centos7 ~]# useradd -d /user6 user6

-o:不检查UID的唯一性,相当于创建有两个登录名的用户

[root@centos7 user6]# useradd -o -u 2000 user7
[root@centos7 user6]# id user1
uid=2000(user1) gid=2000(user1) groups=2000(user1)
[root@centos7 user6]# id user7
uid=2000(user1) gid=2000(user1) groups=2000(user1)

-N:不创建私有组,指定users组做为主组

[root@centos7 user6]# grep user8 /etc/passwd
user8:x:2006:100::/home/user8:/bin/bash

-r:创建系统用户(CentOS 6之前的 <500,Centos 7 <1000)

[root@centos7 user6]# useradd -r user9
[root@centos7 user6]# grep user9 /etc/passwd
user9:x:991:986::/home/user9:/bin/bash


usermod -------------------->更改用户的信息
-u newUID user:修改用户的uid

[root@centos7 user6]# usermod -u 3000 user1
[root@centos7 user6]# id user1
uid=3000(user1) gid=2000(user1) groups=2000(user1)

-g newGID user:修改用户名的主组

[root@centos7 user6]# usermod -g 2002 user1
[root@centos7 user6]# id user1
uid=3000(user1) gid=2002(user3) groups=2002(user3)

-G newGID user:修改用户的附加组

[root@centos7 user6]# usermod -G 2006 user1
[root@centos7 user6]# id user1
uid=3000(user1) gid=2002(user3) groups=2002(user3),2006(user7)

-a 与G配合使用,在添加附加组的时候,不会影响之前的附加组
-s shell名 user:设置用户的登入shell
-c "描述信息" user:修改用户的描述信息
-d /newname 用户名 :修改用户的家目录,新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
l newname oldname:修改用户名
-L user:锁定用户,相当于在/etc/shadow文件中的密码位前添加!

[root@centos7 user6]# usermod -L user1
[root@centos7 user6]# grep user1 /etc/shadow
user1:!$6$PsV1.zv4$dGgmKQwIA1Hed/PkSqFdWApsysJ.3t3a4kndhC48fEftgmAauS9cFE2dyhpJ.fhfFAe/ki5LqZogFOHGAAq8b/:17551:0:99999:7:::

-U user:解锁用户

[root@centos7 user6]# usermod -U user1
[root@centos7 user6]# grep user1 /etc/shadow
user1:$6$PsV1.zv4$dGgmKQwIA1Hed/PkSqFdWApsysJ.3t3a4kndhC48fEftgmAauS9cFE2dyhpJ.fhfFAe/ki5LqZogFOHGAAq8b/:17551:0:99999:7:::

-e YYYY-MM-DD:指明用户账户过期日期

[root@centos7 user6]# usermod -e 2019-02-20 user1
[root@centos7 user6]# grep user1 /etc/shadow
user1:$6$PsV1.zv4$dGgmKQwIA1Hed/PkSqFdWApsysJ.3t3a4kndhC48fEftgmAauS9cFE2dyhpJ.fhfFAe/ki5LqZogFOHGAAq8b/:17551:0:99999:7::17947:


userdel -------------------->删除用户
-r 用户名:删除用户及其和用户有关的所有文件


passwd -------------------->设置密码
passwd username :指定要修改密码的用户名(仅root可以使用)
-l :锁定用户
-u:解锁用户
-e:强制用户下次登录更改密码
-n:指定密码最短使用期限
-x:指定密码最大使用期限
-w:提前多少天开始警告
--stdin 从标准输入接收用户面
举例:echo 123456 |passwd --stdin root


chage --------------------->用来修改密码策略
-m:密码最小使用天数,如果为零将不受限制,随意更改。
-M:密码最大使用天数。
-w:密码过期前的多少天提醒用户。
-E:账户过期时间,如果超过该天数,账户将不可使用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:显示出当前用户的密码策略。


2. 组的创建修改和删除

组相关的配置文件

/etc/group文件分为四部分
组名:密码位:GID:附加组
/etc/gshadow文件分为四部分
组名:密码:管理员:组成员

组相关命令

**groupadd ------------------->用来创建组

-g GID 组名:创建指定GID的组

[root@centos7 user6]# groupadd -g 3000 admins
[root@centos7 user6]# grep admins /etc/group
admins:x:3000:

groupmod------------------->用来修改组信息

-n newname 组名:修改组名
-g newGID 组名:修改GID

groupdel ------------------->用来删除组

groupdel 组名:删除组

gpasswd ----------------------->用来设置组密码
gpasswd 组名:设置组密码
-a username 组名:将某用户以附加组加入到该组(管理员就可以使用)
-A username 组名:用来设置某组的管理员(仅root使用)
-d username 组名:将某个用户从改组中删除(管理员就可以使用)
-M username 组名:设置某族的用户列表(仅root使用)
相关命令
newgrp 组名:用来临时改变主组,若改用户附属组属于改组,则不用输入密码,若不属于,则需要输入密码。


groupmems ---------------------用来修改用户的附加组
-g 组名 -a username:将某用户以附加组的方式加入到某组中
-g 组名 -d username:将某用户从该组中删除
-g 组名 -p :清空所有组成员
-g 组名 -l:列出该组中有哪些成员


groups 用户名 : 查看指定用户属于那些组
chown------------------------------------用来更改文件或目录所属人,也可以用来更改文件或目录的所属组
chown 用户名:组名
chown 用户名.组名
-R 递归
--reference=file1 file2:复制所属组
chgrp 组名 -----------------------------用来更改文件或目录的所属组
-R 递归


3. 普通权限

权限的作用对象:owner(所属人u)、group(所属组g)、other(其他人o)
普通权限分为:Read(读:r:4)、Write(写:w:2)eXe(执行:x:1)
设置权限的命令:chmod
chmod u+rwx file :给file文件所属人添加rwx权限
chmod u=rwx file:给file文件所属人赋予rwx权限
chmod u-rwx file:给file文件所属人减去rwx权限
chmod g+rwx file :给file文件所属组添加rwx权限
chmod g=rwx file:给file文件所属组赋予rwx权限
chmod g-rwx file:给file文件所属组减去rwx权限
chmod o+rwx file :给file其他人添加rwx权限
chmod o=rwx file:给file其他人赋予rwx权限
chmod o-rwx file:给file其他人减去rwx权限
chmod a+rwx file:给全部人添加rwx权限
chmod a-rwx file:给全部人减去rwx权限
chmod a=rwx file:给全部人赋予rwx权限
chmod 777 file:给全部人添加rwx权限,第一位代表所有人,第二位代表所属组,第三位代表其他人。


权限的作用在文件时:
1)当仅有r权限时,用户可以读取文件内容。
2)当仅有W权限时,用户可以修改内容但是只可以覆盖和追加。
3)当仅有x权限时,无作为。
4)当有rw权限时,用户可以读写文件。
5)当有rx权限时,用户可以读文件和执行文件。
6)当有wx时,权限等同于仅有W权限。
常见权限有r--- rw- rwx
权限作用在目录上时:
1)当仅有r权限时,用户可以短列出文件名
2)当仅有w权限时,用户无作为。
3)当仅有x权限时,用户可以进入目录,并且在知道文件目录的情况下可以访问子文件。
4)当有rw权限时,权限等于仅有r。
5)当有rx全是时,用户进入,长列出
6)当有wx权限时,用户进入可以创建删除文件,但是不能使用通配符
目录常见权限r-x rwx


4. 高级权限

高级权限分为:Suid、Sgid、Sticky
chmod u+s file
Suid:指加入该权限后(作用在一个二进制文件上),当执行一个二进制文件权限会临时更改为该二进制文件的所属人。


Sgid:指加入该权限后(作用在目录或二进制文件),当加入该权限后,对于二进制文件来说,会临时的拥有所属组的权限,对与一个目录来说,当加入该权限,在该目录下创建文件或目录,所属组会自动变成该组。
Sticky:当对一个目录加了 该权限时,仅文件所属人,目录所属人及其root才能删除,其他人不能删除。


5. 特定权限

chattr:
+a:不能删除,不能改名,不能修改,可以追加

[root@centos7 app]# chattr +a 1.txt
[root@centos7 app]# rm -rf 1.txt
rm: cannot remove ‘1.txt’: Operation not permitted
[root@centos7 app]# mv 1.txt 2.txt
mv: cannot move ‘1.txt’ to ‘2.txt’: Operation not permitted
[root@centos7 app]# touch 123 > 1.txt
-bash: 1.txt: Operation not permitted
[root@centos7 app]# touch 123 >> 1.txt

+i:不能删除,不能改名,不能修改,不能追加。

[root@centos7 app]# chattr +i 1.txt
[root@centos7 app]# lsattr 1.txt
----i----------- 1.txt

lsattr:查看权限。


6. ACL

setfacl:用来在命令行里设置权限,可以针对用户,组来设置权限
acl 设置格式setfacl -m u:user:rwx file
前面选项:
-m:添加acl
-X:批量导入
-d:设置默认权限
-k:清除默认权限
-b:清楚acl属性
后面选项:
-u:指定用户权限
-g:指定附加组权限
-m:指定上线阈值
-o:指定其他人权限
举例使用:
setfacl -m u:user:rwx file :给user添加rwx
setfacl -m g:user:rwx file:给user组添加rwx
setfacl -m d:u:user:rwx file:添加默认acl权限
setfacl -X file.acl file :将file.acl文件中权限给file文件
setfacl -k file :清除默认权限
setfacl -b file :清除acl属性
getfacl:用来查看设置的acl权限。

[root@centos7 app]# getfacl 1.txt

#file: 1.txt
#owner: root
#group: root
user::rw-
group::r--
other::r--