Linux——用户和组管理,文件权限管理,文件查找(find)

摘要:
Wwrite表示可写。对于目录,如果您没有W权限,则意味着您无法在目录中创建新文件。例如,chmod777test/-R递归地测试目录中具有777权限的所有文件。2) 修改文件所有者:chown3)修改文件的组

一、用户和组相关的管理命令

1)创建用户:useradd

命令格式:useradd [options] LOGIN

选项:

  • -u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
  • -g GID:指明用户所属基本组,可为组名,也可以GID;
  • -c "COMMENT":用户的注释信息;
  • -d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
  • -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
  • -G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
  • -r: 创建系统用户

默认值设定:/etc/default/useradd文件中

命令含义
useradd -d /home/abc abc -m创建abc用户,如果/home/abc目录不存在,就自动创建这个目录,同时用户属于abc组
useradd -d /home/a a -g test -m创建一个用户名字叫a,主目录在/home/a,如果主目录不存在,就自动创建主目录,同时用户属于test组
cat /etc/passwd查看系统当前用户

2)创建组:groupadd

命令格式:groupadd [OPTION]... group_name

选项:

  • -g GID: 指明GID号;[GID_MIN, GID_MAX]
  • -r: 创建系统组;

查看用户组:cat /etc/group

3)查看用户相关的ID信息:id

命令格式:id [OPTION]... [USER]

  • -u: UID,用户id
  • -g: GID,组id
  • -G: Groups:组名
  • -n: Name:用户名

4)切换用户或以其他用户身份执行命令:su

命令格式:su [options...] [-] [user [args...]]

切换用户的方式:

  • su UserName:非登录式切换,即不会读取目标用户的配置文件;
  • su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;
  • Note:root su至其他用户无须密码;非root用户切换时需要密码;

换个身份执行命令

  • su [-] UserName -c 'COMMAND'

选项:

  • -l:“su -l UserName”相当于“su - UserName”

5)用户属性修改:usermod

命令格式:usermod [OPTION] login

  • -u UID: 新UID
  • -g GID: 新基本组
  • -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
  • -s SHELL:新的默认SHELL;
  • -c 'COMMENT':新的注释信息;
  • -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
  • -l login_name: 新的名字;
  • -L: lock指定用户
  • -U: unlock指定用户
  • -e YYYY-MM-DD: 指明用户账号过期日期;
  • -f INACTIVE: 设定非活动期限;

6)给用户添加密码:passwd

命令格式:passwd [OPTIONS] UserName  # 修改指定用户的密码,仅root用户权限

passwd: 修改自己的密码;

常用选项:

  • -l: 锁定指定用户
  • -u: 解锁指定用户
  • -n mindays: 指定最短使用期限
  • -x maxdays:最大使用期限
  • -w warndays:提前多少天开始警告
  • -i inactivedays:非活动期限;
  • --stdin:从标准输入接收用户密码;
    • echo "PASSWORD" | passwd --stdin USERNAME

7)删除用户:userdel

命令格式:userdel [OPTION]... login

选项:

  • -r: 删除用户家目录;

8)组属性修改:groupmod

命令格式:groupmod [OPTION]... group

  • -n group_name: 新名字
  • -g GID: 新的GID;

9)组删除:groupdel

groupdel GROUP

10)组密码:gpasswd

命令格式:gpasswd [OPTION] GROUP

选项:

  • -a user: 将user添加至指定组中;
  • -d user: 删除用户user的以当前组为组名的附加组
  • -A user1,user2,...: 设置有管理权限的用户列表

newgrp命令:临时切换基本组;

如果用户本不属于此组,则需要组密码;

11)修改用户属性:chage

命令格式:chage [OPTION]... LOGIN

