chown

用来变更文件或目录的拥有者或所属群组

补充说明

chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

语法

1
chown(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。

参数

用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。

实例

将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:

1
chown -R liu /usr/meng

chmod

用来变更文件或目录的权限

补充说明

chmod命令 用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

权限范围的表示法如下:

u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。

语法

1
chmod(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
u  # 操作对象简称,用户user,文件或目录的所有者。
g # 操作对象简称,同组用户group,文件或目录所属群组
o # 操作对象简称,其它用户others
a # 操作对象简称,所有用户all,系统默认使用此项
+ # 权限操作符,添加某些权限
- # 权限操作符,取消某些权限
= # 权限操作符,设置文件的权限为给定的权限
r # 权限设定(英文),表示可读权限
w # 权限设定(英文),表示可写权限
x # 权限设定(英文),表示可执行权限
- # 权限设定(英文字符),表示没有权限
X # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限
s # 权限设定,设置权限suid和sgid,使用权限组合“u+s”设定文件的用户的ID位,“g+s”设置组ID位
t # 权限设定,只有目录或文件的所有者才可以删除目录下的文件
-c或——changes # 效果类似“-v”参数,但仅回报更改的部分,如果文件权限已经改变,显示其操作信息;
-f或--quiet或——silent # 操作过程中不显示任何错误信息;
-R或——recursive # 递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose # 显示命令运行时的详细执行过程;
--reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置;
--help # 显示帮助信息
--version # 显示版本信息

参数

权限模式:指定文件的权限模式;
文件:要改变权限的文件。

知识扩展和实例

Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!

linux文件的用户权限的分析图

1
2
3
4
5
6
  -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆ ┆ ╰┈ 0 其他人
# ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
# ┆ ╰┈┈┈┈ u 属组
# ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件

例:rwx rw- r–

r=读取属性  //值=4
w=写入属性  //值=2
x=执行属性  //值=1

1
2
3
4
chmod u+x,g+w f01  # 为文件f01设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性

文件的属主和属组属性设置

1
2
chown user:market f01  # 把文件f01给uesr,添加到market组
ll -d f1 查看目录f1的属性

/home/wwwroot/里的所有文件和文件夹设置为755权限

(1)直接指定路径修改

1
chmod -R  755 /home/wwwroot/*

(2)手动进入该目录修改权限(并显示详细过程)

1
2
3
cd /home/wwwroot
chmod -Rv 755 * #注意:“*”表示通配符,指的是所有文件和文件
sudo chmod o+rw /shared #设置文件夹权限以保证其余用户可以访问它。

chkconfig

检查或设置系统的各种服务

补充说明

chkconfig命令 检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

语法

1
chkconfig(选项)

选项

1
2
3
--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。

缺省的运行级,RHS用到的级别如下:

  • 0:关机
  • 1:单用户模式
  • 2:无网络支持的多用户模式
  • 3:有网络支持的多用户模式
  • 4:保留,未使用
  • 5:有网络支持有X-Window支持的多用户模式
  • 6:重新引导系统,即重启

对各个运行级的详细解释:

  • 0 为停机,机器关闭。
  • 1 为单用户模式,就像Win9x下的安全模式类似。
  • 2 为多用户模式,但是没有NFS支持。
  • 3 为完整的多用户模式,是标准的运行级。
  • 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
  • 5 就是X11,进到X Window系统了。
  • 6 为重启,运行init 6机器就会重启。

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

运行级文件:

每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用-代替运行级。第二行对服务进行描述,可以用\跨行注释。

例如random.init包含三行:

1
2
3
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.

实例

1
2
3
4
5
6
7
8
9
10
chkconfig --list             #列出所有的系统服务。
chkconfig --add httpd #增加httpd服务。
chkconfig --del httpd #删除httpd服务。
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。
chkconfig --list # 列出系统所有的服务启动情况。
chkconfig --list mysqld # 列出mysqld服务设置情况。
chkconfig --level 35 mysqld on # 设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。
chkconfig mysqld on # 设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。

chkconfig –level redis 2345 on # 把redis在运行级别为2、3、4、5的情况下都是on(开启)的状态。

如何增加一个服务:

  1. 服务脚本必须存放在/etc/ini.d/目录下;
  2. chkconfig --add servicename在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
  3. chkconfig --level 35 mysqld on修改服务的默认启动等级。

chgrp

用来变更文件或目录的所属群组

补充说明

chgrp命令 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。

在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

语法

1
chgrp [选项][组群][文件|目录]

选项

1
2
3
4
5
6
7
8
9
10
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

参数

  • 组:指定新工作名称;
  • 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。

实例

/usr/meng及其子目录下的所有文件的用户组改为mengxin

1
chgrp -R mengxin /usr/meng

更改文件ah的组群所有者为newuser

1
[root@rhel ~]# chgrp newuser ah

chfn

用来改变finger命令显示的信息

补充说明

chfn命令 用来改变finger命令显示的信息。这些信息都存放在/etc目录里的passwd文件里。若不指定任何选项,则chfn命令会进入问答式界面。

语法

1
chfn(选项)(参数)

选项

1
2
3
4
5
6
-f<真实姓名>或--full-name<真实姓名>:设置真实姓名;
-h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;
-o<办公地址>或--office<办公地址>:设置办公室的地址;
-p<办公电话>或--office-phone<办公电话>:设置办公室的电话号码;
-u或--help:在线帮助;
-v或-version:显示版本信息。

参数

用户名:指定要改变finger信息的用户名。

实例

范例1,改变finger信息:

1
2
3
4
5
6
7
8
[root@localhost Desktop]# chfn
Changing finger information for root.
Name [root]: jack
Office []: hn
Office Phone []: 888888
Home Phone []: 9999999

Finger information changed.

范例2,改变账号真实姓名:

1
2
3
[root@localhost Desktop]# chfn -f jack
Changing finger information for root.
Finger information changed.

范例3:

1
2
3
4
5
6
7
shell>> chfn
Changing finger information for user
Password: [del]
Name[]:linuxde ### 提供 finger 时的资料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]

chcon

修改对象(文件)的安全上下文

补充说明

chcon命令 是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。使用--reference选项时,把指定文件的安全环境设置为与参考文件相同。chcon命令位于/usr/bin/chcon

语法

1
2
3
chcon [选项]... 环境 文件...
chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
chcon [选项]... --reference=参考文件 文件...

选项

1
2
3
4
5
6
7
8
-h, --no-dereference:影响符号连接而非引用的文件。
--reference=参考文件:使用指定参考文件的安全环境,而非指定值。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:为处理的所有文件显示诊断信息。
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。

以下选项是在指定了-R选项时被用于设置如何穿越目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。

1
2
3
4
5
-H:如果命令行参数是一个通到目录的符号链接,则遍历符号链接。
-L:遍历每一个遇到的通到目录的符号链接。
-P:不遍历任何符号链接(默认)。
--help:显示此帮助信息并退出。
--version:显示版本信息并退出。

实例

如果你想把这个ftp共享给匿名用户的话,需要开启以下:

1
chcon -R -t public_content_t /var/ftp

如果你想让你设置的FTP目录可以上传文件的话,SELINUX需要设置:

1
chcon -t public_content_rw_t /var/ftp/incoming

允许用户HHTP访问其家目录,该设定限仅于用户的家目录主页:

1
2
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user/public_html

如果你希望将samba目录共享给其他用户,你需要设置:

1
chcon -t samba_share_t /directory

共享rsync目录时:

1
chcon -t public_content_t /directories

chattr

用来改变文件属性

补充说明

chattr命令 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

1
2
3
4
5
6
7
8
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。

语法

1
chattr(选项)

选项

1
2
3
4
5
6
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。

实例

用chattr命令防止系统中某个关键文件被修改:

1
chattr +i /etc/fstab

然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。

让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:

1
chattr +a /data1/user_act.log

chage

修改帐号和密码的有效期限

补充说明

chage命令 是用来修改帐号和密码的有效期限。

语法

1
chage [选项] 用户名

选项

1
2
3
4
5
6
7
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

实例

可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

1
2
3
4
PASS_MAX_DAYS   99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

当然在/etc/default/useradd可以找到如下2个参数进行设置:

1
2
3
4
5
6
7
8
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

我的服务器root帐户密码策略信息如下:

1
2
3
4
5
6
7
8
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

我可以通过如下命令修改我的密码过期时间:

1
2
3
4
5
6
7
8
9
[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 : 5月 11, 2013
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9

然后通过如下命令设置密码失效时间:

1
2
3
4
5
6
7
8
9
[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2013
密码过期时间 : 5月 11, 2013
密码失效时间 : 5月 16, 2013
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9

从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

cdrecord

Linux系统下光盘刻录功能命令

补充说明

cdrecord命令 用于Linux系统下光盘刻录,它支持cd和DVD格式。linux下一般都带有cdrecord软件。

语法

1
cdrecord(选项)(参数)

选项

1
2
3
4
5
-v:显示刻录光盘的详细过程;
-eject:刻录完成后弹出光盘;
speed=<刻录倍速>:指定光盘刻录的倍速;
dev=<刻录机设备号>:指定使用“-scanbus”参数扫描到的刻录机的设备号;
-scanbus:扫描系统中可用的刻录机。

参数

ISO文件:指定刻录光盘使用的ISO映像文件。

实例

查看系统所有 CD-R(w) 设备:

1
2
3
4
5
6
cdrecord -scanbus
scsibus0:
0,0,0 0) *
0,1,0 1) *
0,2,0 2) *
0,3,0 3) 'HP ' 'CD-Writer+ 9200 ' '1.0c' Removable CD-ROM

用iso文件刻录一张光盘:

1
cdrecord -v -eject speed=4 dev=0,3,0 backup.iso

参数解释

  • -v:显示刻录光盘的详细过程
  • -eject:刻完自动弹出光盘
  • speed=4 dev=0,3,0:四速刻录到HP CD-writer设备上。

擦写光驱:

1
cdrecord --dev=0,3,0 --blank=fast

cd

切换用户当前工作目录

补充说明

cd命令 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。

语法

1
cd (选项) (参数)

选项

1
2
3
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。

实例

1
2
3
4
5
6
cd    进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。