Linux 用户权限

Posted 步履阑珊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 用户权限相关的知识,希望对你有一定的参考价值。

 

目录结构

Linux和Windows目录结构的组织形式有很大不同,

  Windows

    划分出了“盘”的概念(C盘、D盘、E盘),已经建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来实现磁盘读写。

    以反斜杠(\\)分割目录

  Linux

    首先是建立一个根(/)文件系统,所有的目录页都是有根目录衍生出来的,

    以斜杠(/)分割目录

在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树

目录树的特点是什么呢?

  • 目录树的起始点是根目录(/,root);
  • 每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
  • 每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。

/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:
 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:
 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
 该目录存放一些服务启动之后需要提取的数据。

/sys:
 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
 

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
这个目录是用来存放一些临时文件的。

/usr:
 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
目录的详细解释

在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

目录的相关操作 

查看命令

ls        查看目录文件

ls  -la       查看所有目录(包括隐藏文件)

stat  文件(目录)  查看文件(目录)的详细信息

lsattr  文件     查看文件的隐藏属性

.          当前目录

..         上一层目录

-         前一个工作目录

~         当前【用户】所在的家目录

文件夹操作

  增

mkdir  文件夹名称  创建文件夹

touch   .py文件   创建一个文件

  可以使用递归来生成文件夹结构

    全是文件夹的       mkdir   -p(参数)  文件夹1/文件夹2/文件夹3

    文件夹下的文件    mkdir  -p(参数)   文件夹4/{文件夹5,文件6,文件7} (文件夹5、6、7并列)

  删

