>假设我锁定了一个由RCS控制的文件
[root@host1:/etc/yp]# co -l group auto_home
RCS/group,v --> group
revision 1.6103 (locked)
done
RCS/auto_home,v --> auto_home
revision 1.4003 (locked)
done
[root@host1:/etc/yp]#
我看到RCS目录中生成的带有",v"的文件
[root@host1:/etc/yp/RCS]# ls -lrth | tail -3
-r--r--r-- 1 root other 16M Feb 20 12:20 passwd,v
-r--r--r-- 1 root other 3.5M Feb 21 23:03 group,v
-r--r--r-- 1 root other 4.1M Feb 21 23:03 auto_home,v
[root@host1:/etc/yp/RCS]#
我们可以确定谁在持有锁定文件吗?所有管理员都使用"root"登录名进行更改(通过sudo -s成为root)
如果有人已经锁定,我会看到以下消息
[root@campyp:/etc/yp]# co -l group
RCS/group,v --> group
revision 1.6103 (locked)
writable group exists; remove it? [ny](n): ^C
RCS: Interrupt
RCS: Cleaning up.
[root@campyp:/etc/yp]#
我们可以检查谁锁定了文件吗?
在 RCS 中,锁存储在存档文件的标头中。 下面是一个示例标头来说明:
head 1.1;
access
thomas;
symbols;
locks
thomas:1.1; strict;
comment @# @;
1.1
date 2014.08.14.00.40.55; author thomas; state Exp;
branches;
next ;
desc
@@
rlog
命令提供该标头信息:
$ rlog 2linux,v
RCS file: 2linux,v
Working file: 2linux
head: 1.1
branch:
locks: strict
thomas: 1.1
access list:
thomas
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1.1 locked by: thomas;
date: 2014/08/14 00:40:55; author: thomas; state: Exp;
RCS_BASE
=============================================================================
默认情况下,锁的作者是通过检查环境变量 LOGNAME
和 USER
来确定的。 这些是在用户sudo
时设置的,例如,"root"。 但可以覆盖该行为:
sudo
时,原始$USER
保存在SUDO_USER
中。 可以从$SUDO_USER
重置$LOGNAME
和$USER
,使锁对应于真实用户。- RCS 被记录为支持对 root 拥有的文件进行 setuid 操作。 您可以使用它,而不是让您的用户
sudo
.
延伸阅读:
- 罗格(1)
- RCS文件(5)
- CI(1) (见对 setuid 的讨论)
No.如果您的所有用户都root
,则锁将始终属于 root
。
无论如何,这充其量是一个可疑的安排。让用户以自己的身份提交编辑;首先不应该有理智的理由来做这些事情root
。