Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置

Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置

文章目录:

  • 一、Linux用户管理
    • 1、用户(user)、用户组(group)、其他用户概念(other)
      • 1. 理解Linux的`单用户多任务`,`多用户多任务`概念
      • 2. 用户(user)和用户组(group)概念;
    • finger [options] userName eg: finger bruce finger -l userName finger -s userName
    • 查看主机名和修改主机名
  • 需要root权限(然后输入密码)
    • 2.1 创建用户
      • 2.1.1 用adduser创建用户
    • 3、删除用户
      • 查看用户列表
        • 修改用户名和[密码](https://www.cnblogs.com/52php/p/5677628.html)
  • 二、用户权限管理
    • 1、chmod设置读、写、执行权限
  • 将目录/opt 及其下面的所有文件、子目录的文件主改成 liuhai
  • 将目录/opt 及其下面的所有文件、子目录的文件主改成 liuhai
    • 2、chown设置文案拥有权限
  • 三、setfacl

一、Linux用户管理

1、用户(user)、用户组(group)、其他用户概念(other)

1. 理解Linux的单用户多任务多用户多任务概念

理解Linux的单用户多任务多用户多任务概念

Linux 是一个多用户多任务的操作系统;我们应该了解单用户多任务多用户多任务的概念;


  1. Linux 的单用户多任务

单用户多任务
比如我们以mulaohu用户为例。mulaohu登录系统,进入系后她要打开gedit来写文档,但在写文档的过程中,她感觉少点音乐,所以又打开xmms来点音乐;当然听点音乐还不行,MSN还得打开,此时就是一个mulaohu用户,同时在进行多项任务,就是单用户多任务;这样说来就有点简单了,一个mulaohu用户,为了完成工作,执行了几个任务;当然mulaohu在工作的同时,其它的用户还能以远程登录过来,也能做其它的工作,这就是下面要将的多用户、多任务。

  1. Linux 的多用户多任务

多用户多任务
有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说; 举个例子,比如LinuxSir.Org服务器,上面有FTP用户、系统管理员、web用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma或Yuking兄在管理他们的主页系统和FTP;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样; 值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的。

  1. 用户的角色区分

用户在系统中是分角色的,在Linux系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID(User Identity)和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID唯一的特性;


root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;


虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
(下面我使用重启命令,其实reboot就是一个虚拟用户)Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第1张图片


普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

  1. 多用户操作系统的安全

多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如mulaohu用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有mulaohu一个用户可读可写可编辑就行了,这样一来只有mulaohu一个用户可以对其私有文件进行操作,Linux在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。
从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比。

2. 用户(user)和用户组(group)概念;

1、用户(user)的概念;
通过前面对Linux
多用户的理解,我们明白Linux
是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;
当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org
的网页程序,就是nobody用户;我们匿名访问ftp
时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看
/etc/passwd ;
2、用户组(group)的概念;
用户组(group)就是具有相同特征的用户(user)
的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通
过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现
的;

例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他
们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;
用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
一对一:某个用户可以是某个组的唯一成员;
多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;
三、用户(user)和用户组(group)相关的配置文件、命令或目录;
1、与用户(user)和用户组(group)相关的配置文件;
1)与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;
2)与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;
2、管理用户(user)和用户组(group)的相关工具或命令;
1)管理用户(user)的工具或命令;
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd
和/etc/shadow
文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除
/etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute
a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo
能后面直接执行命令,比如sudo
不需要root
密码就可以执行root
赋与的执行只有root才能执行相应的命令;但得通过visudo
来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi
来编辑
/etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
2)管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow
,如果/etc/gshadow
不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group
,然后删除gshadow文件;
3、/etc/skel 目录;
/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel
目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;
[root@localhost beinan]# ls -la /etc/skel/
总用量
92
drwxr-xr-x 3 root root 4096 8月 11 23:32 .
drwxr-xr-x 115 root root 12288 10月 14 13:44 …
-rw-r–r-- 1 root root 24 5月 11 00:15 .bash_logout
-rw-r–r-- 1 root root 191 5月 11 00:15 .bash_profile
-rw-r–r-- 1 root root 124 5月 11 00:15 .bashrc
-rw-r–r-- 1 root root 5619 2005-03-08 .canna
-rw-r–r-- 1 root root 438 5月 18 15:23 .emacs
-rw-r–r-- 1 root root 120 5月 23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde
-rw-r–r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改
/etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel
下的文件复制到用户的家目录下,然后要用chown
来改变新用户家目录的属主;
4、/etc/login.defs 配置文件;
/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;
比如Fedora

