晴明的博客园 GitHub      CodePen      CodeWars     

[linux] su chown chmod crontab

su

su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。

-f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。

-l , –login:加了这个参数之后,就好像是重新登陆一样,
大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,
并且工作目录也会改变。如果没有指定USER,缺省情况是root。

-m, -p ,–preserve-environment:执行su时不改变环境变数。

-c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。

在root用户下, 输入 su 普通用户. 则切换至普通用户, 从root切换到变通用户不需要密码
在普通用户下, 输入 su [用户名],提示 password:,输入用户的PASSWORD, 则切换至该用户

su 是切换到其他用户
su - 是完整的切换到一个用户环境

sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;

在ubuntu下有时需要 sudo su root 切换到root用户

缩进 缩出

v进入visual状态,选择多行,用shift+>shift+<缩进或缩出.

通常根据语言特征使用自动缩进排版:
在命令状态下对当前行用== (连按=两次),
或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行

chmod

文件或目录的访问权限分为 只读,只写和可执行 三种:
只读 权限表示只允许读其内容,而禁止对其做任何的更改操作。
可执行 权限表示允许将该文件作为一个程序执行。
文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。

有三种不同类型的用户可对文件或目录进行访问:
文件所有者,同组用户、其他用户。
所有者一般是文件的创建者。
所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。
在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为
文件属主的读、写和执行权限;
与属主同组的用户的读、写和执行权限;
系统中其他用户的读、写和执行权限。
当用 ls -alll 命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。

-rw-r--r-- 为例,
共有10个位置,第一个字符指定了文件类型。
在通常意义上,一个目录也是一个文件。
如果第一个字符是横线,表示是一个非目录的文件。
如果是d,表示是一个目录。
从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。
权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

该例的意义为,
属主有读写权限;与属主同组的用户只有读权限;其他用户只有读权限。

chmod [-cfvR] [--help] [--version] mode file

必要参数:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息

选择参数:
--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限
--version 显示版本信息
<权限范围> + <权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围> - <权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围> = <权限设置> 设置权限范围内的目录或者文件的权限为指定的值

权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:
r :读权限,4
w :写权限,2
x :执行权限,1

  • :删除权限,0
    s :特殊权限

该命令有两种用法。
① 文字设定法:
chmod [who] [+ | - | =] [mode] 文件名

② 数字设定法
0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。
所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

chmod [mode] 文件名

若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。

增加文件所有用户组可执行权限

$ ls -al log2012.log 
-rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log

$ chmod a+x log2012.log 

$ ls -al log2012.log 
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log

同时修改不同用户权限

$ ls -al log2012.log 
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log

$ chmod ug+w,o-x log2012.log 

$ ls -al log2012.log 
-rwxrwxr-- 1 root root 302108 11-13 06:03 log2012.log

删除文件权限

$ ls -al log2012.log 
-rwxrwxr-- 1 root root 302108 11-13 06:03 log2012.log

$ chmod a-x log2012.log 

$ ls -al log2012.log 
-rw-rw-r-- 1 root root 302108 11-13 06:03 log2012.log

使用“=”设置权限

$ ls -al log2012.log 
-rw-rw-r-- 1 root root 302108 11-13 06:03 log2012.log

$ chmod u=x log2012.log 

$ ls -al log2012.log 
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log

对一个目录及其子目录所有文件添加权限

$ cd test4

$ ls -al

总计 312drwxrwxr-x 2 root root   4096 11-13 05:50 .

drwxr-xr-x 5 root root   4096 11-22 06:58 ..
-rw-r--r-- 1 root root 302108 11-12 22:54 log2012.log
-rw-r--r-- 1 root root     61 11-12 22:54 log2013.log
-rw-r--r-- 1 root root      0 11-12 22:54 log2014.log

$ cd ..

$ chmod -R u+x test4

$ cd test4

$ ls -al
总计 312drwxrwxr-x 2 root root   4096 11-13 05:50 .
drwxr-xr-x 5 root root   4096 11-22 06:58 ..
-rwxr--r-- 1 root root 302108 11-12 22:54 log2012.log
-rwxr--r-- 1 root root     61 11-12 22:54 log2013.log
-rwxr--r-- 1 root root      0 11-12 22:54 log2014.log