选项:

  • -d LAST_DAY:将最近一次密码设置时间设为“最近日期LAST_DAY”
  • -E, --expiredate EXPIRE_DATE:将帐户过期时间设为“过期日期EXPIRE_DATE”
  • -I, --inactive INACTIVE:显示帐户年龄信息
  • -m, --mindays MIN_DAYS:将两次改变密码之间相距的最小天数设为“最小天数MIN_DAYS”
  • -M, --maxdays MAX_DAYS:将两次改变密码之间相距的最大天数设为“最大天数MAX_DAYS”
  • -W, --warndays WARN_DAYS:将过期警告天数设为“警告天数WARN_DAYS”

二 、权限管理

Linux——用户和组管理,文件权限管理,文件查找(find)第1张

文件的权限主要针对三类对象进行定义:

  • owner: 属主, u
  • group: 属组, g
  • other: 其他, o

每个文件针对每类访问者都定义了三种权限:

文件:

  • r: 可使用文件查看类工具获取其内容;
  • w: 可修改其内容;
  • x: 可以把此文件提请内核启动为一个进程;

目录:

  • r: 可以使用ls查看此目录中文件列表;
  • w: 可在此目录中创建文件,也可删除此目录中的文件;
  • x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;

数字表示:

  • --- 000 0
  • --x 001 1
  • -w- 010 2
  • -wx 011 3
  • r-- 100 4
  • r-x 101 5
  • rw- 110 6
  • rwx 111 7

1)修改文件权限:chmod

chmod 修改文件权限有两种使用格式:字母法与数字法。

a.字母法:chmod u/g/o/a +/-/= rwx 文件

[ u/g/o/a ]含义
uuser 表示该文件的所有者
ggroup 表示与该文件的所有者属于同一组( group )者,即用户组
oother 表示其他以外的人
aall 表示这三者皆是
[ +-= ]含义
+增加权限
-撤销权限
=设定权限
rwx含义
rread 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
wwrite 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
xexcute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

Linux——用户和组管理,文件权限管理,文件查找(find)第2张

Linux——用户和组管理,文件权限管理,文件查找(find)第3张

Linux——用户和组管理,文件权限管理,文件查找(find)第4张

b)数字法:“rwx” 这些权限也可以用数字来代替

字母说明
r读取权限,数字代号为 "4"
w写入权限,数字代号为 "2"
x执行权限,数字代号为 "1"
-不具任何权限,数字代号为 "0"

如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename

chmod 751 file:

  • 文件所有者:读、写、执行权限
  • 同组用户:读、执行的权限
  • 其它用户:执行的权限

 Linux——用户和组管理,文件权限管理,文件查找(find)第5张

注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限

2)修改文件所有者:chown

Linux——用户和组管理,文件权限管理,文件查找(find)第6张

3)修改文件所属组:chgrp

Linux——用户和组管理,文件权限管理,文件查找(find)第7张

三、文件查找

在文件系统上查找符合条件的文件,主要分两种:非实时查找(数据库查找):locate,实时查找:find。

1)locate

依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新数据库(updatedb);(不建议使用)

索引构建过程需要遍历整个根文件系统,极消耗资源;

工作特点:查找速度快,模糊查找,非实时查找;

命令格式:locate KEYWORD

2)find

实时查找工具,通过遍历指定路径下的文件系统完成文件查找;

工作特点:查找速度略慢,精确查找,实时查找;

命令格式:find [OPTION]... [查找路径] [查找条件] [处理动作]

a.查找路径:指定具体目标路径;默认为当前目录;

b.查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件;

根据文件名查找:

  • -name "文件名称":支持使用glob(*, ?, [], [^])
  • -iname "文件名称":不区分字母大小写
  • -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

根据属主、属组查找:

  • -user USERNAME:查找属主为指定用户的文件;
  • group GROUPNAME: 查找属组为指定组的文件;
  • -uid UserID:查找属主为指定的UID号的文件;
  • -gid GroupID:查找属组为指定的GID号的文件;
  • -nouser:查找没有属主的文件(用户被删,文件还在);
  • -nogroup:查找没有属组的文件(用户组被删,文件还在);

根据文件类型查找:

-type TYPE:

  • f: 普通文件
  • d: 目录文件
  • l: 符号链接文件
  • s:套接字文件
  • b: 块设备文件
  • c: 字符设备文件
  • p: 管道文件