/etc/logins.defs 文件内容;

# *REQUIRED* 
# Directory where mailboxes reside, _or_ name of file,
relative to the 
# home directory. If you _do_ define both, MAIL_DIR takes
precedence. 
# QMAIL_DIR is for Qmail 
# 
#QMAIL_DIR Maildir 
MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件; 
#MAIL_FILE .mail 
# Password aging controls: 
# 
# PASS_MAX_DAYS Maximum number of days a password may be
used. 
# PASS_MIN_DAYS Minimum number of days allowed between
password changes. 
# PASS_MIN_LEN Minimum acceptable password length. 
# PASS_WARN_AGE Number of days warning given before a
password expires. 
# 
PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数; 
PASS_MIN_DAYS 0 注:密码修改之间最小的天数; 
PASS_MIN_LEN 5 注:密码最小长度; 
PASS_WARN_AGE 7 注: 
# 
# Min/max values for automatic uid selection in useradd 
# 
UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID
是从500开始的; 
UID_MAX 60000 注:最大UID为60000# 
# Min/max values for automatic gid selection in groupadd 
# 
GID_MIN 500 注:GID 是从500开始; 
GID_MAX 60000 
# 
# If defined, this command is run when removing a user. 
# It should remove any at/cron/print jobs etc. owned by 
# the user to be removed (passed as the first argument). 
# 
#USERDEL_CMD /usr/sbin/userdel_local 
# 
# If useradd should create home directories for users by
default 
# On RH systems, we do. This option is ORed with the -m
flag on 
# useradd command line. 
# 
CREATE_HOME yes 注:是否创用户家目录,要求创建; 

5、/etc/default/useradd 文件;
通过useradd
添加用户时的规则文件;

# useradd defaults file 
GROUP=100 
HOME=/home 注:把用户的家目录建在/home中; 
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用; 
EXPIRE= 注:帐号终止日期,不设置表示不启用; 
SHELL=/bin/bash 注:所用SHELL的类型; 
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的; 

Linux下有三类用户

  • 超级用户: root 具有操作系统的一切权限 UID 值为0

  • 普通用户:普通用户具有操作系统有限的权限,UID值 500 -- 6000

  • 伪用户(虚拟用户):是为了方便系统管理,满足相应的系统进程文件属主的要求,伪用户不能登录系统,UID值 1 -- 499

用户管理文件:passwd文件位置: /etc/passwd

可以通过more /etc/passwd 查看内容
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第2张图片
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第3张图片
在此文件中,只定义帐号,不定义口令;
文件中每行定义一个用户,分七个部分:

  • 帐号名称:root
  • 用户密码:x
  • 用户标识码(用户ID):0
  • 标识码(用户组ID):0
  • 用户相关信息:admin
  • 用户家目录:/root
  • 用户环境:/bin/bash

用户口令文件:shadow文件位置: /etc/passwdcat /etc/shadow

可以通过more /etc/shadow命令查看内容
(冒号之间没有内容的,表示为空)Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第4张图片
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第5张图片
此文件只有root用户能访问,分九个部分:
用户名:root
口令:存放加密口令,如果第一个字符是,表示该用户不能登录
最后一次修改时间:
最大时间间隔:0 可以随时改变
最小时间间隔:99999 表示永远不过期
警告时间:1周
不活动时间:
失效时间:


