まず、vim
バイナリランチャーを書くことはお勧めできません。だから私はここでその妥当性について話したくありません。
権限が755(所有者はroot)のバイナリプログラムがあるので、ユーザーとしてroot
このプログラムに書き込むことができることを願っています。コマンドを使用してプログラムが実行されず、lsof
出力fuser
は返されません。次のように開いてから書き込み専用と終了をvi
入力すると、警告が表示されます。問題は、誰がオプションを設定したのかということです。 Linuxカーネル?:wq
vi
E45: 'readonly' option is set (add ! to override)
readonly
その後、1つを追加すると、プログラムが期待どおりに実行されなくなります!
。:wq!
そして、同じOSとカーネルバージョンを使用する別のコンピュータで同じ権限を持つ同じファイル。今回は を使って書くことができます:wq
。md5sum
システムはRHEL 6.4です。vi
実際にはvim
。
編集:@ctrl-alt-delorが提案したように、いくつかのコマンド出力を追加しました。
[root@localhost x]# uname -r
2.6.32-431.29.2.2.ky3.1.x86_64
[root@localhost x]# whoami
root
[root@localhost x]# lsof XXX
[root@localhost x]# fuser XXX
[root@localhost x]# ls -l XXX
-rwxr-xr-x. 1 root root 5178556 Apr 19 13:27 XXX
[root@localhost x]# ls -la
total 5080
drwxr-xr-x. 5 root root 4096 Apr 21 19:23 .
drwxr-xr-x. 10 root root 4096 May 18 2018 ..
-rwxr-xr-x. 1 root root 5178556 Apr 19 13:27 XXX
drwxr-xr-x. 5 root root 4096 Apr 18 17:24 blabla
drwxr-xr-x. 2 root root 4096 Apr 15 18:59 blabla2
drwxr-xr-x. 8 root root 4096 Apr 22 10:36 blabla3
編集:@Wildcardのコメントに基づいています。
[root@localhost x]# getfacl XXX
# file: XXX
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@localhost x]# lsattr XXX
-------------e- XXX
編集:SELINUX情報の追加
[root@localhost x]# getenforce
Permissive
[root@localhost x]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@localhost x]# ls -Z XXX
-rwxr-xr-x. root root unconfined_u:object_r:usr_t:s0 XXX
答え1
報酬は@Murray Jensenに渡されるべきです。
簡単に言えば、答えは~/.vimrc
変化を生み出すことです。
保存できないコンピュータから:wq
:
[root@localhost x]# cat ~/.vimrc
set fileencodings=utf-8,gb18030,ucs-bom,cp936
vim
UTF-8を検証し、無効なバイトが見つかった場合、このreadonly
オプションが設定されます。readonly
バイナリモードではこのオプションは設定されません。
この行にコメントを付けたら、ファイルを保存できます:wq
。