组合条件:

  • 与:-a
  • 或:-o
  • 非:-not, !

!A -a !B <==> !(A -o B)

!A -o !B <==> !(A -a B)

示例:找出/tmp目录下,属主不是root,且文件名不是fstab的文件;

  1. find /tmp ( -not -user root -a -not -name 'fstab' ) -ls   # -ls只对后面的生效,所以要加()
  2. find /tmp -not ( -user root -o -name 'fstab' ) -ls   # 整个条件取反时,-o要变成-a

根据文件大小来查找:

-size [+|-]#UNIT

常用单位:k, M, G

  • #UNIT: (#-1, #]  (#为几K,几M...的代指)
  • -#UNIT:[0,#-1]
  • +#UNIT:(#,oo)

根据时间戳:

以“天”为单位;

  • -atime [+|-]#, :访问时间
    • #: [#,#+1)
    • +#: [#+1,oo]
    • -#: [0,#)
  • -mtime:修改时间
  • -ctime:改变时间

以“分钟”为单位:

  • -amin
  • -mmin
  • -cmin

根据权限查找:数字权限表示方式

-perm [/|-]MODE

  • MODE: 精确权限匹配
  • /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可;
    • 示例:find /etc -perm +060 -ls # 属组能读或者能写(6==>rw-)
  • -MODE:每一类对象都必须同时拥有为其指定的权限标准;
    • 示例:find /etc -perm -666 -ls # -777也符合标准,因为7是rwx,6是rw-,7里面包含6

c.处理动作:

对符合条件的文件做什么操作;默认输出至屏幕;

  • -print:默认的处理动作,显示至屏幕;
  • -ls:类似于对查找到的文件执行“ls -l”命令;
  • -delete:删除查找到的文件;
  • -fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中;
  • -ok COMMAND {} ; :对查找到的每个文件执行由COMMAND指定的命令;
    • 对于每个文件执行命令之前,都会交互式要求用户确认;
  • -exec COMMAND {} ; :对查找到的每个文件执行由COMMAND指定的命令;
    • {}: 用于引用查找到的文件名称自身;
    • 示例:find /tmp -cmin -5 -exec mv {} {}.new ; # 将查找到的文件名后面加一个.new

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;

有些命令不能接受过多参数,此时命令执行可能会失败;另一种方式可规避此问题:find | xargs COMMAND

Linux——用户和组管理,文件权限管理,文件查找(find)第8张Linux——用户和组管理,文件权限管理,文件查找(find)第9张
 1 练习:
 2 1、查找/var目录下属主为root,且属组为mail的所有文件或目录;
 3     # find /var -user root -group mail
 4 
 5 2、查找/usr目录下不属于root、bin或hadoop的所有文件或目录;
 6     # find /usr -not -user root -a -not -user bin -a -not -user hadoop
 7     # find /usr -not ( -user root -o -user bin -o -user hadoop )
 8 
 9 3、查找/etc目录下最周一周内其内容修改过,同时属主不为root,也不是hadoop的文件或目录;
10     # find /etc -mtime -7 -a -not -user root -a -not -user hadoop
11     # find /etc/ -mtime -7 -a -not ( -user root -o -user hadoop )
12 
13 4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件或目录;
14     # find / -nouser -a -nogroup -a -atime -7
15 
16 5、查找/etc目录下大于1M且类型为普通文件的所有文件;
17     # find /etc -size +1M -type f
18 
19 
20 6、查找/etc目录下所有用户都没有写权限的文件;
21     # find /etc -not -perm /222
22 
23 7、查找/etc目录下至少有一类用户没有执行权限的文件;
24     # find /etc -not -perm -111
25 
26 8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件;
27     # find /etc/init.d -perm -113
View Code

 四、Linux文件系统上的特殊权限

1)文件权限

Linux——用户和组管理,文件权限管理,文件查找(find)第1张

2)安全上下文

前提:进程有属主和属组;文件有属主和属组;

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;