用户帐号管理
创建用户的两种方式:

  • 手工创建用户
  • 命令创建用户

手工创建用户

1.在/etc/passwd中添加一条记录
2.创建用户主目录
3.在用户主目录中设置默认的配置文件
4.设置用户初始口令

命令创建用户

useradd 或者 adduser(man useradd)
-u -g -G -d -s -c -e -k -m -M -r

Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第6张图片

用户帐号的维护

useradd username 创建用户
passwd username 设置用户密码

注意:没有设置密码的用户不能登录

userdel username 删除用户

usermod -l newName username 修改登录名

usermod -L username 锁定用户

usermod -U username 解锁用户

passwd -l
passwd -u
passwd -s

用户组管理
用户组分两类:

私有组:

当在创建一个新用户user时,若没有指定他所属于的组,Linux就建立一个和该用户同名的私有组

标准组:

标准组可以容纳多个用户,若使用标准组,在创建一个新用户时,就应该指定该用户所属于的组

用户组的管理文件:group /etc/group

分为四个部分:
组名:用户登录时所在的组名
组口令:一般不使用
组标识码(GID):
组内用户列表:属于改组的所有用户列表

添加用户组

useradd username (默认建立username用户组)

groupadd 组帐号名称

修改组名

groupmod -n newName groupName

删除组帐号

groupdel 组帐号名称
注意:删除的帐号必须存在,且不能是某个用户的私有组

添加用户到组

gpasswd -a userName groupName

从组中删除用户

gpasswd -d userName groupName

查看某个用户属于哪个组

groups userName

查看某个组有哪些用户

tail 5 /etc/group 最后一行

查看一个用户的UID和GID

id [options] userName eg: id bruce
id -g userName 只显示GID
id -G userName 显示所有组
id -u userName 只显示UID

查看用户的相关信息,包括用户的主目录,启动shell,用户名等

finger [options] userName eg: finger bruce
finger -l userName
finger -s userName

变化用户身份
su userName

说明:从管理员到普通用户不用使用密码;从普通用户到其他用户需要使用密码

这样,至改变用户身份,环境变量不变;

su -userName

完全转变,包括身份和环境变量

只允许root用户登录

可以在/etc/目录下建立一个名为nologin的文件
touch /etc/nologin

解除方法,删除nologin文件即可
rm -rf /etc/nologin

二、用户的权限管理 chmod
基本规则
使用 ll 命令查看文件时,能看到如下信息在首列

drwxrwxrwx

第一个字母:代表文件类型
第2~4字符:表示当前用户的权限
第5~7字符:表示当前用户组权限
第8~10字符:表示其他用户的权限

d:目录
r[4]:读权限 w[2]:写权限 x[1]:可执行权限

chmod命令

a:所有权限/所有用户
u:用户
g:用户组
o:其他用户

+:加上权限
-:减去权限
=:等于权限

eg:给文件file.txt加上可执行权限

chmod a+x file.txt

八进制的数据表示权限 0 1 2 3 4 5 6 7

0:没有任何权限
1:x
2:w
3:xw
4:r
5:rx
6:rw
7:rwx

eg: 给文件一个755权限
chmod 755 file.txt

文件/目录的所属用户和所属用户组
修改目录下所有文件、所有子文件、文件夹的权限
chmod -R 755 folder

修改文件的所属用户
chown userName file

修改目录下所有文件、所有子文件、文件夹的所有用户
chown -R userName folder

修改文件的所属用户组
chgrp groupName file

修改目录下所有文件、所有子文件、文件夹的所有用户组
chgrp -R userName folder

同时修改文件/目录的用户和用户组
chown -R userName.groupName file/folder
新建文件/目录的默认权限
设置文件的默认生成掩码,新建文件/目录的默认权限
umask nnn

