代码改变世界

Linux 命令—用户 群组 文件权限

2020-04-21 18:57  清晨、午后  阅读(339)  评论(0编辑  收藏  举报

1.用户身份与密码

useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名

选项与参数:
-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号; 
-g :后面接的那个组名就是我们上面提到的 initial group 啦~
 该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。 
-G :后面接的组名则是这个账号还可以加入的群组。
 这个选项与参数会修改 /etc/group 内的相关资料喔!
-M :强制!不要建立用户家目录!(系统账号默认值) 
-m :强制!要建立用户家目录!(一般账号默认值) 
-c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~
-d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径! 
-r :建立一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)
-s :后面接一个 shell ,若没有指定则预设是 /bin/bash 的啦~
-e :后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段, 亦即账号失效日的设定项目啰; 
-f :后面接 shadow 的第七字段项目,指定密码是否会失效。0 为立刻失效, -1 为永远不失效(密码只会过期而强制于登入时重新设定而已。)

---------- 

passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号

选项与参数:
--stdin :可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助!
-l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
-u :与 -l 相对,是 Unlock 的意思!
-S :列出密码相关参数,亦即 shadow 文件内的大部分信息。
-n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数 
-x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码 
-w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数 
-i :后面接『日期』,shadow 的第 7 字段,密码失效日期

1. useradd username  // 创建新用户

    adduser  // Ubuntu 下可用该命令

2. userdel username  // 删除用户

  deluser

3. usermod  // 修改用户属性

4. passwd  // 修改用户密码,锁定用户等

5.chage  // 密码参数显示

6.id  // 查询账号相关信息

7.chsh  // 查询系统可用的shell,修改用户的shell

8.chfn  // 设置用户的特殊信息,如电话号码等

*用户相关的命令,Centos 和 Ubuntu 有差异

2.群组管理

groupadd [-g gid] [-r] 组名

选项与参数:
-g :后面接某个特定的 GID ,用来直接给予某个 GID ~ 
-r :建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

1. groupadd   // 创建用户组
2. groupdel
3. groupmod //跟 usermod 类似的
4. gpasswd //群组管理员功能

3.使用外部身份认证系统

LDAP   NIS   authconfig-tui

4.文件类型与权限

1. 类型  linux 中文件用字符区分(如下第一个字符)

drwxr-xr-x   6 root root         120 Jan 12 10:18 disk/
-rwxrwxrwx  1 lyb  lyb   24328 Jan 12 13:28 .bash_history   
-  // 普通文件    
d  // 目录文件
l  // 链接文件
b  // 块设备文件
c  // 字符设备文件
p  // 管道文件

2. 权限(对应上图第2-10字符)

 所有者、所属组、其他用户(由此3组共9个符号组成权限位)

rwx(读写执行,对应数字421,无权限用 - 占位)

每个组可有一个数字代替,如,755(所有者可读可写可执行,所属组...)

 3. 文件特殊权限

SUID  // 让执行者临时拥有属主权限,设置后所有者执行权限位变成s或者S,原本有执行权限的替换为s,否则替换为S

如存储密码的文件 /etc/shadow ,普通用户无法修改,但是普通用户却可以修改自己的密码,就是因为 /bin/passwd 文件有特殊权限 SUID

权限赋值:chmod u+s filename

取消权限:chmod u-s filename

----------.  1 root root    685 1月  12 18:51 shadow
-rwsr-xr-x. 1 root root     27832 6月  10 2014 passwd

SGID  // 1.让执行者临时拥有属组权限 2.目录设置该权限时,在目录里创建文件将自动继承该目录的用户组,既新建的文件所属组是继承父目录的,不是创建者的基本用户组,设置后所属组执行权限位变成s或者S

权限赋值:chmod g+s filename

取消权限:chmod g-s filename

SBIT  // 具有该权限的目录只能被所有者删除,设置后其他用户执行权限位变成t或者T,原本有x执行权限的替换为t,否则替换为T

权限赋值:chmod -R o+t filename

 取消权限:chmod -R o-t filename

 4. 修改文件权限和所有者、所属组、隐藏权限

chmod 755 filename  // 修改文件权限

chown root:vrv filename  // 设置文件所有者:所属组

chattr   // 文件的隐藏属性

chattr  +i filename   // 追加隐藏权限i,使文件不能被修改
chattr  -i filename   // 取消隐藏权限i,使文件恢复能被修改

隐藏权限标识位

i    // 是否可修改    
a    // 仅允许追加,无法覆盖删除    
S    // 内容变更后立即同步到硬盘
s    // 彻底删除,无法恢复
A    // 不在修改最后的访问时间
b
D
d
c
u    // 删除文件后依然保留其在硬盘中的数据,方便日后恢复
t    
X

 

lsattr  // 查看文件的隐藏权限

[root@localhost vrv]# lsattr a.sh
----i----------- a.sh

还有一个改变权限的方法,基本上就九个权限分别是(1)user (2)group (3)others 三种身份啦!那么我们就可以藉由 u, g, o 来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成 r, w, x 啰!也就是可以使用底下的方式来看:

chmod u=rwx,g=rx,o=r filename  // 分别设置每个角色的权限
chmod a+w .bashrc  // 全部加上写权限
chmod a-x .bashrc  // 全部去除执行权限
chmod o-x .bashrc  // 其他人去除执行权限

 

 

 5. 文件访问控制列表 ACL

文件访问控制列表是为了设置某个其他用户对某个文件的访问权限(一般权限、特殊权限、隐藏权限的普通设置都是针对一类用户设置的,如所有者、所属组、其他用户),如 lyb 可以有权读写 /etc/a.sh,而其他用户无权限

还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;

-rw-r--r--. 1 root root 6 1月  12 21:10 a.sh

 权限末尾后的 . 表示该文件没有 ACL,如果为 + ,则表示该文件有 ACL 属性

 setfacl   // 管理文件的 ACL 规则

setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名

选项与参数: 
-m :设定后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除『所有的』 ACL 设定参数; 
-k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍; 
-R :递归设定 acl ,亦即包括次目录都会被设定起来; 
-d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

setfacl -m u:lyb:rx acl_test1  //对于文件 acl_test1,设定用户 lyb 具有可读、可执行

getfacl filename   // 查看文件的 ACL 信息

使用默认权限设定目录未来文件的 ACL 权限继承『 d:[u|g]:[user|group]:权限 』
setfacl -m d:u:myuser1:rx /srv/projecta

5. 使用者身份切换 

1. su 与 sudo 服务

su - vrv  // 切换用户到 vrv ,- 表示完全切换,如果省略 vrv,则默认切换到 root 用户下,此时需要输入被切换者的密码(su - 时输入root密码)

su  // 与 su - 的区别是 shell 环境的,su 使用普通用户的shell环境,su - 读取被切换者的shell环境

sudo cd /root  // 普通用户以 root 用户执行命令,需要输入普通用户的密码,配置文件在 /etc/sudoers  中

 

===============================================