rmdir  文件夹名称(空的)

  想要删除非空的文件夹   rm -rf  ./*    

  改

mv  原文件名  新文件名(也有可能是移动)

执行第一个python命令

touch .py文件    创建一个py文件

vi  py文件      进入文件中

  按下键  i  进入编辑模式

  按下键o (在光标所在的下一行进入编辑模式

  按下键  Esc  进入命令模式

    输入命令  :wq!   保存退出

    输入命令  :q!   退出,不保存

绝对路径与相对路径

Linux中非常重要的概念--路径,路径用来定位如何找到某个文件。

  • 绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/oldboy/test.py;
  • 相对路径:相对于目前路径的文件名写法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径

Linux的文件系统

用户在硬件存储设备中执行的文件建立,写入,读取,修改,转存与控制等操作都是依赖文件系统完成的。文件系统的作用是合理规划硬盘,保证用户正常使用。

Linux系统支持数十种文件系统,常见文件系统如下。

  • Ext3    是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能 自动修复数据的不一致与错误。
  • Ext4     Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配 block 块,从而极大地提高了读写效率。
  • XFS     是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB, 这几乎满足了所有需求。
/etc/fstab是用来存放文件系统的静态信息的文件
cat /etc/fstab #检查linux的文件系统

链接:Linux之文档与目录结构

 

 

用户管理与文件权限篇

  现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源。
  普通用户在所分配到的资源内进行各自的操作,相互之间不受影响。但是这些普通用户的权限是有限制的,且用户太多的话,管理就不便,从而引入root用户。
  root用户是唯一的,且拥有系统的所有权限。root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合

  root的权利

  Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。
  在安装RHEL7时设置的root管理员密码,这个root管理员所有UNIX系统中的超级用户,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。
因此“能力越大,责任越大”,root权限必须很好的掌握,否则一个错误的命令可能会摧毁整个系统。

  关于用户的id

  在Linux系统中,

    用户也有自己的UID身份账号且唯一

      系统管理员UID为0 ,系统用户UID为1~999

   Linux安装的服务程序都会创建独有的用户负责运行。

    普通用户UID从1000开始:由管理员创建

  用户组GID

  为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。
  假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。
例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的 数据库信息等。

Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人

普通用户的创建

useradd 用户名   #添加用户 

passwd 用户名    #设置密码

root用户可以修改其他所有人的密码,且不需要验证

groupadd   组名  # 添加用户组

切换用户

su命令可以切换用户身份的需求

  su - username su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息

一般的顺序是(可以不用遵循)

  whoami    先看下当前用户

第一种方法

第二种方法

  ctrl + d (logout)退出登录

  ssh xiao@10.0.0.10  再输入密码登录

小结

  1、超级用户root切换普通用户无需密码

  2、普通用户切换超级用户root需要root的密码

  3、普通用户权限较小,只能查看基本信息

  4、$是普通用户的命令提示符,#是超级用户的命令提示符

  • 一般情况下,在生产环境避免直接用root用户,除非有特殊系统维护需求,使用完立刻退回普通用户
  • 非交互式设置密码(echo "redhat"|passwd --stdin oldboy && history -c)

删除用户(只有root可以删除)

userdel  参数  用户名

      -r  同时删除用户以及家目录

      -f  强制删除用户

sudo命令

  在/etc/sudoers中设置了可执行sudo指令的用户,可以使用其他身份来执行命令,预设身份为root

  若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码之后有5分钟的有效期限,超过期限则必须重新输入密码

sudo 选项  参数

  -b:在后台执行指令;

  -h:显示帮助;

  -H:将HOME环境变量设为新身份的HOME环境变量;

  -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。

  -l:列出目前用户可执行与无法执行的指令;

  -p:改变询问密码的提示符号;

  -s<shell>:执行指定的shell;

  -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;

  -v:延长密码有效期限5分钟;

  -V :显示版本信息。

shdo命令用在什么时候?

权限不够,这时候需要sudo ls /root  以root身份去运行,chaoge权利小,root总可以了吧!!

这是由于配置sudo必须编辑/etc/sudoers文件,并且只有root才能修改,咱们可以通过visudo命令直接编辑sudoers文件,使用这个命令还可以检查语法,比直接编辑 vim /etc/sudoers更安全

visudo 编辑sudoers文件

写入
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chaoge  ALL=(ALL)       ALL   #允许chaoge在任何地方,执行任何命令

然后切换用户,就可以使用sudo ls /root/ 的命令了

小结:

  想要查看超出权限的命令必须有sudo

  必须使用密码登录(当前用户的密码)

  时间限制5分钟,超出重新登录

 

文件与目录权限

Linux权限的目的是(保护账户的资料)

Linux权限主要依据三种身份来决定:

  • user/owner 文件使用者,文件属于哪个用户
  • group 属组,文件属于哪个组
  • others 既不是user,也不再group,就是other,其他人

什么是权限

  在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。

  对于目录的权限来说,可读(r)是读取目录文件列表,可写(w)是表示在目录内新增,修改,删除文件。可执行(x)表示可以进入目录

权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
文件链接数
文件拥有者-属主
文件拥有组-属组
文件大小
最后一次被修改的时间日期
文件名 
解读上图:

 

先分析一下文件的类型

- 一般文件

d 文件夹

l 软连接(快捷方式)

b 块设备,存储媒体文件为主

c 代表键盘,鼠标等设备

文件权限

r    read      可读      4
w    write      写入,编辑   2
x    executable    可以执行    1

文件权限与数字转化

ls -l /var/log/mysqld.log 
-rw-r--r-- 1 mysql mysql 6735642 8月  11 14:19 /var/log/mysqld.log
这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。

 

每种身份最低是0分,最高是r+w+x 7分

因此三种身份,最高权限是777,最低是000

-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
因此可知mysqld.log的权限是
属主是6 r+w(4+2)
属组是4 r(4)
其他人是4 r(4)

查看用户权限命令

id  用户
[root@oldboy_python ~ 16:34:52]#id root
uid=0(root) gid=0(root) 组=0(root)

修改文件权限属性

修改属主 chown  要修改的属主  文件

修改数组 chgrp   要修改的属组  文件

 

修改权限的命令 chmod

chmod     身份           参数       文件

    u(user,属主)   +(添加)

    g(group,属组)    -(减去)

    o(other,其他人)  =(赋值)  ?????

    a(all,全部)

当前权限 -rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt

方法1

  减去属主的写权限

  chmod u-w pyyu.txt

  查看权限

  -r--rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt

方法2

  属主添加可读可写可执行权限

  chmod 700 pyyu.txt

  属主可读可写可执行 属组可读可执行 其他人可读可执行

  chmod 755 pyyu.txt

修改文件名,修改文件更改日期 ?????

mv pyyu.txt chaoge.txt
#触摸,修改时间 touch chaoge.txt

软连接(类似于Windows的快捷方式)

软连接也叫做符号链接,常用于安装软件的快捷方式配置,如python,nginx

ln    -s     目标文件(目录)  别名

示例

  原始文件

   建立软连接

  结果

ps1

echo $PS1
[\\u@\\h \\W]\\$ 这就是linux底下的PS1变量,用于对命令提示符的修改
\\u 用户名
@ 是占位符
\\h 代表主机名
\\W 代表最后一个文件夹路径
\\w 当前路径的,绝对路径写法
\\t 时间
[ ]
$ 代表用户身份



如何修改PS1变量
PS1="[\\u@\\h \\w \\t]\\$"
永久生效的方法
vim /etc/profile 相当于合同文件一样,每次开机登录的时候,都会加载这个文件的变量
PS1="[\\u@\\h \\w \\t]\\$"

 

 

修改主机名
hostnamectl set-hostname 主机名 (重新登录会话,主机名即生效)

 

遇见了yum报错的问题,yum install nginx 的时候,说已经有yum进程存在了,并且pid是 2544
为什么呢?
这是因为你之前用了yum命令,并且没有正确退出,后台已经有yum进程了
如果你不需要他了,弄死他
kill 2544 杀死已经存在的yum进程
如果你执行这个命令反复的失败,进程无法杀死
kill -9 强制杀死进程,一定会杀掉
尽量少用kill -9 ,因为这是流氓命令,会强制祸害到其他进程
咱们在公司中,尽量kill pid 即可

 

tar命令:压缩,解压缩

  tar命令:用来压缩和解压文件,tar本身不具有压缩功能,他是调用压缩功能实现的

-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。
tar 参数

 

 

常用参数

-x 解压

-c 压缩

-z 以gzip格式压缩,完全可以代替gzip命令(必须注明是 .gz 让别人知道是什么格式

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

-f<备份文件>或--file=<备份文件>:指定备份文件;

压缩

tar  参数   压缩后的文件名   要压缩的文件

示例:

  tar  -cf   all.tar  *

  tar -zcf  all.tar.gz *

gzip命令

  gzip用来压缩文件,是个使用广泛的压缩程序,被压缩的以".gz"扩展名

  gzip可以压缩较大的文件,以60%~70%压缩率来节省磁盘空间

-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。
-h或——help:在线帮助;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
gzip命令

 

  tar -zcf  all.tar.gz  *

  实际上执行的是

    tar -cf  all.tar  *

    gzip all.tar  (对压缩文件再次进行压缩)

    

    gzip -dv  all.tar.gz (对all.tar.gz文件解压,解压后得到 all.tar)

    gzip -l  文件    (显示压缩文件信息,但并不解压)

 

解压

tar  参数  压缩后的文件(不管什么格式)

示例:

  tar -xf  all.tar

  tar -xf  all.tar.gz

netstat命令

netstat命令是用来打印Linux中网络系统的状态信息(端口信息),可让你得知整个Linux系统的网络情况

示例:

  netstat  参数

netstat -tunlp
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;

netstat -tunlp |grep 80     #过滤出web页面的命令

netstat -tunlp |grep 8000  #过滤出django的端口命令

ps命令

ps 命令用于查看系统中的进程状态,格式为“ps [参数]”。

ps  命令常用参数
-a     显示所有进程
-u     用户以及其他详细信息
-x    显示没有控制终端的进程

ps -ef|grep nginx     #过滤出nginx进程
ps -ef|grep python     #过滤出python进程

kill命令,杀死进程

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。

选项

-a:当处理当前进程时,不限制命令名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:

HUP     1    终端断线
INT     2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \\)
TERM   15    终止
KILL    9    强制终止  (慎用)
CONT   18    继续(与STOP相反, fg/bg命令)
STOP   19    暂停(同 Ctrl + Z)

实例

先用ps查找进程,然后用kill杀掉:
ps -ef | grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

kill 3268

killall命令

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这 些进程会比较麻烦,此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。
例如nginx启动后有2个进程
killall nginx 

Linux中文显示设置(防止中文乱码)

此项优化为可选项,根据个人情况选择是否调整Linux系统的字符集,字符集就是一套文字符号以及编码。

Linux下常用字符集有:

  • GBK  实际企业应用较少
  • UTF-8  广泛支持,MYSQL也使用UTF-8,企业广泛使用
#查看系统当前字符集
echo $LANG
#检查xshell crt的字符集
#命令修改字符集
export LANG=en_US.utf8
1.修改配置文件/etc/locale.conf
LANG="zh_CN.UTF-8"
2.更改后查看系统语言变量
locale

乱码核心解决办法

1.系统字符集utf8
2.xshell字符集utf8
3.文件字符集一致zh_CN.UTF-8

linux中文设置:
可以修改变量,临时生效
或者修改写入配置文件
LANG="zh_CN.UTF-8"

咱们修改的PATH变量,PS1变量,LANG语言变量,
PATH=""
PS1=""
LANG=""
但是这样重启就失效了,那咱们需要他永久生效,因此需要写入配置文件
那么和用户环境变量有关的配置文件,叫做/etc/profile ,
因此把更改变量的命令,写入到这个文件,以后每次开机,都会读取,达到永久生效的作用

export PS1="[\\u@\\h \\w \\t]\\$" 

DNS

 


linux的dns配置文件 /etc/resolv.conf
  cat /etc/resolv.conf
命令查看解析dns

nslookup  baidu.com
nslookup www.a.shifen.com (百度网址)

添加DNS

vim 编辑配置文件 /etc/resolv.conf

# 添加DNS服务器

  nameserver 119.29.29.29

  nameserver 223.5.5.5

nslookup命令是常用域名查询工具,就是查DNS信息用的命令。

nslookup4有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。或者输入nslookup -nameserver/ip。进入非交互模式,就直接输入nslookup 域名就可以了。

 

 

 

 

计划任务crond服务

什么是计划任务:
后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了crond服务

查看计划任务

tail -f  /var/log/cron

添加计划任务

crontab配置文件

在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 分 时 日 月 周

语法

crontab (选项)(参数)
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。

写计划任务时,命令必须加上绝对路径否则会出现这种情况:从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,比如* * * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot

调用crontab -e 编辑该用户的计时器 设置

进入编辑模式,并输入命令(每分钟向wenjian.txt插入‘你好啊‘)

结果

crontab任务配置基本格式:
*  *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用户

以上是关于Linux 用户权限的主要内容,如果未能解决你的问题,请参考以下文章

Django REST框架--认证和权限

Oracle-常用数据库对象笔记(片段)

gitlab 权限说明

如何修复“代码应明确检查权限是不是可用”错误

片段中的请求权限不显示对话框

片段中带有 RequestPermission 的 registerForActivityResult 不起作用