给file的属主分配读、写、执行(7)的权限,
给file的所在组分配读、执行(5)的权限,
给其他用户分配执行(1)的权限

$ chmod u=rwx,g=rx,o=x file 
#等价
$ chmod 751 file  

为所有用户分配读权限

$ chmod =r file  
#等价
$ chmod a-wx,a+r   file
#等价
$ chmod 444 file 

chown

chown [选项]... [所有者][:[组]] 文件...

通过chown改变文件的拥有者和群组。
在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。
普通用户不能将自己的文件改变成其他的拥有者。
其操作权限一般为管理员。root

必要参数:

-c 显示更改的部分的信息

-f 忽略错误信息

-h 修复符号链接

-R 处理指定目录以及其子目录下的所有文件

-v 显示详细的处理信息

-deference 作用于符号链接的指向,而不是链接文件本身

选择参数:

--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变

--help 显示帮助信息

--version 显示版本信息

改变拥有者和群组

$ ll
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 root users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log

$ chown mail:mail log2012.log 

$ ll
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail mail  302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log

改变文件拥有者和群组

$ ll
总计 604
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail mail  302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log

$ chown root: log2012.log 

$ ll
总计 604
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 root root  302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log

改变文件群组

$ ll
总计 604
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 root root  302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log
$ chown :mail log2012.log 
$ ll
总计 604
---xr--r-- 1 root users 302108 11-30 08:39 linklog.log
---xr--r-- 1 root mail  302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root users      0 11-30 08:39 log2017.log

改变指定目录以及其子目录下的所有文件的拥有者和群组

$ ll
drwxr-xr-x 2 root users   4096 11-30 08:39 test6

$ chown -R -v root:mail test6
“test6/log2014.log” 的所有者已更改为 root:mail
“test6/linklog.log” 的所有者已更改为 root:mail
“test6/log2015.log” 的所有者已更改为 root:mail
“test6/log2013.log” 的所有者已更改为 root:mail
“test6/log2012.log” 的所有者已保留为 root:mail
“test6/log2017.log” 的所有者已更改为 root:mail
“test6/log2016.log” 的所有者已更改为 root:mail
“test6” 的所有者已更改为 root:mail

$ ll
drwxr-xr-x 2 root mail   4096 11-30 08:39 test6

$ cd test6
$ ll
总计 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 root mail 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 root mail     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail      0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail      0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail      0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail      0 11-30 08:39 log2017.log

crontab

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,
它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

MINUTE Minutes within the hour (0–59)
HOUR The hour of the day (0–23)
DOM The day of the month (1–31)
MONTH The month (1–12)
DOW The day of the week (0–7) where 0 and 7 are Sunday.

# every fifteen minutes (perhaps at :07, :22, :37, :52)
	H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
	H(0-29)/10 * * * *
# once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
	H 9-16/2 * * 1-5
# once a day on the 1st and 15th of every month except December
	H H 1,15 1-11 *
每1分钟执行一次command
* * * * * command

每小时的第3和第15分钟执行
3,15 * * * * command

在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command

每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command

每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command

每晚的21:30重启smb 
30 21 * * * /etc/init.d/smb restart

每月1、10、22日的4 : 45重启smb 
45 4 1,10,22 * * /etc/init.d/smb restart

每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart

每天18 : 00至23 : 00之间每隔30分钟重启smb 
0,30 18-23 * * * /etc/init.d/smb restart

每星期六的晚上11 : 00 pm重启smb 
0 23 * * 6 /etc/init.d/smb restart

每一小时重启smb 
* */1 * * * /etc/init.d/smb restart

晚上11点到早上7点之间,每隔一小时重启smb 
* 23-7/1 * * * /etc/init.d/smb restart

每月的4号与每周一到周三的11点重启smb 
0 11 4 * mon-wed /etc/init.d/smb restart

一月一号的4点重启smb 
0 4 1 jan * /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本
01   *   *   *   *     root run-parts /etc/cron.hourly

posted @ 2016-10-14 14:50  晴明桑  阅读(404)  评论(0编辑  收藏  举报