(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组;

(3) 进程访问文件时的权限,取决于进程的发起者:

  •  进程的发起者,同文件的属主:则应用文件属主权限;
  •  进程的发起者,属于文件的属组;则应用文件属组权限;
  •  应用文件“其它”权限;

3)SUID

让本来没有相应权限的用户运行这个程序时,可以访问没有权限访问的资源。

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;

(2) 启动为进程之后,其进程的属主为原程序文件的属主;

chmod u+s FILE...  # 设定权限

chmod u-s FILE...  # 取消权限

4)SGID

默认情况下,用户创建文件时,其属组为此用户所属的基本组;

一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组;

chmod g+s DIR...  # 设置权限

chmod g-s DIR...  # 取消权限

5)Sticky

对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件;/tmp和/var/tmp目录默认就有这个权限

chmod o+t DIR...  # 设置权限

chmod o-t DIR...  # 取消权限

SUID SGID STICKY三个权限的数字表示法:

  • 000 0
  • 001 1
  • 010 2
  • 011 3
  • 100 4
  • 101 5
  • 110 6
  • 111 7
    • 示例:chmod 4777 /tmp/a.txt # 将文件的属主属组其他设置为rwx,有suid权限

几个权限位映射:

SUID: user, 占据属主的执行权限位;

  • s: 属主拥有x权限
  • S:属主没有x权限

SGID: group, 占据group的执行权限位;

  • s: group拥有x权限
  • S:group没有x权限

Sticky: other, 占据ohter的执行权限位;

  • t: other拥有x权限
  • T:other没有x权限

免责声明:文章转载自《Linux——用户和组管理,文件权限管理,文件查找(find)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SuSE linux 防火墙配置之开发端口设置Java 之 Scanner 类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

svn ignore 的用法(忽略文件及目录)

svn ignore 的用法(忽略文件及目录) 若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容: $ svn mkdir spool$ svn propset svn:ignore '*' spool$ svn ci -m 'Adding "spool" and ignoring its contents.' 若想创建一个文件夹...

Android Native C 之 Helloworld的四种编译方式_转载

一.编写helloworld.c Android.mk     [root@fontlose jni]# cat hello.c  [cpp] view plaincopyprint?  #include <stdio.h>   int main()   {       printf("Hello World!\n");       ...

Linux学习3-yum安装java和Tomcat环境

前言 linux上安装软件,可以用yum非常方便,不需要下载解压,一个指令就能用yum安装java和tomcat环境。 前面一篇已经实现在阿里云服务器上搭建一个禅道系统的网站,算是小有成就,但并不是每个网站搭建都是这么简单的。 一般开发包是一个.war的文件,这就需要用到一个中间键,比如tomcat了,tomcat又是依赖于java环境的,所以先安装jav...

linux fstab下挂载错误导致cannot open access to console, the root account is locked的问题

用 deepin 安装 u 盘启动,出现选择安装语言的界面时,按 ctrl+alt+T,进入 tty,然后输入 startx,进入 live cd 模式,挂载硬盘的根分区,然后修改 /etc/fstab 文件,把里面的 /home 分区里的启动项注释掉。mount 命令在开始时会读取这个文件,确定设备和分区的挂载选项,注释掉后开机就不会挂载 /home...

Linux操作系统Centos7.2版本搭建Apache+PHP+Mysql环境

对于在校大学生来说腾讯云1元主机很划算,所以就申请了一台,打算在上面学习下linux,使用版本为centos7.2版本。在服务器上比较推荐centos,此版本生命周期较长,而且网上有关centos的教程很多,方便学习。 Centos6版本的推荐看下面这个教程,很详细 http://blog.csdn.net/u014427391/article/detai...

linux下deb包的管理及制作 | 一次成功

1.deb包介绍 在debian/ubuntu环境下,很多情况下,我们安装已经开发的程序运用,可以通过deb包的命令进行程序的部署,对应的项目目录文件也会同步到某些目录下,有些情况下将程序做成service启动,这样会更方便运用的管理,如通过service xxx start|stop|status|restart。 deb 是 Unix 系统(其实主要是...