eg: umask 444

目录的默认权限:777 - 444 = 333 dr-xr-xr-x
文件的默认权限:777 - 444 -111 = 222 -w–w--w-

查看主机名和修改主机名

用户名@主机名
打开一个终端窗口,字命令提示符中可以看到,@符号之前显示的是当前的登录用户,@符号之后显示的是主机名称,如下所示:(shl:用户名, server:是主机名称)
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第7张图片

  1. 查看主机名的方法:
  • hostname
  • uname -n
  1. 临时修改主机名称

sudo hostname new_name
例如:下面通过sudo hostname hello 把主机名从server改成hello,新主机名可以是任何合法的字符串表示,但是这种方式修改主机名并不保存在系统中,重启系统后主机名将恢复为原来的主机名称, 因此只是临时修改,
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第8张图片
3. 永久修改主机名

主机名存放在 /etc/hostname 文件中,修改主机名时,编辑hostname文件,在文件中输入新的主机名并保存该文件即可。在终端中按照以下步骤操作:

su

需要root权限(然后输入密码)

echo “new_hostname” > /etc/hostname
(将上面的new_hostname换成你想修改的新用户名即可)
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第9张图片
从上面可以看出,虽然我们已经临时将主机改成hello了,但时/etc/hostname文件中存放的还是之前的主机名server

有些人说还需要修改/etc/hosts文件:

修改命令:sudo vi /etc/hosts
记得要加管理员权限,这都是系统的文件,一般用户是没有权限进行修改的
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第10张图片
(我修改了一下,当然你也可以不修改,后面我会查询一下这个hosts文件的作用,存放的是什么配置信息!)
查询有关hosts配置文件的介绍

重启系统后,用hostname查看主机名有没有修改成功,通过修改hostname文件,每次重启后都会从hostname文件读取新的主机名,实现永久修改。

2.1 创建用户

Linux创建用户有两种方式:

方式一:adduser
范式二:useradd (常用)


二者的区别:
adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

2.1.1 用adduser创建用户

例如:

adduser使用:
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第11张图片
sudo adduser tangx 创建一个叫tangx的用户,密码可以自己设置,后面的可以选择跳过,用默认 Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第12张图片
more /etc/passwd 可以查看,已经创建成功


用创建的用户登录一下,已经创建成功,但是有些权限普通用户是没有的
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第13张图片

这样在创建用户名时,就创建了用户的主目录以及密码。默认情况下:
adduser在创建用户时会主动调用 /etc/adduser.conf;

在创建用户主目录时默认在/home下,而且创建为 /home/用户名

如果主目录已经存在,就不再创建,但是此主目录虽然作为新用户的主目录,而且默认登录时会进入这个目录下,但是这个目录并不是属于新用户,当使用userdel删除新用户时,并不会删除这个主目录,因为这个主目录在创建前已经存在且并不属于这个用户。

为用户指定shell版本为:/bin/bash

因此常用参数选项为(参数为双下划线):

序号 参数 参数功能
(1) –home 指定创建主目录的路径,默认是在/home目录下创建用户名同名的目录,这里可以指定;如果主目录同名目录存在,则不再创建,仅在登录时进入主目录。
(2) –quiet 即只打印警告和错误信息,忽略其他信息。
(3) –debug 定位错误信息。
(4) –conf 在创建用户时使用指定的configuration文件。
(5) –force-badname: 默认在创建用户时会进行/etc/adduser.conf中的正则表达式检查用户名是否合法,如果想使用弱检查,则使用这个选项,如果不想检查,可以将/etc/adduser.conf中相关选项屏蔽。如:在这里插入图片描述

Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第14张图片

添加txin用户如下
sudo useradd -d /home/mosheng/work2/project/shliang/tx txin

Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第15张图片

删除用户:

