用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
code_new
帖子: 62
注册时间: 2013-12-31 10:56
系统: Debian

用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#1

帖子 code_new » 2014-02-21 11:51

-rw-r--r-- 1 root root 1874 Feb 21 11:41 ex2.c
这是原来文件属性.
然后我vi ex2.c, 它提示文件为readonly. 然后我用w!强行修改成功
之后文件的属性就变成了:
-rw-r--r-- 1 codenew codenew 1871 Feb 21 11:44 ex2.c
所有者和所属组都诶修改了, 请问这是怎么回事? 怎么保证只有root权限才能对文件进行修改?
谢谢!
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#2

帖子 poloshiao » 2014-02-21 12:39

怎么保证只有root权限才能对文件进行修改?
sudo vi ex2.c
头像
code_new
帖子: 62
注册时间: 2013-12-31 10:56
系统: Debian

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#3

帖子 code_new » 2014-02-21 13:01

poloshiao 写了:
怎么保证只有root权限才能对文件进行修改?
sudo vi ex2.c
问题是现在普通用户也能对root权限的文件进行修改
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#4

帖子 poloshiao » 2014-02-21 13:09

-rw-r--r-- 1 codenew codenew 1871 Feb 21 11:44 ex2.c
你是說這個 ex2.c ?
sudo chown root:root ./ex2.c
就可以了
头像
code_new
帖子: 62
注册时间: 2013-12-31 10:56
系统: Debian

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#5

帖子 code_new » 2014-02-21 17:56

poloshiao 写了: 你是說這個 ex2.c ?
sudo chown root:root ./ex2.c
就可以了
呃.. 我的问题可能不够清楚..
有两个问题:
1. 所有者明明是root的文件, 为什么非root权限的用户可以进行修改, 然后所有主会变成修改的用户
2. 怎样设置可以无法让其他用户修改文件
上次由 code_new 在 2014-02-21 18:39,总共编辑 1 次。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#6

帖子 poloshiao » 2014-02-21 18:20

无法让其他用户修改权限
其它用戶 (指 root 以外的用戶)
一般分爲
能夠使用 sudo 的用戶 (或稱 sudoer)
不能使用 sudo 的用戶 (或稱 一般用戶)
你是指哪一種用户 ?

在 #1 的例子
codenew 應該是可以使用 sudoer (可以使用 sudo)
而且需要輸入 密碼 才可以儲存 對嗎 ?
如果是
表示 codenew 並非 不能使用 sudo 的用戶 (或稱 一般用戶)

參閱
http://www.geekyboy.com/archives/629
头像
code_new
帖子: 62
注册时间: 2013-12-31 10:56
系统: Debian

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#7

帖子 code_new » 2014-02-21 18:54

poloshiao 写了:无法让其他用户修改权限
不好意思, 第二个问题打错了, 应该是“无法让用户修改文件“.
codenew确实是sudoer中的用户, 但是可以对所有者为root的文件进行修改, 是不是因为文件存放目录导致的.
比如我现在ex2.c存放目录为/home/codenew/Document/, 而我却无法对/etc/apt/sources.list的文件进行修改.
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#8

帖子 poloshiao » 2014-02-21 19:21

codenew确实是sudoer中的用户, 但是可以对所有者为root的文件进行修改, 是不是因为文件存放目录导致的.
root 是 最高權限的使用着
sudoer 可以 借用 root 權限 所以幾乎可以執行 任何需要 root 權限的指令
(實際上 還有很小的一部分 root 擁有的權限 但是 sudoer 沒有 在此不詳細討論)

爲了安全起見 Ubuntu 預設是 關閉 root 登入的選項 (也就是說 root 不能登入)
想要執行 root 的權限 就是需要使用 sudoer 帳號登入 下指令時 增加 sudo 在指令前面
一般安裝 Ubuntu 時創設的第一個帳號 預設就是 sudoer

除了這個 預設的 sudoer 以外 可以額外增加 不能使用 sudo 的用戶 (或稱 一般用戶)
這些一般用戶才是你說的 不能使用 root 權限的 帳號

如果你希望給這些不能使用 sudo 的一般用戶 可以使用 sudo 的權限
方法之一 就是把他加入 sudo 羣組 他就可以使用 sudo
請小心使用
是不是因为文件存放目录导致的.
不是 存放目录导致
而是 存放目录 的權限 設定導致
差別 權限是可以修改的
目錄/文件 權限 參閱
http://vbird.dic.ksu.edu.tw/linux_basic ... permission
比如我现在ex2.c存放目录为/home/codenew/Document/, 而我却无法对/etc/apt/sources.list的文件进行修改.
可以比對下面的 權限設定

1. /home/codenew/Document/
sudo ls -al / | grep home
sudo ls -al /home | grep codenew
sudo ls -al /home/codenew | grep
sudo ls -al /home/codenew/Document
2. /etc/apt/sources.list
sudo ls -al / | grep etc
sudo ls -al /etc | grep apt
sudo ls -al /etc/apt/sources.list
3. 比較一下 權限設定 你就應該知道
爲何 codenew 修改
/home/codenew/Document/ 裏面的文件 不需要 加 sudo
/etc/apt/sources.list 需要 加 sudo
4. 這個權限設定可以使用 chown 及 chmod 變更的
上次由 poloshiao 在 2014-02-21 20:09,总共编辑 1 次。
头像
code_new
帖子: 62
注册时间: 2013-12-31 10:56
系统: Debian

Re: 用vi强行修改owner为root的文件后会自动修改文件的所属组和所有者

#9

帖子 code_new » 2014-02-21 19:42

poloshiao 写了: 不是 存放目录导致
而是 存放目录 的權限 設定導致
差別 權限是可以修改的
到这里就明白了, 非常感谢
回复