$ ls -l total 0 -rw-rw-r-- 1 user user 0 2013-01-30 12:20 File lrwxrwxrwx 1 user user 4 2013-01-30 12:20 SymLink -> Fileという状態の時に Symlink に対して chown すると
$ sudo chown root:root SymLink $ ls -l total 0 -rw-rw-r-- 1 root root 0 2013-01-30 12:20 File lrwxrwxrwx 1 user user 4 2013-01-30 12:20 SymLink -> Fileシンボリックリンクの参照先の File が chown されます。
man chown で見ると
$ man chown ... snip ... -h, --no-dereference affect each symbolic link instead of any referenced file (useful only on systems that can change the ownership of a symlink) ... snip ...とあるので --no-dereference を付けるとシンボリックリンク自体が chown されるようです。
$ ls -l total 0 -rw-rw-r-- 1 user user 0 2013-01-30 12:20 File lrwxrwxrwx 1 user user 4 2013-01-30 12:20 SymLink -> File $ sudo chown --no-dereference root:root SymLink $ ls -l total 0 -rw-rw-r-- 1 user user 0 2013-01-30 12:20 File lrwxrwxrwx 1 root root 4 2013-01-30 12:20 SymLink -> Fileシンボリックリンク自体が chown されました。
Python だと
os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)で follow_symlinks を False にすれば良さそうなのですが Python 3.2 以前では follow_symlinks 使えないようです。 subprocess で chown コマンドを呼ぶしかないか。。。
0 件のコメント:
コメントを投稿