sudo userdel 用户名
sudo userdel -r 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
在这里插入图片描述
此时用more /etc/passed 查看已经没有用户txin的信息了
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第16张图片

3、删除用户

mosheng:mosheng (这种一般就是前面的是用户名,后面的是用户组,二者的名字一致而已)

查看用户的命令:

cat /etc/passwd
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第17张图片
是,你会发现,在使用上面的 cat 命令所打印出来的东西太杂乱了,于是网上找到下面的这个命令:
#对于 cat /etc/passwd 的替换(但是这个命令太长,并不实用)
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第18张图片

查看用户列表

查看用户组的命令:

cat /etc/group
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第19张图片

查看当前活跃的用户列表的命令:

w (小写的w)
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第20张图片

修改用户名和密码

1、修改用户名

2、修改用户密码

3、用户密码管理

二、用户权限管理

1、chmod设置读、写、执行权限

在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码:

将目录/opt 及其下面的所有文件、子目录的文件主改成 liuhai

chown -R liuhai:liuhai /opt
#给目录opt设置权限
chmod 760 /opt
chown 命令
语法
chown(选项)(参数)
选项
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;

-f或–quite或——silent:不显示错误信息;

-h或–no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;

-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;

-v或——version:显示指令执行过程;

–dereference:效果和“-h”参数相同;

–help:在线帮助;

–reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;

–version:显示版本信息。
参数
用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。
** 实例 **

将目录/opt 及其下面的所有文件、子目录的文件主改成 liuhai

chown -R liuhai:liuhai /opt
chmod命令
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

使用权限 : 所有使用者

语法
chmod [-cfvR] [–help] [–version] mode file…
参数说明
mode : 权限设定字串,格式如下 :

[ugoa…][[±=][rwxX]…][,…]
其中:

u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
‘+’ 表示增加权限、’-’ 表示取消权限、’=’ 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:

-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
实例
将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该文件拥有者可以执行 :

chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *
此外chmod也可以用数字来表示权限如 :

chmod 777 file
语法为:

chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。

chmod a=rwx file

chmod 777 file
效果相同

chmod ug=rwx,o=x file

chmod 771 file
效果相同

若用chmod 4755 filename可使此程序具有root的权限

2、chown设置文案拥有权限

三、setfacl

setfacl命令可以用来细分linux下的文件权限。
chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
换句话说,setfacl可以更精确的控制权限的分配。
比如:让某一个用户对某一个文件具有某种权限。

这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
如,某一个文件,不让单一的某个用户访问。

setfacl – 设定文件访问控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …

参数 参数全称 参数功能
-m –modify=acl 更改文件的访问控制列表
-M –modify-file=file 从文件读取访问控制列表条目更改
-x –remove=acl 根据文件中访问控制列表移除条目
-X –remove-file=file 从文件读取访问控制列表条目并删除
-b –remove-all 删除所有扩展访问控制列表条目
-k –remove-default 移除默认访问控制列表
–set=acl 设定替换当前的文件访问控制列表
–set-file=file 从文件中读取访问控制列表条目设定
–mask 重新计算有效权限掩码
-n –no-mask 不重新计算有效权限掩码
-d –default 应用到默认访问控制列表的操作
-R –recursive 递归操作子目录
-L –logical 依照系统逻辑,跟随符号链接
-P –physical 依照自然逻辑,不跟随符号链接
–restore=file 恢复访问控制列表,和“getfacl -R”作用相反
–test 测试模式, 并不真正修改访问控制列表属性
-v –version 显示版本并退出
-h –help 显示本帮助信息

更过详细内容可以参考

sudo setfacl -m u:xl:rwx ffmpeg-4.1.tar.bz2
给用户xl赋予对ffmpeg-4.1.tar.bz2文件的rwx权限
Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置_第21张图片

Reference:
1、https://blog.csdn.net/boybruce/article/details/17198601

在这里插入图片描述



在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

你可能感兴趣的:(5—Linux学习)